From f6031244c54e3e6e25db37497c2e3e6a414d1349 Mon Sep 17 00:00:00 2001 From: sudo-CuriousLad Date: Sat, 13 Aug 2022 22:32:39 +0530 Subject: [PATCH 0001/1051] Fixed something else I fucked up again, this is a mess --- .../resources/assets/spectrum/lang/en_us.json | 192 +++++++++--------- 1 file changed, 96 insertions(+), 96 deletions(-) diff --git a/src/main/resources/assets/spectrum/lang/en_us.json b/src/main/resources/assets/spectrum/lang/en_us.json index 18291c0017..dbef000ecf 100644 --- a/src/main/resources/assets/spectrum/lang/en_us.json +++ b/src/main/resources/assets/spectrum/lang/en_us.json @@ -751,132 +751,132 @@ "block.spectrum.yellow_lamp": "Yellow Lamp", "block.spectrum.black_planks": "Black Planks", - "block.spectrum.black_plank_button": "Black Plank Button", - "block.spectrum.black_plank_fence": "Black Plank Fence", - "block.spectrum.black_plank_pressure_plate": "Black Plank Pressure Plate", - "block.spectrum.black_plank_stairs": "Black Plank Stairs", - "block.spectrum.black_plank_slab": "Black Plank Slab", - "block.spectrum.black_plank_fence_gate": "Black Plank Fence Gate", + "block.spectrum.black_plank_button": "Black Button", + "block.spectrum.black_plank_fence": "Black Fence", + "block.spectrum.black_plank_pressure_plate": "Black Pressure Plate", + "block.spectrum.black_plank_stairs": "Black Stairs", + "block.spectrum.black_plank_slab": "Black Slab", + "block.spectrum.black_plank_fence_gate": "Black Fence Gate", "block.spectrum.blue_planks": "Blue Planks", - "block.spectrum.blue_plank_button": "Blue Plank Button", - "block.spectrum.blue_plank_fence": "Blue Plank Fence", - "block.spectrum.blue_plank_pressure_plate": "Blue Plank Pressure Plate", - "block.spectrum.blue_plank_stairs": "Blue Plank Stairs", - "block.spectrum.blue_plank_slab": "Blue Plank Slab", - "block.spectrum.blue_plank_fence_gate": "Blue Plank Fence Gate", + "block.spectrum.blue_plank_button": "Blue Button", + "block.spectrum.blue_plank_fence": "Blue Fence", + "block.spectrum.blue_plank_pressure_plate": "Blue Pressure Plate", + "block.spectrum.blue_plank_stairs": "Blue Stairs", + "block.spectrum.blue_plank_slab": "Blue Slab", + "block.spectrum.blue_plank_fence_gate": "Blue Fence Gate", "block.spectrum.brown_planks": "Brown Planks", - "block.spectrum.brown_plank_button": "Brown Plank Button", - "block.spectrum.brown_plank_fence": "Brown Plank Fence", - "block.spectrum.brown_plank_pressure_plate": "Brown Plank Pressure Plate", - "block.spectrum.brown_plank_stairs": "Brown Plank Stairs", - "block.spectrum.brown_plank_slab": "Brown Plank Slab", - "block.spectrum.brown_plank_fence_gate": "Brown Plank Fence Gate", + "block.spectrum.brown_plank_button": "Brown Button", + "block.spectrum.brown_plank_fence": "Brown Fence", + "block.spectrum.brown_plank_pressure_plate": "Brown Pressure Plate", + "block.spectrum.brown_plank_stairs": "Brown Stairs", + "block.spectrum.brown_plank_slab": "Brown Slab", + "block.spectrum.brown_plank_fence_gate": "Brown Fence Gate", "block.spectrum.cyan_planks": "Cyan Planks", - "block.spectrum.cyan_plank_button": "Cyan Plank Button", - "block.spectrum.cyan_plank_fence": "Cyan Plank Fence", - "block.spectrum.cyan_plank_pressure_plate": "Cyan Plank Pressure Plate", - "block.spectrum.cyan_plank_stairs": "Cyan Plank Stairs", - "block.spectrum.cyan_plank_slab": "Cyan Plank Slab", - "block.spectrum.cyan_plank_fence_gate": "Cyan Plank Fence Gate", + "block.spectrum.cyan_plank_button": "Cyan Button", + "block.spectrum.cyan_plank_fence": "Cyan Fence", + "block.spectrum.cyan_plank_pressure_plate": "Cyan Pressure Plate", + "block.spectrum.cyan_plank_stairs": "Cyan Stairs", + "block.spectrum.cyan_plank_slab": "Cyan Slab", + "block.spectrum.cyan_plank_fence_gate": "Cyan Fence Gate", "block.spectrum.gray_planks": "Gray Planks", - "block.spectrum.gray_plank_button": "Gray Plank Button", - "block.spectrum.gray_plank_fence": "Gray Plank Fence", - "block.spectrum.gray_plank_pressure_plate": "Gray Plank Pressure Plate", - "block.spectrum.gray_plank_stairs": "Gray Plank Stairs", - "block.spectrum.gray_plank_slab": "Gray Plank Slab", - "block.spectrum.gray_plank_fence_gate": "Gray Plank Fence Gate", + "block.spectrum.gray_plank_button": "Gray Button", + "block.spectrum.gray_plank_fence": "Gray Fence", + "block.spectrum.gray_plank_pressure_plate": "Gray Pressure Plate", + "block.spectrum.gray_plank_stairs": "Gray Stairs", + "block.spectrum.gray_plank_slab": "Gray Slab", + "block.spectrum.gray_plank_fence_gate": "Gray Fence Gate", "block.spectrum.green_planks": "Green Planks", - "block.spectrum.green_plank_button": "Green Plank Button", - "block.spectrum.green_plank_fence": "Green Plank Fence", - "block.spectrum.green_plank_pressure_plate": "Green Plank Pressure Plate", - "block.spectrum.green_plank_stairs": "Green Plank Stairs", - "block.spectrum.green_plank_slab": "Green Plank Slab", - "block.spectrum.green_plank_fence_gate": "Green Plank Fence Gate", + "block.spectrum.green_plank_button": "Green Button", + "block.spectrum.green_plank_fence": "Green Fence", + "block.spectrum.green_plank_pressure_plate": "Green Pressure Plate", + "block.spectrum.green_plank_stairs": "Green Stairs", + "block.spectrum.green_plank_slab": "Green Slab", + "block.spectrum.green_plank_fence_gate": "Green Fence Gate", "block.spectrum.light_blue_planks": "Light Blue Planks", - "block.spectrum.light_blue_plank_button": "Light Blue Plank Button", - "block.spectrum.light_blue_plank_fence": "Light Blue Plank Fence", - "block.spectrum.light_blue_plank_pressure_plate": "Light Blue Plank Pressure Plate", - "block.spectrum.light_blue_plank_stairs": "Light Blue Plank Stairs", - "block.spectrum.light_blue_plank_slab": "Light Blue Plank Slab", - "block.spectrum.light_blue_plank_fence_gate": "Light Blue Plank Fence Gate", + "block.spectrum.light_blue_plank_button": "Light Blue Button", + "block.spectrum.light_blue_plank_fence": "Light Blue Fence", + "block.spectrum.light_blue_plank_pressure_plate": "Light Blue Pressure Plate", + "block.spectrum.light_blue_plank_stairs": "Light Blue Stairs", + "block.spectrum.light_blue_plank_slab": "Light Blue Slab", + "block.spectrum.light_blue_plank_fence_gate": "Light Blue Fence Gate", "block.spectrum.light_gray_planks": "Light Gray Planks", - "block.spectrum.light_gray_plank_button": "Light Gray Plank Button", - "block.spectrum.light_gray_plank_fence": "Light Gray Plank Fence", - "block.spectrum.light_gray_plank_pressure_plate": "Light Gray Plank Pressure Plate", - "block.spectrum.light_gray_plank_stairs": "Light Gray Plank Stairs", - "block.spectrum.light_gray_plank_slab": "Light Gray Plank Slab", - "block.spectrum.light_gray_plank_fence_gate": "Light Gray Plank Fence Gate", + "block.spectrum.light_gray_plank_button": "Light Gray Button", + "block.spectrum.light_gray_plank_fence": "Light Gray Fence", + "block.spectrum.light_gray_plank_pressure_plate": "Light Gray Pressure Plate", + "block.spectrum.light_gray_plank_stairs": "Light Gray Stairs", + "block.spectrum.light_gray_plank_slab": "Light Gray Slab", + "block.spectrum.light_gray_plank_fence_gate": "Light Gray Fence Gate", "block.spectrum.lime_planks": "Lime Planks", - "block.spectrum.lime_plank_button": "Lime Plank Button", - "block.spectrum.lime_plank_fence": "Lime Plank Fence", - "block.spectrum.lime_plank_pressure_plate": "Lime Plank Pressure Plate", - "block.spectrum.lime_plank_stairs": "Lime Plank Stairs", - "block.spectrum.lime_plank_slab": "Lime Plank Slab", - "block.spectrum.lime_plank_fence_gate": "Lime Plank Fence Gate", + "block.spectrum.lime_plank_button": "Lime Button", + "block.spectrum.lime_plank_fence": "Lime Fence", + "block.spectrum.lime_plank_pressure_plate": "Lime Pressure Plate", + "block.spectrum.lime_plank_stairs": "Lime Stairs", + "block.spectrum.lime_plank_slab": "Lime Slab", + "block.spectrum.lime_plank_fence_gate": "Lime Fence Gate", "block.spectrum.magenta_planks": "Magenta Planks", - "block.spectrum.magenta_plank_button": "Magenta Plank Button", - "block.spectrum.magenta_plank_fence": "Magenta Plank Fence", - "block.spectrum.magenta_plank_pressure_plate": "Magenta Plank Pressure Plate", - "block.spectrum.magenta_plank_stairs": "Magenta Plank Stairs", - "block.spectrum.magenta_plank_slab": "Magenta Plank Slab", - "block.spectrum.magenta_plank_fence_gate": "Magenta Plank Fence Gate", + "block.spectrum.magenta_plank_button": "Magenta Button", + "block.spectrum.magenta_plank_fence": "Magenta Fence", + "block.spectrum.magenta_plank_pressure_plate": "Magenta Pressure Plate", + "block.spectrum.magenta_plank_stairs": "Magenta Stairs", + "block.spectrum.magenta_plank_slab": "Magenta Slab", + "block.spectrum.magenta_plank_fence_gate": "Magenta Fence Gate", "block.spectrum.orange_planks": "Orange Planks", - "block.spectrum.orange_plank_button": "Orange Plank Button", - "block.spectrum.orange_plank_fence": "Orange Plank Fence", - "block.spectrum.orange_plank_pressure_plate": "Orange Plank Pressure Plate", - "block.spectrum.orange_plank_stairs": "Orange Plank Stairs", - "block.spectrum.orange_plank_slab": "Orange Plank Slab", - "block.spectrum.orange_plank_fence_gate": "Orange Plank Fence Gate", + "block.spectrum.orange_plank_button": "Orange Button", + "block.spectrum.orange_plank_fence": "Orange Fence", + "block.spectrum.orange_plank_pressure_plate": "Orange Pressure Plate", + "block.spectrum.orange_plank_stairs": "Orange Stairs", + "block.spectrum.orange_plank_slab": "Orange Slab", + "block.spectrum.orange_plank_fence_gate": "Orange Fence Gate", "block.spectrum.pink_planks": "Pink Planks", - "block.spectrum.pink_plank_button": "Pink Plank Button", - "block.spectrum.pink_plank_fence": "Pink Plank Fence", - "block.spectrum.pink_plank_pressure_plate": "Pink Plank Pressure Plate", - "block.spectrum.pink_plank_stairs": "Pink Plank Stairs", - "block.spectrum.pink_plank_slab": "Pink Plank Slab", - "block.spectrum.pink_plank_fence_gate": "Pink Plank Fence Gate", + "block.spectrum.pink_plank_button": "Pink Button", + "block.spectrum.pink_plank_fence": "Pink Fence", + "block.spectrum.pink_plank_pressure_plate": "Pink Pressure Plate", + "block.spectrum.pink_plank_stairs": "Pink Stairs", + "block.spectrum.pink_plank_slab": "Pink Slab", + "block.spectrum.pink_plank_fence_gate": "Pink Fence Gate", "block.spectrum.purple_planks": "Purple Planks", - "block.spectrum.purple_plank_button": "Purple Plank Button", - "block.spectrum.purple_plank_fence": "Purple Plank Fence", - "block.spectrum.purple_plank_pressure_plate": "Purple Plank Pressure Plate", - "block.spectrum.purple_plank_stairs": "Purple Plank Stairs", - "block.spectrum.purple_plank_slab": "Purple Plank Slab", - "block.spectrum.purple_plank_fence_gate": "Purple Plank Fence Gate", + "block.spectrum.purple_plank_button": "Purple Button", + "block.spectrum.purple_plank_fence": "Purple Fence", + "block.spectrum.purple_plank_pressure_plate": "Purple Pressure Plate", + "block.spectrum.purple_plank_stairs": "Purple Stairs", + "block.spectrum.purple_plank_slab": "Purple Slab", + "block.spectrum.purple_plank_fence_gate": "Purple Fence Gate", "block.spectrum.red_planks": "Red Planks", - "block.spectrum.red_plank_button": "Red Plank Button", - "block.spectrum.red_plank_fence": "Red Plank Fence", - "block.spectrum.red_plank_pressure_plate": "Red Plank Pressure Plate", - "block.spectrum.red_plank_stairs": "Red Plank Stairs", - "block.spectrum.red_plank_slab": "Red Plank Slab", - "block.spectrum.red_plank_fence_gate": "Red Plank Fence Gate", + "block.spectrum.red_plank_button": "Red Button", + "block.spectrum.red_plank_fence": "Red Fence", + "block.spectrum.red_plank_pressure_plate": "Red Pressure Plate", + "block.spectrum.red_plank_stairs": "Red Stairs", + "block.spectrum.red_plank_slab": "Red Slab", + "block.spectrum.red_plank_fence_gate": "Red Fence Gate", "block.spectrum.white_planks": "White Planks", - "block.spectrum.white_plank_button": "White Plank Button", - "block.spectrum.white_plank_fence": "White Plank Fence", - "block.spectrum.white_plank_pressure_plate": "White Plank Pressure Plate", - "block.spectrum.white_plank_stairs": "White Plank Stairs", - "block.spectrum.white_plank_slab": "White Plank Slab", - "block.spectrum.white_plank_fence_gate": "White Plank Fence Gate", + "block.spectrum.white_plank_button": "White Button", + "block.spectrum.white_plank_fence": "White Fence", + "block.spectrum.white_plank_pressure_plate": "White Pressure Plate", + "block.spectrum.white_plank_stairs": "White Stairs", + "block.spectrum.white_plank_slab": "White Slab", + "block.spectrum.white_plank_fence_gate": "White Fence Gate", "block.spectrum.yellow_planks": "Yellow Planks", - "block.spectrum.yellow_plank_button": "Yellow Plank Button", - "block.spectrum.yellow_plank_fence": "Yellow Plank Fence", - "block.spectrum.yellow_plank_pressure_plate": "Yellow Plank Pressure Plate", - "block.spectrum.yellow_plank_stairs": "Yellow Plank Stairs", - "block.spectrum.yellow_plank_slab": "Yellow Plank Slab", - "block.spectrum.yellow_plank_fence_gate": "Yellow Plank Fence Gate", + "block.spectrum.yellow_plank_button": "Yellow Button", + "block.spectrum.yellow_plank_fence": "Yellow Fence", + "block.spectrum.yellow_plank_pressure_plate": "Yellow Pressure Plate", + "block.spectrum.yellow_plank_stairs": "Yellow Stairs", + "block.spectrum.yellow_plank_slab": "Yellow Slab", + "block.spectrum.yellow_plank_fence_gate": "Yellow Fence Gate", "item.spectrum.mud_bucket": "Bucket of Mud", "block.spectrum.mud": "Mud", From 144de41e52116e99b50965db9b9a65046d013bed Mon Sep 17 00:00:00 2001 From: sudo-CuriousLad Date: Sat, 13 Aug 2022 23:57:23 +0530 Subject: [PATCH 0002/1051] Fixed find-replace mess-up I seem to mess up very much, too fucking much I'd say --- .../resources/assets/spectrum/lang/en_us.json | 206 +++++++++--------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/src/main/resources/assets/spectrum/lang/en_us.json b/src/main/resources/assets/spectrum/lang/en_us.json index dbef000ecf..f7a1606f7f 100644 --- a/src/main/resources/assets/spectrum/lang/en_us.json +++ b/src/main/resources/assets/spectrum/lang/en_us.json @@ -587,7 +587,7 @@ "block.spectrum.entity_detector": "Creature Detector", "block.spectrum.block_placer": "Block Placer", "block.spectrum.redstone_wireless": "Wireless Redstone", - + "block.spectrum.redstone_calculator": "Redstone Calculator", "block.spectrum.redstone_calculator.mode_set": "Set to mode: ", "block.spectrum.redstone_calculator.mode.addition": "Addition", @@ -597,7 +597,7 @@ "block.spectrum.redstone_calculator.mode.modulo": "Modulo", "block.spectrum.redstone_calculator.mode.min": "Minimum", "block.spectrum.redstone_calculator.mode.max": "Maximum", - + "block.spectrum.redstone_timer": "Redstone Timer", "block.spectrum.redstone_timer.setting.active": "Active time set to: ", "block.spectrum.redstone_timer.setting.inactive": "Inactive time set to: ", @@ -606,7 +606,7 @@ "block.spectrum.redstone_timer.setting.one_minute": "1 minute", "block.spectrum.redstone_timer.setting.ten_minutes": "10 minutes", "block.spectrum.redstone_timer.setting.one_hour": "1 hour", - + "block.spectrum.cyan_spirit_sallow_vines_head": "Cyan Spirit Sallow Vines", "block.spectrum.magenta_spirit_sallow_vines_head": "Magenta Spirit Sallow Vines", "block.spectrum.yellow_spirit_sallow_vines_head": "Yellow Spirit Sallow Vines", @@ -751,137 +751,137 @@ "block.spectrum.yellow_lamp": "Yellow Lamp", "block.spectrum.black_planks": "Black Planks", - "block.spectrum.black_plank_button": "Black Button", - "block.spectrum.black_plank_fence": "Black Fence", - "block.spectrum.black_plank_pressure_plate": "Black Pressure Plate", - "block.spectrum.black_plank_stairs": "Black Stairs", - "block.spectrum.black_plank_slab": "Black Slab", - "block.spectrum.black_plank_fence_gate": "Black Fence Gate", + "block.spectrum.black_plank_button": "Black Button", + "block.spectrum.black_plank_fence": "Black Fence", + "block.spectrum.black_plank_pressure_plate": "Black Pressure Plate", + "block.spectrum.black_plank_stairs": "Black Stairs", + "block.spectrum.black_plank_slab": "Black Slab", + "block.spectrum.black_plank_fence_gate": "Black Fence Gate", "block.spectrum.blue_planks": "Blue Planks", - "block.spectrum.blue_plank_button": "Blue Button", - "block.spectrum.blue_plank_fence": "Blue Fence", - "block.spectrum.blue_plank_pressure_plate": "Blue Pressure Plate", - "block.spectrum.blue_plank_stairs": "Blue Stairs", - "block.spectrum.blue_plank_slab": "Blue Slab", - "block.spectrum.blue_plank_fence_gate": "Blue Fence Gate", + "block.spectrum.blue_plank_button": "Blue Button", + "block.spectrum.blue_plank_fence": "Blue Fence", + "block.spectrum.blue_plank_pressure_plate": "Blue Pressure Plate", + "block.spectrum.blue_plank_stairs": "Blue Stairs", + "block.spectrum.blue_plank_slab": "Blue Slab", + "block.spectrum.blue_plank_fence_gate": "Blue Fence Gate", "block.spectrum.brown_planks": "Brown Planks", - "block.spectrum.brown_plank_button": "Brown Button", - "block.spectrum.brown_plank_fence": "Brown Fence", - "block.spectrum.brown_plank_pressure_plate": "Brown Pressure Plate", - "block.spectrum.brown_plank_stairs": "Brown Stairs", - "block.spectrum.brown_plank_slab": "Brown Slab", - "block.spectrum.brown_plank_fence_gate": "Brown Fence Gate", + "block.spectrum.brown_plank_button": "Brown Button", + "block.spectrum.brown_plank_fence": "Brown Fence", + "block.spectrum.brown_plank_pressure_plate": "Brown Pressure Plate", + "block.spectrum.brown_plank_stairs": "Brown Stairs", + "block.spectrum.brown_plank_slab": "Brown Slab", + "block.spectrum.brown_plank_fence_gate": "Brown Fence Gate", "block.spectrum.cyan_planks": "Cyan Planks", - "block.spectrum.cyan_plank_button": "Cyan Button", - "block.spectrum.cyan_plank_fence": "Cyan Fence", - "block.spectrum.cyan_plank_pressure_plate": "Cyan Pressure Plate", - "block.spectrum.cyan_plank_stairs": "Cyan Stairs", - "block.spectrum.cyan_plank_slab": "Cyan Slab", - "block.spectrum.cyan_plank_fence_gate": "Cyan Fence Gate", + "block.spectrum.cyan_plank_button": "Cyan Button", + "block.spectrum.cyan_plank_fence": "Cyan Fence", + "block.spectrum.cyan_plank_pressure_plate": "Cyan Pressure Plate", + "block.spectrum.cyan_plank_stairs": "Cyan Stairs", + "block.spectrum.cyan_plank_slab": "Cyan Slab", + "block.spectrum.cyan_plank_fence_gate": "Cyan Fence Gate", "block.spectrum.gray_planks": "Gray Planks", - "block.spectrum.gray_plank_button": "Gray Button", - "block.spectrum.gray_plank_fence": "Gray Fence", - "block.spectrum.gray_plank_pressure_plate": "Gray Pressure Plate", - "block.spectrum.gray_plank_stairs": "Gray Stairs", - "block.spectrum.gray_plank_slab": "Gray Slab", - "block.spectrum.gray_plank_fence_gate": "Gray Fence Gate", + "block.spectrum.gray_plank_button": "Gray Button", + "block.spectrum.gray_plank_fence": "Gray Fence", + "block.spectrum.gray_plank_pressure_plate": "Gray Pressure Plate", + "block.spectrum.gray_plank_stairs": "Gray Stairs", + "block.spectrum.gray_plank_slab": "Gray Slab", + "block.spectrum.gray_plank_fence_gate": "Gray Fence Gate", "block.spectrum.green_planks": "Green Planks", - "block.spectrum.green_plank_button": "Green Button", - "block.spectrum.green_plank_fence": "Green Fence", - "block.spectrum.green_plank_pressure_plate": "Green Pressure Plate", - "block.spectrum.green_plank_stairs": "Green Stairs", - "block.spectrum.green_plank_slab": "Green Slab", - "block.spectrum.green_plank_fence_gate": "Green Fence Gate", + "block.spectrum.green_plank_button": "Green Button", + "block.spectrum.green_plank_fence": "Green Fence", + "block.spectrum.green_plank_pressure_plate": "Green Pressure Plate", + "block.spectrum.green_plank_stairs": "Green Stairs", + "block.spectrum.green_plank_slab": "Green Slab", + "block.spectrum.green_plank_fence_gate": "Green Fence Gate", "block.spectrum.light_blue_planks": "Light Blue Planks", - "block.spectrum.light_blue_plank_button": "Light Blue Button", - "block.spectrum.light_blue_plank_fence": "Light Blue Fence", - "block.spectrum.light_blue_plank_pressure_plate": "Light Blue Pressure Plate", - "block.spectrum.light_blue_plank_stairs": "Light Blue Stairs", - "block.spectrum.light_blue_plank_slab": "Light Blue Slab", - "block.spectrum.light_blue_plank_fence_gate": "Light Blue Fence Gate", + "block.spectrum.light_blue_plank_button": "Light Blue Button", + "block.spectrum.light_blue_plank_fence": "Light Blue Fence", + "block.spectrum.light_blue_plank_pressure_plate": "Light Blue Pressure Plate", + "block.spectrum.light_blue_plank_stairs": "Light Blue Stairs", + "block.spectrum.light_blue_plank_slab": "Light Blue Slab", + "block.spectrum.light_blue_plank_fence_gate": "Light Blue Fence Gate", "block.spectrum.light_gray_planks": "Light Gray Planks", - "block.spectrum.light_gray_plank_button": "Light Gray Button", - "block.spectrum.light_gray_plank_fence": "Light Gray Fence", - "block.spectrum.light_gray_plank_pressure_plate": "Light Gray Pressure Plate", - "block.spectrum.light_gray_plank_stairs": "Light Gray Stairs", - "block.spectrum.light_gray_plank_slab": "Light Gray Slab", - "block.spectrum.light_gray_plank_fence_gate": "Light Gray Fence Gate", + "block.spectrum.light_gray_plank_button": "Light Gray Button", + "block.spectrum.light_gray_plank_fence": "Light Gray Fence", + "block.spectrum.light_gray_plank_pressure_plate": "Light Gray Pressure Plate", + "block.spectrum.light_gray_plank_stairs": "Light Gray Stairs", + "block.spectrum.light_gray_plank_slab": "Light Gray Slab", + "block.spectrum.light_gray_plank_fence_gate": "Light Gray Fence Gate", "block.spectrum.lime_planks": "Lime Planks", - "block.spectrum.lime_plank_button": "Lime Button", - "block.spectrum.lime_plank_fence": "Lime Fence", - "block.spectrum.lime_plank_pressure_plate": "Lime Pressure Plate", - "block.spectrum.lime_plank_stairs": "Lime Stairs", - "block.spectrum.lime_plank_slab": "Lime Slab", - "block.spectrum.lime_plank_fence_gate": "Lime Fence Gate", + "block.spectrum.lime_plank_button": "Lime Button", + "block.spectrum.lime_plank_fence": "Lime Fence", + "block.spectrum.lime_plank_pressure_plate": "Lime Pressure Plate", + "block.spectrum.lime_plank_stairs": "Lime Stairs", + "block.spectrum.lime_plank_slab": "Lime Slab", + "block.spectrum.lime_plank_fence_gate": "Lime Fence Gate", "block.spectrum.magenta_planks": "Magenta Planks", - "block.spectrum.magenta_plank_button": "Magenta Button", - "block.spectrum.magenta_plank_fence": "Magenta Fence", - "block.spectrum.magenta_plank_pressure_plate": "Magenta Pressure Plate", - "block.spectrum.magenta_plank_stairs": "Magenta Stairs", - "block.spectrum.magenta_plank_slab": "Magenta Slab", - "block.spectrum.magenta_plank_fence_gate": "Magenta Fence Gate", + "block.spectrum.magenta_plank_button": "Magenta Button", + "block.spectrum.magenta_plank_fence": "Magenta Fence", + "block.spectrum.magenta_plank_pressure_plate": "Magenta Pressure Plate", + "block.spectrum.magenta_plank_stairs": "Magenta Stairs", + "block.spectrum.magenta_plank_slab": "Magenta Slab", + "block.spectrum.magenta_plank_fence_gate": "Magenta Fence Gate", "block.spectrum.orange_planks": "Orange Planks", - "block.spectrum.orange_plank_button": "Orange Button", - "block.spectrum.orange_plank_fence": "Orange Fence", - "block.spectrum.orange_plank_pressure_plate": "Orange Pressure Plate", - "block.spectrum.orange_plank_stairs": "Orange Stairs", - "block.spectrum.orange_plank_slab": "Orange Slab", - "block.spectrum.orange_plank_fence_gate": "Orange Fence Gate", + "block.spectrum.orange_plank_button": "Orange Button", + "block.spectrum.orange_plank_fence": "Orange Fence", + "block.spectrum.orange_plank_pressure_plate": "Orange Pressure Plate", + "block.spectrum.orange_plank_stairs": "Orange Stairs", + "block.spectrum.orange_plank_slab": "Orange Slab", + "block.spectrum.orange_plank_fence_gate": "Orange Fence Gate", "block.spectrum.pink_planks": "Pink Planks", - "block.spectrum.pink_plank_button": "Pink Button", - "block.spectrum.pink_plank_fence": "Pink Fence", - "block.spectrum.pink_plank_pressure_plate": "Pink Pressure Plate", - "block.spectrum.pink_plank_stairs": "Pink Stairs", - "block.spectrum.pink_plank_slab": "Pink Slab", - "block.spectrum.pink_plank_fence_gate": "Pink Fence Gate", + "block.spectrum.pink_plank_button": "Pink Button", + "block.spectrum.pink_plank_fence": "Pink Fence", + "block.spectrum.pink_plank_pressure_plate": "Pink Pressure Plate", + "block.spectrum.pink_plank_stairs": "Pink Stairs", + "block.spectrum.pink_plank_slab": "Pink Slab", + "block.spectrum.pink_plank_fence_gate": "Pink Fence Gate", "block.spectrum.purple_planks": "Purple Planks", - "block.spectrum.purple_plank_button": "Purple Button", - "block.spectrum.purple_plank_fence": "Purple Fence", - "block.spectrum.purple_plank_pressure_plate": "Purple Pressure Plate", - "block.spectrum.purple_plank_stairs": "Purple Stairs", - "block.spectrum.purple_plank_slab": "Purple Slab", - "block.spectrum.purple_plank_fence_gate": "Purple Fence Gate", + "block.spectrum.purple_plank_button": "Purple Button", + "block.spectrum.purple_plank_fence": "Purple Fence", + "block.spectrum.purple_plank_pressure_plate": "Purple Pressure Plate", + "block.spectrum.purple_plank_stairs": "Purple Stairs", + "block.spectrum.purple_plank_slab": "Purple Slab", + "block.spectrum.purple_plank_fence_gate": "Purple Fence Gate", "block.spectrum.red_planks": "Red Planks", - "block.spectrum.red_plank_button": "Red Button", - "block.spectrum.red_plank_fence": "Red Fence", - "block.spectrum.red_plank_pressure_plate": "Red Pressure Plate", - "block.spectrum.red_plank_stairs": "Red Stairs", - "block.spectrum.red_plank_slab": "Red Slab", - "block.spectrum.red_plank_fence_gate": "Red Fence Gate", + "block.spectrum.red_plank_button": "Red Button", + "block.spectrum.red_plank_fence": "Red Fence", + "block.spectrum.red_plank_pressure_plate": "Red Pressure Plate", + "block.spectrum.red_plank_stairs": "Red Stairs", + "block.spectrum.red_plank_slab": "Red Slab", + "block.spectrum.red_plank_fence_gate": "Red Fence Gate", "block.spectrum.white_planks": "White Planks", - "block.spectrum.white_plank_button": "White Button", - "block.spectrum.white_plank_fence": "White Fence", - "block.spectrum.white_plank_pressure_plate": "White Pressure Plate", - "block.spectrum.white_plank_stairs": "White Stairs", - "block.spectrum.white_plank_slab": "White Slab", - "block.spectrum.white_plank_fence_gate": "White Fence Gate", + "block.spectrum.white_plank_button": "White Button", + "block.spectrum.white_plank_fence": "White Fence", + "block.spectrum.white_plank_pressure_plate": "White Pressure Plate", + "block.spectrum.white_plank_stairs": "White Stairs", + "block.spectrum.white_plank_slab": "White Slab", + "block.spectrum.white_plank_fence_gate": "White Fence Gate", "block.spectrum.yellow_planks": "Yellow Planks", - "block.spectrum.yellow_plank_button": "Yellow Button", - "block.spectrum.yellow_plank_fence": "Yellow Fence", - "block.spectrum.yellow_plank_pressure_plate": "Yellow Pressure Plate", - "block.spectrum.yellow_plank_stairs": "Yellow Stairs", - "block.spectrum.yellow_plank_slab": "Yellow Slab", - "block.spectrum.yellow_plank_fence_gate": "Yellow Fence Gate", + "block.spectrum.yellow_plank_button": "Yellow Button", + "block.spectrum.yellow_plank_fence": "Yellow Fence", + "block.spectrum.yellow_plank_pressure_plate": "Yellow Pressure Plate", + "block.spectrum.yellow_plank_stairs": "Yellow Stairs", + "block.spectrum.yellow_plank_slab": "Yellow Slab", + "block.spectrum.yellow_plank_fence_gate": "Yellow Fence Gate", "item.spectrum.mud_bucket": "Bucket of Mud", "block.spectrum.mud": "Mud", "block.spectrum.flowing_mud": "Mud", - + "item.spectrum.liquid_crystal_bucket": "Liquid Crystal Bucket", "block.spectrum.liquid_crystal": "Liquid Crystal", "block.spectrum.flowing_liquid_crystal": "Liquid Crystal", @@ -1002,7 +1002,7 @@ "block.spectrum.citrine_player_only_glass": "Semi-Permeable Citrine Glass", "block.spectrum.onyx_player_only_glass": "Semi-Permeable Onyx Glass", "block.spectrum.moonstone_player_only_glass": "Semi-Permeable Moonstone Glass", - + "block.spectrum.amethyst_calcite_lamp": "Amethyst Calcite Lamp", "block.spectrum.topaz_calcite_lamp": "Topaz Calcite Lamp", "block.spectrum.citrine_calcite_lamp": "Citrine Calcite Lamp", @@ -1377,7 +1377,7 @@ "item.spectrum.emergency_chestplate.tooltip": "Grants Absorption & Resistance when hit", "item.spectrum.emergency_leggings.tooltip": "Grants Regeneration when hit", "item.spectrum.emergency_boots.tooltip": "Grants Speed & Invisibility when hit", - + "item.spectrum.vibrant_cyan_catkin": "Vibrant Cyan Catkin", "item.spectrum.vibrant_magenta_catkin": "Vibrant Magenta Catkin", "item.spectrum.vibrant_yellow_catkin": "Vibrant Yellow Catkin", @@ -1394,7 +1394,7 @@ "item.spectrum.block_flooder.tooltip2": "§fThrow to use; Radius of 10 blocks", "item.spectrum.block_flooder.tooltip3": "Takes matching blocks right out of your inventory", "item.spectrum.block_flooder.tooltip4": "Alternatively uses Cobblestone", - + "item.spectrum.black_pigment": "Black Pigment", "item.spectrum.blue_pigment": "Blue Pigment", "item.spectrum.brown_pigment": "Brown Pigment", From 8890c344155c10cd9a19152254d9427a7c1ca5c1 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Sun, 14 Aug 2022 14:03:20 +0200 Subject: [PATCH 0003/1051] 1.19 --- build.gradle | 6 ++-- gradle.properties | 44 ++++++++++++++++-------------- src/main/resources/fabric.mod.json | 12 ++++---- 3 files changed, 33 insertions(+), 29 deletions(-) diff --git a/build.gradle b/build.gradle index 96073864ff..8b96def240 100644 --- a/build.gradle +++ b/build.gradle @@ -90,7 +90,7 @@ dependencies { modApi("com.terraformersmc:modmenu:${project.modmenu_version}") modImplementation "vazkii.patchouli:Patchouli:${project.patchouli_version}" // https://maven.blamejared.com/vazkii/patchouli/Patchouli/ - modImplementation "io.wispforest:owo-lib:${project.owo_version}+1.18" + modImplementation "io.wispforest:owo-lib:${project.owo_version}" // https://github.com/shedaniel/RoughlyEnoughItems modCompileOnly "me.shedaniel:RoughlyEnoughItems-fabric:${project.rei_version}" @@ -109,8 +109,8 @@ dependencies { modImplementation include("com.github.emilyploszaj:step-height-entity-attribute:${project.step_height_attribute_version}") modImplementation include("com.github.DaFuqs:AdditionalEntityAttributes:${project.additional_entity_attributes_version}") - modImplementation include("com.jamieswhiteshirt:reach-entity-attributes:2.1.1") - modImplementation include("com.github.DaFuqs:Incubus-Core:${project.incubus_core_version}") + modImplementation include("com.jamieswhiteshirt:reach-entity-attributes:${project.reach_entity_attributes_version}") + modImplementation include("com.github.devs-immortal:Incubus-Core:${project.incubus_core_version}") //modImplementation include("com.github.devs-immortal:Some-Assembly-Required:${project.sar_version}") //modImplementation include("com.github.devs-immortal:Divine-Intervention:${project.divine_intervention_version}") modImplementation include("io.github.ladysnake:satin:${project.satin_version}") diff --git a/gradle.properties b/gradle.properties index d51973e4a8..f6d61df58a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,38 +2,42 @@ org.gradle.jvmargs = -Xmx2G # Fabric Properties -minecraft_version=1.18.2 -yarn_mappings=1.18.2+build.3 -loader_version=0.14.8 +minecraft_version=1.19.2 +yarn_mappings=1.19.2+build.4 +loader_version=0.14.9 # Mod Properties -mod_version = 1.5.0-1.18.2-magic +mod_version = 1.5.0-1.19.2-magic maven_group = de.dafuqs.spectrum archives_base_name = spectrum # Dependencies -# last updated 29.05.2022 +# last updated 14.08.2022 # https://fabricmc.net/develop/ -fabric_version=0.57.0+1.18.2 -cloth_config_version=6.2.57 -modmenu_version=3.0.1 -rei_version=8.3.510 -patchouli_version=1.18.2-71.1-FABRIC +fabric_version=0.59.0+1.19.2 + +cloth_config_version=8.0.75 +modmenu_version=4.0.6 +rei_version=9.1.526 +patchouli_version=1.19-74-FABRIC # https://maven.blamejared.com/net/darkhax/enchdesc/ -enchantment_descriptions_mc_version=1.18.2 -enchantment_descriptions_mod_version=10.0.3 -owo_version=0.7.2 +enchantment_descriptions_mc_version=1.19.1 +enchantment_descriptions_mod_version=12.0.2 +owo_version=0.7.3+1.19 # https://maven.terraformersmc.com/releases/dev/emi/trinkets/ -trinkets_version=3.3.1 +trinkets_version=3.4.0 +# https://github.com/emilyploszaj/step-height-entity-attribute step_height_attribute_version=1.0.1 # https://jitpack.io/#devs-immortal/Incubus-Core -incubus_core_version=1.18.2-SNAPSHOT +incubus_core_version=1.19-SNAPSHOT +cca_version=5.0.1 +additional_entity_attributes_version=1.19-SNAPSHOT +satin_version=1.9.0 +revelationary_version=1.19-SNAPSHOT +programmer_art_injector_version=1.2.1 +# https://github.com/JamiesWhiteShirt/reach-entity-attributes +reach_entity_attributes_version=2.3.0 sar_version=0.4.0-beta1 divine_intervention_version=2.0.0 -cca_version=4.1.4 -additional_entity_attributes_version=1.18.2-SNAPSHOT -satin_version=1.7.2 -revelationary_version=1.0.0 -programmer_art_injector_version=1.2.1 jello_version=3.2.2+1.18.2 \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 6d1b76296b..2973facd1c 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -48,13 +48,13 @@ "depends": { "fabricloader": ">=0.13.3", "fabric": ">=0.48.0", - "minecraft": ">=1.18.2", + "minecraft": ">=1.19.2", "java": ">=17", - "revelationary": ">=1.0.0", - "cloth-config": ">=6.0.0", - "patchouli": ">=1.18.2-71.1-FABRIC", - "owo": ">=0.5.4", - "trinkets": ">=3.3.0" + "revelationary": "*", + "cloth-config": "*", + "patchouli": "*", + "owo": "*", + "trinkets": "*" }, "suggests": { "chalk": ">=2.0.0", From 5038e4f8ed9fd768197b37597a91db695c6f9ced Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Sun, 14 Aug 2022 15:21:53 +0200 Subject: [PATCH 0004/1051] big oof --- .../de/dafuqs/spectrum/SpectrumClient.java | 4 +- .../de/dafuqs/spectrum/SpectrumCommon.java | 1 + .../spectrum/blocks/BedrockAnvilBlock.java | 7 +- .../spectrum/blocks/BismuthClusterBlock.java | 4 +- .../spectrum/blocks/BlackMateriaBlock.java | 2 +- .../blocks/CrackedEndPortalFrameBlock.java | 2 +- .../blocks/ExtraTickFarmlandBlock.java | 2 +- .../block_flooder/BlockFlooderBlock.java | 11 +- .../BottomlessBundleBlock.java | 4 +- .../chests/CompactingChestBlockEntity.java | 5 +- .../chests/PrivateChestBlockEntity.java | 7 +- .../chests/RestockingChestBlockEntity.java | 3 +- .../blocks/chests/SpectrumChestBlock.java | 2 +- .../chests/SpectrumChestBlockEntity.java | 10 +- .../SpectrumChestBlockEntityRenderer.java | 4 +- .../chests/SuckingChestBlockEntity.java | 3 +- .../cinderhearth/CinderhearthBlock.java | 6 +- .../cinderhearth/CinderhearthBlockEntity.java | 5 +- .../conditional/LightningStoneBlock.java | 2 +- .../conditional/MermaidsBrushBlock.java | 2 +- .../conditional/QuitoxicReedsBlock.java | 2 + .../CrystallarieumBlockEntity.java | 3 +- .../spectrum/blocks/decay/DecayAwayBlock.java | 2 +- .../spectrum/blocks/decay/DecayBlock.java | 7 +- .../spectrum/blocks/decay/FadingBlock.java | 2 +- .../spectrum/blocks/decay/FailingBlock.java | 2 +- .../spectrum/blocks/decay/RuinBlock.java | 2 +- .../blocks/decoration/CloverBlock.java | 2 +- .../decoration/ColoredSporeBlossomBlock.java | 2 +- .../blocks/decoration/DecayingLightBlock.java | 2 +- .../blocks/decoration/EtherealGlassBlock.java | 2 +- .../blocks/decoration/GemstoneChimeBlock.java | 2 +- .../blocks/decoration/SparklestoneBlock.java | 2 +- .../decoration/SparklestoneLightBlock.java | 2 +- .../blocks/decoration/WandLightBlock.java | 2 +- .../DeeperDownPortalBlock.java | 2 +- .../blocks/enchanter/EnchanterBlock.java | 4 +- .../enchanter/EnchanterBlockEntity.java | 4 +- .../blocks/ender/EnderDropperBlock.java | 4 +- .../blocks/ender/EnderDropperBlockEntity.java | 5 +- .../blocks/ender/EnderHopperBlock.java | 4 +- .../blocks/ender/EnderHopperBlockEntity.java | 5 +- .../blocks/energy/ColorPickerBlock.java | 3 +- .../blocks/energy/ColorPickerBlockEntity.java | 3 +- .../blocks/energy/CrystalApothecaryBlock.java | 3 +- .../energy/CrystalApothecaryBlockEntity.java | 10 +- .../spectrum/blocks/energy/InkDuctBlock.java | 3 +- .../spectrum/blocks/energy/InkwellBlock.java | 3 +- .../blocks/fluid/LiquidCrystalFluid.java | 2 +- .../blocks/fluid/LiquidCrystalFluidBlock.java | 4 +- .../blocks/fluid/MidnightSolutionFluid.java | 2 +- .../fluid/MidnightSolutionFluidBlock.java | 2 +- .../spectrum/blocks/fluid/MudFluid.java | 2 +- .../spectrum/blocks/fluid/MudFluidBlock.java | 2 +- .../fusion_shrine/FusionShrineBlock.java | 4 +- .../FusionShrineBlockEntity.java | 2 +- .../blocks/gemstone/SpectrumBuddingBlock.java | 2 +- .../spectrum/blocks/gravity/FloatBlock.java | 2 +- .../GerminatedJadeVineSeedsItem.java | 7 +- .../blocks/jade_vines/JadeJellyItem.java | 3 +- .../spectrum/blocks/jade_vines/JadeVine.java | 2 +- .../blocks/jade_vines/JadeVineBulbBlock.java | 2 +- .../blocks/jade_vines/JadeVinePlantBlock.java | 4 +- .../blocks/jade_vines/JadeVineRootsBlock.java | 2 +- .../JadeVineRootsBlockEntityRenderer.java | 2 +- .../lava_sponge/WetLavaSpongeBlock.java | 4 +- .../blocks/lava_sponge/WetLavaSpongeItem.java | 5 +- .../spectrum/blocks/memory/MemoryBlock.java | 2 +- .../blocks/memory/MemoryBlockEntity.java | 4 +- .../spectrum/blocks/memory/MemoryItem.java | 17 +- .../mob_blocks/AoEStatusEffectMobBlock.java | 3 +- .../mob_blocks/BonemealingMobBlock.java | 3 +- .../mob_blocks/EntitySummoningMobBlock.java | 3 +- .../blocks/mob_blocks/ExplosionMobBlock.java | 3 +- .../FallDamageNegatingMobBlock.java | 5 +- .../blocks/mob_blocks/FeedingMobBlock.java | 3 +- .../mob_blocks/FirestarterMobBlock.java | 3 +- .../blocks/mob_blocks/FreezingMobBlock.java | 3 +- .../blocks/mob_blocks/InsomniaMobBlock.java | 5 +- .../blocks/mob_blocks/KnockbackMobBlock.java | 3 +- .../mob_blocks/LineTeleportingMobBlock.java | 5 +- .../blocks/mob_blocks/MilkingMobBlock.java | 5 +- .../spectrum/blocks/mob_blocks/MobBlock.java | 5 +- .../mob_blocks/PiglinTradeMobBlock.java | 5 +- .../blocks/mob_blocks/ProjectileMobBlock.java | 3 +- .../mob_blocks/RandomTeleportingMobBlock.java | 5 +- .../blocks/mob_blocks/ShearingMobBlock.java | 3 +- .../SilverfishInsertingMobBlock.java | 3 +- .../mob_blocks/SlimeSizingMobBlock.java | 3 +- .../mob_blocks/StatusEffectMobBlock.java | 3 +- .../mob_head/SpectrumSkullBlockItem.java | 3 +- .../CreativeParticleSpawnerBlock.java | 3 +- .../ParticleSpawnerBlockEntity.java | 5 +- .../nodes/PastelNetworkNodeBlock.java | 7 +- .../blocks/pedestal/PedestalBlock.java | 2 +- .../blocks/pedestal/PedestalBlockEntity.java | 6 +- .../blocks/pedestal/PedestalBlockItem.java | 3 +- .../PotionWorkshopBlockEntity.java | 4 +- .../redstone/BlockPlacerBlockEntity.java | 3 +- .../blocks/redstone/DetectorBlock.java | 2 +- .../blocks/redstone/PlayerDetectorBlock.java | 4 +- .../redstone/RedstoneCalculatorBlock.java | 6 +- .../blocks/redstone/RedstoneGravityBlock.java | 2 +- .../blocks/redstone/RedstoneTimerBlock.java | 8 +- .../redstone/RedstoneWirelessBlock.java | 2 +- .../shooting_star/ShootingStarBlock.java | 2 +- .../SpiritInstillerBlock.java | 4 +- .../SpiritInstillerBlockEntity.java | 1 + .../spirit_sallow/OminousSaplingBlock.java | 2 +- .../SpiritSallowLeavesBlock.java | 2 +- .../spirit_sallow/SpiritVinesBodyBlock.java | 2 +- .../spirit_sallow/SpiritVinesHeadBlock.java | 2 +- .../blocks/spirit_sallow/WindStrength.java | 8 +- .../structure/TreasureChestBlockEntity.java | 3 +- .../blocks/upgrade/UpgradeBlockItem.java | 5 +- .../spectrum/blocks/upgrade/Upgradeable.java | 2 + .../commands/ProgressionSanityCommand.java | 4 +- .../commands/ShootingStarCommand.java | 4 +- .../REI/plugins/AnvilCrushingCategory.java | 13 +- .../BlockToBlockWithChanceCategory.java | 8 +- .../REI/plugins/CinderhearthCategory.java | 16 +- .../REI/plugins/CrystallarieumCategory.java | 19 +- .../compat/REI/plugins/EnchanterCategory.java | 13 +- .../plugins/EnchantmentUpgradeCategory.java | 11 +- .../compat/REI/plugins/FreezingCategory.java | 3 +- .../REI/plugins/FusionShrineCategory.java | 13 +- .../plugins/GatedItemInformationDisplay.java | 3 +- .../GatedItemInformationPageCategory.java | 6 +- .../compat/REI/plugins/HeatingCategory.java | 3 +- .../REI/plugins/InkConvertingCategory.java | 11 +- .../MidnightSolutionConvertingCategory.java | 7 +- .../NaturesStaffConversionsCategory.java | 5 +- .../REI/plugins/PedestalCraftingCategory.java | 13 +- .../REI/plugins/PedestalCraftingDisplay.java | 3 +- .../PotionWorkshopBrewingCategory.java | 3 +- .../REI/plugins/PotionWorkshopCategory.java | 8 +- .../PotionWorkshopCraftingCategory.java | 3 +- .../PotionWorkshopReactingCategory.java | 3 +- .../REI/plugins/SpiritInstillingCategory.java | 11 +- .../compat/patchouli/PageChecklist.java | 3 +- .../patchouli/PageCinderhearthSmelting.java | 4 +- .../patchouli/PageCrystallarieumGrowing.java | 4 +- .../spectrum/compat/patchouli/PageHint.java | 7 +- .../compat/patchouli/PaymentButtonWidget.java | 3 +- .../deeper_down/DDConfiguredFeatures.java | 3 +- .../deeper_down/DDOreVeinSampler.java | 14 +- .../enchantments/SpectrumEnchantment.java | 5 +- .../de/dafuqs/spectrum/energy/InkPowered.java | 11 +- .../spectrum/energy/color/InkColor.java | 8 +- .../energy/storage/CreativeInkStorage.java | 3 +- .../storage/IndividualCappedInkStorage.java | 7 +- .../energy/storage/SingleInkStorage.java | 5 +- .../TotalCappedElementalInkStorage.java | 15 +- .../energy/storage/TotalCappedInkStorage.java | 5 +- .../entity/SpectrumEntityRenderers.java | 4 +- .../entity/entity/FloatBlockEntity.java | 2 +- .../entity/entity/ShootingStarEntity.java | 2 +- .../render/InkProjectileEntityRenderer.java | 2 +- .../render/ShootingStarEntityRenderer.java | 2 +- .../spectrum/helpers/BuildingHelper.java | 1 + .../dafuqs/spectrum/helpers/LoreHelper.java | 14 +- .../de/dafuqs/spectrum/helpers/Support.java | 2 +- .../inventories/BedrockAnvilScreen.java | 9 +- .../BedrockAnvilScreenHandler.java | 8 +- .../inventories/CompactingChestScreen.java | 6 +- .../inventories/PaintbrushScreenHandler.java | 7 +- .../inventories/ParticleSpawnerScreen.java | 73 ++-- .../ParticleSpawnerScreenHandler.java | 6 + .../spectrum/inventories/PedestalScreen.java | 3 +- .../inventories/SuckingChestScreen.java | 2 +- .../widgets/ColorSelectionWidget.java | 10 +- .../inventories/widgets/InkGaugeWidget.java | 9 +- .../widgets/StackedInkMeterWidget.java | 4 +- .../spectrum/items/CraftingTabletItem.java | 11 +- .../spectrum/items/DecayPlacerItem.java | 9 +- .../spectrum/items/ExperienceStorageItem.java | 2 +- .../spectrum/items/ItemWithTooltip.java | 6 +- .../items/MidnightAberrationItem.java | 3 +- .../spectrum/items/MoonstruckNectarItem.java | 5 +- .../items/SpectrumBannerPatternItem.java | 10 +- .../items/SpectrumMobSpawnerItem.java | 17 +- .../items/armor/GemstoneArmorItem.java | 9 +- .../items/magic_items/BlockFlooderItem.java | 9 +- .../magic_items/BottomlessBundleItem.java | 13 +- .../magic_items/CelestialPocketWatchItem.java | 11 +- .../items/magic_items/EnderBagItem.java | 4 +- .../items/magic_items/EnderSpliceItem.java | 9 +- .../items/magic_items/ExchangeStaffItem.java | 7 +- .../items/magic_items/GildedBookItem.java | 7 +- .../items/magic_items/KnowledgeGemItem.java | 8 +- .../items/magic_items/NaturesStaffItem.java | 11 +- .../items/magic_items/PaintBrushItem.java | 5 +- .../items/magic_items/PlacementStaffItem.java | 5 +- .../items/magic_items/RadianceStaffItem.java | 7 +- .../items/magic_items/RestorationTeaItem.java | 7 +- .../spectrum/items/tools/DreamflayerItem.java | 9 +- .../tooltip/CraftingTabletTooltipData.java | 8 +- .../items/trinkets/AshenCircletItem.java | 9 +- .../items/trinkets/AttackRingItem.java | 5 +- .../items/trinkets/AzureDikeAmuletItem.java | 3 +- .../items/trinkets/AzureDikeBeltItem.java | 3 +- .../items/trinkets/AzureDikeRingItem.java | 3 +- .../items/trinkets/AzureDikeTrinketItem.java | 3 +- .../items/trinkets/ExtraHealthRingItem.java | 3 +- .../items/trinkets/ExtraReachGlovesItem.java | 3 +- .../items/trinkets/GleamingPinItem.java | 3 +- .../items/trinkets/GlowVisionGogglesItem.java | 3 +- .../items/trinkets/InkDrainTrinketItem.java | 5 +- .../spectrum/items/trinkets/NeatRingItem.java | 3 +- .../items/trinkets/PotionPendantItem.java | 21 +- .../items/trinkets/PuffCircletItem.java | 5 +- .../items/trinkets/RadiancePinItem.java | 3 +- .../items/trinkets/TakeOffBeltItem.java | 3 +- .../items/trinkets/TidalCircletItem.java | 7 +- .../items/trinkets/TotemPendantItem.java | 3 +- .../items/trinkets/WhispyCircletItem.java | 8 +- .../spectrum/loot/EnchantmentDrops.java | 116 +++---- ...xin.java => AbstractHorseEntityMixin.java} | 20 +- .../mixin/BuddingAmethystBlockMixin.java | 4 +- .../mixin/ChunkNoiseSamplerMixin.java | 15 +- .../spectrum/mixin/EndermanEntityMixin.java | 2 +- .../GeodesGenerateWithGemstoneOresMixin.java | 2 +- .../spectrum/mixin/ItemEntityMixin.java | 2 +- .../spectrum/mixin/LivingEntityMixin.java | 15 - .../accessors/StructureFeatureAccessor.java | 16 - .../mixin/client/PotionItemClientMixin.java | 3 +- .../mixin/client/WorldRendererMixin.java | 2 +- .../DescriptionManagerMixin.java | 2 +- .../networking/SpectrumS2CPacketReceiver.java | 2 +- .../particle/client/VoidFogParticle.java | 2 +- .../particle/client/WindParticle.java | 2 +- .../progression/UnlockToastManager.java | 7 +- .../progression/toast/MessageToast.java | 5 +- .../progression/toast/RevelationToast.java | 5 +- .../toast/UnlockedRecipeGroupToast.java | 11 +- .../recipe/DescriptiveGatedRecipe.java | 4 +- .../dafuqs/spectrum/recipe/GatedRecipe.java | 6 +- .../cinderhearth/CinderhearthRecipe.java | 12 +- .../crystallarieum/CrystallarieumRecipe.java | 10 +- .../recipe/enchanter/EnchanterRecipe.java | 10 +- .../EnchantmentUpgradeRecipe.java | 10 +- .../fusion_shrine/FusionShrineRecipe.java | 9 +- .../FusionShrineRecipeSerializer.java | 9 +- .../ink_converting/InkConvertingRecipe.java | 10 +- .../pedestal/PedestalCraftingRecipe.java | 12 +- .../PotionWorkshopBrewingRecipe.java | 12 +- .../PotionWorkshopReactingRecipe.java | 16 +- .../potion_workshop/PotionWorkshopRecipe.java | 10 +- .../ISpiritInstillerRecipe.java | 10 +- .../spawner/SpawnerChangeRecipe.java | 4 +- .../spawner/SpawnerCreatureChangeRecipe.java | 6 +- .../SpawnerMaxNearbyEntitiesChangeRecipe.java | 6 +- ...pawnerRequiredPlayerRangeChangeRecipe.java | 6 +- .../SpawnerSpawnCountChangeRecipe.java | 6 +- .../SpawnerSpawnDelayChangeRecipe.java | 6 +- .../spectrum/registries/SpectrumBlocks.java | 4 +- .../spectrum/registries/SpectrumCommands.java | 4 +- .../registries/SpectrumMultiblocks.java | 10 +- .../client/SpectrumItemPredicates.java | 2 +- .../dafuqs/spectrum/render/HudRenderers.java | 6 +- .../EnderSpliceChargingSoundInstance.java | 2 +- .../sound/TakeOffBeltSoundInstance.java | 2 +- .../spectrum/spells/InkSpellEffects.java | 2 +- .../worldgen/ColoredSaplingGenerator.java | 2 +- .../worldgen/OminousSaplingGenerator.java | 2 +- .../worldgen/features/RandomBudsFeature.java | 2 +- .../features/WeightedRandomFeature.java | 2 +- .../features/WeightedRandomFeatureConfig.java | 2 +- .../features/WeightedRandomFeaturePatch.java | 2 +- .../SpectrumStructureFeatures.java | 9 +- .../SpectrumStructurePoolBasedGenerator.java | 324 ------------------ ...UndergroundStructurePoolFeatureConfig.java | 36 -- .../SpectrumUndergroundStructures.java | 134 +++++--- src/main/resources/spectrum.mixins.json | 3 +- 274 files changed, 843 insertions(+), 1268 deletions(-) rename src/main/java/de/dafuqs/spectrum/mixin/{HorseBaseEntityMixin.java => AbstractHorseEntityMixin.java} (76%) delete mode 100644 src/main/java/de/dafuqs/spectrum/mixin/accessors/StructureFeatureAccessor.java delete mode 100644 src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumStructurePoolBasedGenerator.java delete mode 100644 src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumUndergroundStructurePoolFeatureConfig.java diff --git a/src/main/java/de/dafuqs/spectrum/SpectrumClient.java b/src/main/java/de/dafuqs/spectrum/SpectrumClient.java index 0f35e09456..bfe115dc84 100644 --- a/src/main/java/de/dafuqs/spectrum/SpectrumClient.java +++ b/src/main/java/de/dafuqs/spectrum/SpectrumClient.java @@ -27,7 +27,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; @@ -90,7 +90,7 @@ public void onInitializeClient() { ItemTooltipCallback.EVENT.register((stack, context, lines) -> { if (stack.isIn(SpectrumItemTags.COMING_SOON_TOOLTIP)) { - lines.add(new TranslatableText("spectrum.tooltip.coming_soon")); + lines.add(Text.translatable("spectrum.tooltip.coming_soon")); } }); diff --git a/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java b/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java index 5d314fc433..0f5ff1d2af 100644 --- a/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java +++ b/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java @@ -61,6 +61,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import net.minecraft.util.math.random.Random; import java.util.*; public class SpectrumCommon implements ModInitializer { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/BedrockAnvilBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/BedrockAnvilBlock.java index 9b285c2122..5dc3cab1bd 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/BedrockAnvilBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/BedrockAnvilBlock.java @@ -10,7 +10,6 @@ import net.minecraft.screen.ScreenHandlerContext; import net.minecraft.screen.SimpleNamedScreenHandlerFactory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.math.BlockPos; import net.minecraft.world.BlockView; @@ -21,7 +20,7 @@ public class BedrockAnvilBlock extends AnvilBlock { - private static final Text TITLE = new TranslatableText("container.spectrum.bedrock_anvil"); + private static final Text TITLE = Text.translatable("container.spectrum.bedrock_anvil"); public BedrockAnvilBlock(Settings settings) { super(settings); @@ -42,8 +41,8 @@ public NamedScreenHandlerFactory createScreenHandlerFactory(BlockState state, Wo @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("container.spectrum.bedrock_anvil.tooltip").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("container.spectrum.bedrock_anvil.tooltip2").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("container.spectrum.bedrock_anvil.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("container.spectrum.bedrock_anvil.tooltip2").formatted(Formatting.GRAY)); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/BismuthClusterBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/BismuthClusterBlock.java index 6d70b78ce3..4304e3f38a 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/BismuthClusterBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/BismuthClusterBlock.java @@ -13,11 +13,10 @@ import net.minecraft.tag.TagKey; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.random.Random; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; -import java.util.Random; - public class BismuthClusterBlock extends AmethystClusterBlock { public static final int GROWTH_CHECK_RADIUS = 3; @@ -71,5 +70,4 @@ public static boolean searchAndConsumeBlock(World world, BlockPos pos, int radiu return false; } - } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/BlackMateriaBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/BlackMateriaBlock.java index 915ed8a9f7..e39d8f6970 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/BlackMateriaBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/BlackMateriaBlock.java @@ -14,7 +14,7 @@ import net.minecraft.util.math.Direction; import net.minecraft.world.World; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class BlackMateriaBlock extends FallingBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/CrackedEndPortalFrameBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/CrackedEndPortalFrameBlock.java index 01a08ac53c..c53673252f 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/CrackedEndPortalFrameBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/CrackedEndPortalFrameBlock.java @@ -25,7 +25,7 @@ import net.minecraft.world.World; import net.minecraft.world.explosion.Explosion; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class CrackedEndPortalFrameBlock extends Block { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/ExtraTickFarmlandBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/ExtraTickFarmlandBlock.java index b66cfa3767..e575cfcebe 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/ExtraTickFarmlandBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/ExtraTickFarmlandBlock.java @@ -6,7 +6,7 @@ import net.minecraft.world.BlockView; import org.jetbrains.annotations.NotNull; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class ExtraTickFarmlandBlock extends FarmlandBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/block_flooder/BlockFlooderBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/block_flooder/BlockFlooderBlock.java index c250013231..88fca36d7b 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/block_flooder/BlockFlooderBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/block_flooder/BlockFlooderBlock.java @@ -19,7 +19,12 @@ import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; -import java.util.*; +import net.minecraft.util.math.random.Random; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; public class BlockFlooderBlock extends BlockWithEntity { @@ -79,7 +84,7 @@ private boolean calculateTargetBlockAndPropagate(BlockState state, World world, return false; } - Hashtable neighboringBlockAmounts = new Hashtable<>(); + Map neighboringBlockAmounts = new HashMap<>(); for (Direction direction : Direction.values()) { BlockPos targetBlockPos = pos.offset(direction); BlockState currentBlockState = world.getBlockState(targetBlockPos); @@ -102,7 +107,7 @@ private boolean calculateTargetBlockAndPropagate(BlockState state, World world, Block currentBlock = currentBlockState.getBlock(); if (currentBlockState.isSolidBlock(world, targetBlockPos)) { - if (neighboringBlockAmounts.contains(currentBlock)) { + if (neighboringBlockAmounts.containsKey(currentBlock)) { neighboringBlockAmounts.put(currentBlock, neighboringBlockAmounts.get(currentBlock) + 1); } else { neighboringBlockAmounts.put(currentBlock, 1); diff --git a/src/main/java/de/dafuqs/spectrum/blocks/bottomless_bundle/BottomlessBundleBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/bottomless_bundle/BottomlessBundleBlock.java index 9a9c1d8fc5..385ca15c09 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/bottomless_bundle/BottomlessBundleBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/bottomless_bundle/BottomlessBundleBlock.java @@ -13,7 +13,7 @@ import net.minecraft.loot.context.LootContext; import net.minecraft.loot.context.LootContextParameters; import net.minecraft.text.MutableText; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.hit.BlockHitResult; @@ -104,7 +104,7 @@ public void onPlaced(World world, BlockPos pos, BlockState state, LivingEntity p @Override public MutableText getName() { - return new TranslatableText("item.spectrum.void_bundle"); + return Text.translatable("item.spectrum.void_bundle"); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/chests/CompactingChestBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/chests/CompactingChestBlockEntity.java index 1d29dffcf4..7c5e6a3ff9 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/chests/CompactingChestBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/chests/CompactingChestBlockEntity.java @@ -19,12 +19,13 @@ import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Pair; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.util.math.random.Random; + import java.util.*; public class CompactingChestBlockEntity extends SpectrumChestBlockEntity implements ExtendedScreenHandlerFactory { @@ -127,7 +128,7 @@ public static void clearCache() { } protected Text getContainerName() { - return new TranslatableText("block.spectrum.compacting_chest"); + return Text.translatable("block.spectrum.compacting_chest"); } public void readNbt(NbtCompound tag) { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/chests/PrivateChestBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/chests/PrivateChestBlockEntity.java index b2269fa56f..3edce1b66f 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/chests/PrivateChestBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/chests/PrivateChestBlockEntity.java @@ -13,7 +13,6 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.screen.ScreenHandler; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; @@ -63,9 +62,9 @@ public void updateRedstone(BlockPos pos, BlockState state) { protected Text getContainerName() { if (hasOwner()) { - return new TranslatableText("block.spectrum.private_chest").append(new TranslatableText("container.spectrum.owned_by_player", this.ownerName)); + return Text.translatable("block.spectrum.private_chest").append(Text.translatable("container.spectrum.owned_by_player", this.ownerName)); } else { - return new TranslatableText("block.spectrum.private_chest"); + return Text.translatable("block.spectrum.private_chest"); } } @@ -141,7 +140,7 @@ public boolean checkUnlocked(PlayerEntity player) { if (!isOwner && this.world != null) { this.lastNonOwnerOpenedTick = this.world.getTime(); updateRedstone(this.pos, this.world.getBlockState(pos)); - player.sendMessage(new TranslatableText("block.spectrum.private_chest.title_with_owner", this.getOwnerName()), false); + player.sendMessage(Text.translatable("block.spectrum.private_chest.title_with_owner", this.getOwnerName()), false); } return isOwner; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/chests/RestockingChestBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/chests/RestockingChestBlockEntity.java index 0f9ce0cb71..e2948aae9a 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/chests/RestockingChestBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/chests/RestockingChestBlockEntity.java @@ -16,7 +16,6 @@ import net.minecraft.recipe.ShapelessRecipe; import net.minecraft.screen.ScreenHandler; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -69,7 +68,7 @@ private static boolean tickCooldown(RestockingChestBlockEntity restockingChestBl } protected Text getContainerName() { - return new TranslatableText("block.spectrum.restocking_chest"); + return Text.translatable("block.spectrum.restocking_chest"); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/chests/SpectrumChestBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/chests/SpectrumChestBlock.java index 780a7c93ed..5b8fbd52e3 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/chests/SpectrumChestBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/chests/SpectrumChestBlock.java @@ -21,7 +21,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldAccess; -import java.util.Random; +import net.minecraft.util.math.random.Random; import static net.minecraft.client.render.TexturedRenderLayers.CHEST_ATLAS_TEXTURE; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/chests/SpectrumChestBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/chests/SpectrumChestBlockEntity.java index ed83d134a6..5da51d5e0e 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/chests/SpectrumChestBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/chests/SpectrumChestBlockEntity.java @@ -9,11 +9,7 @@ import net.fabricmc.api.EnvironmentInterfaces; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.block.entity.ChestLidAnimator; -import net.minecraft.block.entity.LootableContainerBlockEntity; -import net.minecraft.block.entity.ViewerCountManager; -import net.minecraft.client.block.ChestAnimationProgress; +import net.minecraft.block.entity.*; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.Inventories; import net.minecraft.inventory.Inventory; @@ -30,9 +26,9 @@ @EnvironmentInterfaces({@EnvironmentInterface( value = EnvType.CLIENT, - itf = ChestAnimationProgress.class + itf = LidOpenable.class )}) -public abstract class SpectrumChestBlockEntity extends LootableContainerBlockEntity implements ChestAnimationProgress { +public abstract class SpectrumChestBlockEntity extends LootableContainerBlockEntity implements LidOpenable { public final ViewerCountManager stateManager; protected final ChestLidAnimator lidAnimator; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/chests/SpectrumChestBlockEntityRenderer.java b/src/main/java/de/dafuqs/spectrum/blocks/chests/SpectrumChestBlockEntityRenderer.java index 9fadaeab89..6407782b4c 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/chests/SpectrumChestBlockEntityRenderer.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/chests/SpectrumChestBlockEntityRenderer.java @@ -7,7 +7,7 @@ import net.minecraft.block.BlockState; import net.minecraft.block.ChestBlock; import net.minecraft.block.entity.BlockEntity; -import net.minecraft.client.block.ChestAnimationProgress; +import net.minecraft.block.entity.LidOpenable; import net.minecraft.client.model.ModelPart; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.VertexConsumer; @@ -21,7 +21,7 @@ import net.minecraft.world.World; @Environment(EnvType.CLIENT) -public class SpectrumChestBlockEntityRenderer implements BlockEntityRenderer { +public class SpectrumChestBlockEntityRenderer implements BlockEntityRenderer { protected final ModelPart singleChestLid; protected final ModelPart singleChestBase; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/chests/SuckingChestBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/chests/SuckingChestBlockEntity.java index fa8da4844c..dfc0d7d93a 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/chests/SuckingChestBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/chests/SuckingChestBlockEntity.java @@ -31,7 +31,6 @@ import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; @@ -98,7 +97,7 @@ private static void searchForNearbyEntities(@NotNull SuckingChestBlockEntity blo } protected Text getContainerName() { - return new TranslatableText("block.spectrum.sucking_chest"); + return Text.translatable("block.spectrum.sucking_chest"); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlock.java index e2cf24aad0..95354f2342 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlock.java @@ -22,7 +22,7 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.state.StateManager; import net.minecraft.state.property.DirectionProperty; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.*; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; @@ -34,7 +34,7 @@ import vazkii.patchouli.api.IMultiblock; import vazkii.patchouli.api.PatchouliAPI; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class CinderhearthBlock extends BlockWithEntity { @@ -197,7 +197,7 @@ public static CinderhearthBlockEntity.CinderHearthStructureType verifyStructure( if (multiblockWithoutLava.validate(world, blockPos.down(3), rotation)) { return CinderhearthBlockEntity.CinderHearthStructureType.WITH_LAVA; } else { - PatchouliAPI.get().showMultiblock(multiblockWithLava, new TranslatableText("multiblock.spectrum.cinderhearth.structure"), blockPos.down(4), rotation); + PatchouliAPI.get().showMultiblock(multiblockWithLava, Text.translatable("multiblock.spectrum.cinderhearth.structure"), blockPos.down(4), rotation); return CinderhearthBlockEntity.CinderHearthStructureType.NONE; } } else { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java index 05df665357..057d92e053 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java @@ -47,7 +47,6 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; @@ -57,6 +56,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import net.minecraft.util.math.random.Random; + import java.util.*; public class CinderhearthBlockEntity extends LockableContainerBlockEntity implements MultiblockCrafter, Inventory, ExtendedScreenHandlerFactory, InkStorageBlockEntity { @@ -162,7 +163,7 @@ public void setOwner(PlayerEntity playerEntity) { @Override protected Text getContainerName() { - return new TranslatableText("block.spectrum.cinderhearth"); + return Text.translatable("block.spectrum.cinderhearth"); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/conditional/LightningStoneBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/conditional/LightningStoneBlock.java index 183b81360a..d44780f811 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/conditional/LightningStoneBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/conditional/LightningStoneBlock.java @@ -24,7 +24,7 @@ import java.util.Hashtable; import java.util.Map; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class LightningStoneBlock extends Block implements RevelationAware { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/conditional/MermaidsBrushBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/conditional/MermaidsBrushBlock.java index 0fbd0f1034..d2809a33f4 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/conditional/MermaidsBrushBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/conditional/MermaidsBrushBlock.java @@ -37,7 +37,7 @@ import java.util.Hashtable; import java.util.Map; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class MermaidsBrushBlock extends PlantBlock implements RevelationAware, FluidFillable { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/conditional/QuitoxicReedsBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/conditional/QuitoxicReedsBlock.java index eaf7f03c89..5bdc4b3dad 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/conditional/QuitoxicReedsBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/conditional/QuitoxicReedsBlock.java @@ -39,6 +39,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import net.minecraft.util.math.random.Random; + import java.util.*; public class QuitoxicReedsBlock extends Block implements RevelationAware, WaterOrLiquidCrystalLogged { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java index 5246b1dd20..6b4dce1547 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java @@ -31,7 +31,6 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; @@ -213,7 +212,7 @@ public void setOwner(PlayerEntity playerEntity) { @Override protected Text getContainerName() { - return new TranslatableText("block.spectrum.crystallarieum"); + return Text.translatable("block.spectrum.crystallarieum"); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decay/DecayAwayBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decay/DecayAwayBlock.java index cc182dc9f3..fc3d75718f 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decay/DecayAwayBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decay/DecayAwayBlock.java @@ -17,7 +17,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class DecayAwayBlock extends Block { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decay/DecayBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decay/DecayBlock.java index 18204869c1..12999b11ec 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decay/DecayBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decay/DecayBlock.java @@ -18,7 +18,12 @@ import net.minecraft.world.WorldView; import org.jetbrains.annotations.NotNull; -import java.util.*; +import net.minecraft.util.math.random.Random; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; public abstract class DecayBlock extends Block { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decay/FadingBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decay/FadingBlock.java index ad919fff46..d09294eb35 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decay/FadingBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decay/FadingBlock.java @@ -21,7 +21,7 @@ import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class FadingBlock extends DecayBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decay/FailingBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decay/FailingBlock.java index d35533b8a7..ce66b742d1 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decay/FailingBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decay/FailingBlock.java @@ -23,7 +23,7 @@ import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class FailingBlock extends DecayBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decay/RuinBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decay/RuinBlock.java index 998e819087..9ff7eadcff 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decay/RuinBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decay/RuinBlock.java @@ -21,7 +21,7 @@ import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class RuinBlock extends DecayBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decoration/CloverBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decoration/CloverBlock.java index ad5349faae..12843806db 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decoration/CloverBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decoration/CloverBlock.java @@ -8,7 +8,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class CloverBlock extends FernBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decoration/ColoredSporeBlossomBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decoration/ColoredSporeBlossomBlock.java index efc5642f1f..181298f5d4 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decoration/ColoredSporeBlossomBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decoration/ColoredSporeBlossomBlock.java @@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull; import java.util.Map; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class ColoredSporeBlossomBlock extends SporeBlossomBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decoration/DecayingLightBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decoration/DecayingLightBlock.java index 5eccd36bee..cfdd650f45 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decoration/DecayingLightBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decoration/DecayingLightBlock.java @@ -8,7 +8,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.BlockView; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class DecayingLightBlock extends WandLightBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decoration/EtherealGlassBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decoration/EtherealGlassBlock.java index 8a7b47856c..a11a3926ed 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decoration/EtherealGlassBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decoration/EtherealGlassBlock.java @@ -20,7 +20,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class EtherealGlassBlock extends AbstractGlassBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java index f38209804e..57e08e3584 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decoration/GemstoneChimeBlock.java @@ -18,7 +18,7 @@ import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldView; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class GemstoneChimeBlock extends Block { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decoration/SparklestoneBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decoration/SparklestoneBlock.java index 11318a4f30..24eb75d5f7 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decoration/SparklestoneBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decoration/SparklestoneBlock.java @@ -8,7 +8,7 @@ import net.minecraft.util.math.Direction; import net.minecraft.world.World; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class SparklestoneBlock extends Block { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decoration/SparklestoneLightBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decoration/SparklestoneLightBlock.java index ea2f4ce5c2..e087283069 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decoration/SparklestoneLightBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decoration/SparklestoneLightBlock.java @@ -18,7 +18,7 @@ import net.minecraft.world.World; import org.jetbrains.annotations.NotNull; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class SparklestoneLightBlock extends Block { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decoration/WandLightBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decoration/WandLightBlock.java index 60f0b2230d..2948d898f5 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decoration/WandLightBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decoration/WandLightBlock.java @@ -20,7 +20,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class WandLightBlock extends LightBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/deeper_down_portal/DeeperDownPortalBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/deeper_down_portal/DeeperDownPortalBlock.java index 04555049e1..4625a66ad0 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/deeper_down_portal/DeeperDownPortalBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/deeper_down_portal/DeeperDownPortalBlock.java @@ -19,7 +19,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class DeeperDownPortalBlock extends EndPortalBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlock.java index 0bc4c073a0..d61b8c8050 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlock.java @@ -14,7 +14,7 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.*; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; @@ -60,7 +60,7 @@ public static boolean verifyStructure(World world, BlockPos blockPos, @Nullable if (currentMultiBlock == multiblock) { PatchouliAPI.get().clearMultiblock(); } else { - PatchouliAPI.get().showMultiblock(multiblock, new TranslatableText("multiblock.spectrum.enchanter.structure"), blockPos.down(4), BlockRotation.NONE); + PatchouliAPI.get().showMultiblock(multiblock, Text.translatable("multiblock.spectrum.enchanter.structure"), blockPos.down(4), BlockRotation.NONE); } } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlockEntity.java index 8c7c147a6e..51c571c49d 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlockEntity.java @@ -58,6 +58,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import net.minecraft.util.math.random.Random; + import java.util.*; public class EnchanterBlockEntity extends BlockEntity implements Inventory, PlayerOwned, Upgradeable { @@ -92,7 +94,7 @@ public class EnchanterBlockEntity extends BlockEntity implements Inventory, Play protected int virtualInventoryRecipeOrientation; protected boolean inventoryChanged; - private Map upgrades; + private Map upgrades; private Recipe currentRecipe; private int craftingTime; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderDropperBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderDropperBlock.java index 97d58764d4..7433bd9446 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderDropperBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderDropperBlock.java @@ -15,7 +15,7 @@ import net.minecraft.screen.SimpleNamedScreenHandlerFactory; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.hit.BlockHitResult; @@ -72,7 +72,7 @@ public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEnt PiglinBrain.onGuardedBlockInteracted(player, true); } else { - player.sendMessage(new TranslatableText("block.spectrum.ender_dropper_with_owner", enderDropperBlockEntity.getOwnerName()), false); + player.sendMessage(Text.translatable("block.spectrum.ender_dropper_with_owner", enderDropperBlockEntity.getOwnerName()), false); } } return ActionResult.CONSUME; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderDropperBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderDropperBlockEntity.java index f36e42ecb9..70fc7a8c3d 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderDropperBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderDropperBlockEntity.java @@ -9,7 +9,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import java.util.UUID; @@ -25,9 +24,9 @@ public EnderDropperBlockEntity(BlockPos blockPos, BlockState blockState) { protected Text getContainerName() { if (hasOwner()) { - return new TranslatableText("block.spectrum.ender_dropper").append(new TranslatableText("container.spectrum.owned_by_player", this.ownerName)); + return Text.translatable("block.spectrum.ender_dropper").append(Text.translatable("container.spectrum.owned_by_player", this.ownerName)); } else { - return new TranslatableText("block.spectrum.ender_dropper"); + return Text.translatable("block.spectrum.ender_dropper"); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderHopperBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderHopperBlock.java index 9cfec930a3..684fc43a4f 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderHopperBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderHopperBlock.java @@ -16,7 +16,7 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.stat.Stats; import net.minecraft.state.StateManager; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.ItemScatterer; @@ -139,7 +139,7 @@ public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEnt player.incrementStat(Stats.OPEN_ENDERCHEST); PiglinBrain.onGuardedBlockInteracted(player, true); } else { - player.sendMessage(new TranslatableText("block.spectrum.ender_hopper_with_owner", enderHopperBlockEntity.getOwnerName()), false); + player.sendMessage(Text.translatable("block.spectrum.ender_hopper_with_owner", enderHopperBlockEntity.getOwnerName()), false); } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderHopperBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderHopperBlockEntity.java index 2c1ae4cb57..f7fbb095ee 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderHopperBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderHopperBlockEntity.java @@ -15,7 +15,6 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.function.BooleanBiFunction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -171,9 +170,9 @@ private static Inventory getInputInventory(World world, EnderHopperBlockEntity e protected Text getContainerName() { if (hasOwner()) { - return new TranslatableText("block.spectrum.ender_hopper").append(new TranslatableText("container.spectrum.owned_by_player", this.ownerName)); + return Text.translatable("block.spectrum.ender_hopper").append(Text.translatable("container.spectrum.owned_by_player", this.ownerName)); } else { - return new TranslatableText("block.spectrum.ender_hopper"); + return Text.translatable("block.spectrum.ender_hopper"); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/energy/ColorPickerBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/energy/ColorPickerBlock.java index cd6b1dfb6e..ed745faf55 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/energy/ColorPickerBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/energy/ColorPickerBlock.java @@ -10,7 +10,6 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; @@ -39,7 +38,7 @@ public BlockRenderType getRenderType(BlockState state) { @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.color_picker.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("block.spectrum.color_picker.tooltip").formatted(Formatting.GRAY)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/energy/ColorPickerBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/energy/ColorPickerBlockEntity.java index 6a894ac5f6..e4ab4a22dd 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/energy/ColorPickerBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/energy/ColorPickerBlockEntity.java @@ -34,7 +34,6 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; @@ -125,7 +124,7 @@ protected void writeNbt(NbtCompound nbt) { @Override protected Text getContainerName() { - return new TranslatableText("block.spectrum.color_picker"); + return Text.translatable("block.spectrum.color_picker"); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlock.java index d1df2515a1..4f52f4fb5a 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlock.java @@ -14,7 +14,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; @@ -43,7 +42,7 @@ public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.crystal_apothecary.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("block.spectrum.crystal_apothecary.tooltip").formatted(Formatting.GRAY)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java index 8368db9899..7447f95f20 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java @@ -32,7 +32,6 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.state.property.Properties; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Pair; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; @@ -45,7 +44,12 @@ import net.minecraft.world.event.GameEvent; import net.minecraft.world.event.listener.GameEventListener; +import net.minecraft.util.math.random.Random; + import java.util.*; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; public class CrystalApothecaryBlockEntity extends LootableContainerBlockEntity implements PlayerOwnedWithName, BlockPosEventQueue.Callback { @@ -160,9 +164,9 @@ public static int countValidGemstoneClusterBlocksAroundBlockPos(World world, Blo protected Text getContainerName() { if (hasOwner()) { - return new TranslatableText("block.spectrum.crystal_apothecary").append(new TranslatableText("container.spectrum.owned_by_player", this.ownerName)); + return Text.translatable("block.spectrum.crystal_apothecary").append(Text.translatable("container.spectrum.owned_by_player", this.ownerName)); } else { - return new TranslatableText("block.spectrum.crystal_apothecary"); + return Text.translatable("block.spectrum.crystal_apothecary"); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/energy/InkDuctBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/energy/InkDuctBlock.java index ddd77ff52f..41b7cfd632 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/energy/InkDuctBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/energy/InkDuctBlock.java @@ -8,7 +8,6 @@ import net.minecraft.state.property.DirectionProperty; import net.minecraft.state.property.Properties; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -52,7 +51,7 @@ protected void appendProperties(StateManager.Builder builder) @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.ink_duct.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("block.spectrum.ink_duct.tooltip").formatted(Formatting.GRAY)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/energy/InkwellBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/energy/InkwellBlock.java index f718581b86..0ff811c23c 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/energy/InkwellBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/energy/InkwellBlock.java @@ -8,7 +8,6 @@ import net.minecraft.state.property.DirectionProperty; import net.minecraft.state.property.Properties; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -52,7 +51,7 @@ protected void appendProperties(StateManager.Builder builder) @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.inkwell.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("block.spectrum.inkwell.tooltip").formatted(Formatting.GRAY)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/fluid/LiquidCrystalFluid.java b/src/main/java/de/dafuqs/spectrum/blocks/fluid/LiquidCrystalFluid.java index ab1d5934d8..7948b5faf8 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/fluid/LiquidCrystalFluid.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/fluid/LiquidCrystalFluid.java @@ -22,7 +22,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldAccess; -import java.util.Random; +import net.minecraft.util.math.random.Random; public abstract class LiquidCrystalFluid extends SpectrumFluid { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/fluid/LiquidCrystalFluidBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/fluid/LiquidCrystalFluidBlock.java index b098632661..98657ec6af 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/fluid/LiquidCrystalFluidBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/fluid/LiquidCrystalFluidBlock.java @@ -20,7 +20,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldAccess; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class LiquidCrystalFluidBlock extends FluidBlock { @@ -95,7 +95,7 @@ private boolean receiveNeighborFluids(World world, BlockPos pos, BlockState stat block = SpectrumBlocks.BLAZING_CRYSTAL; } else { // blackstone in the nether, deepslate everywhere else - if (world.getDimension().isUltrawarm()) { + if (world.getDimension().ultrawarm()) { block = Blocks.BLACKSTONE; } else { block = Blocks.COBBLED_DEEPSLATE; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluid.java b/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluid.java index 929a0e3d7f..712c8f1840 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluid.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluid.java @@ -21,7 +21,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldView; -import java.util.Random; +import net.minecraft.util.math.random.Random; public abstract class MidnightSolutionFluid extends SpectrumFluid { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluidBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluidBlock.java index 048f05d328..bf80825c67 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluidBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluidBlock.java @@ -43,7 +43,7 @@ import java.util.Collections; import java.util.Map; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class MidnightSolutionFluidBlock extends FluidBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/fluid/MudFluid.java b/src/main/java/de/dafuqs/spectrum/blocks/fluid/MudFluid.java index 34b03886b5..472aa8fefb 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/fluid/MudFluid.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/fluid/MudFluid.java @@ -19,7 +19,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldView; -import java.util.Random; +import net.minecraft.util.math.random.Random; public abstract class MudFluid extends SpectrumFluid { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/fluid/MudFluidBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/fluid/MudFluidBlock.java index 3a80d87ab6..8fd55259b1 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/fluid/MudFluidBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/fluid/MudFluidBlock.java @@ -19,7 +19,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldAccess; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class MudFluidBlock extends FluidBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlock.java index 17c1014999..b997669464 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlock.java @@ -29,7 +29,7 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.state.StateManager; import net.minecraft.state.property.IntProperty; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.*; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; @@ -93,7 +93,7 @@ private static boolean verifyStructure(World world, BlockPos blockPos, @Nullable if (currentMultiBlock == multiblock) { PatchouliAPI.get().clearMultiblock(); } else { - PatchouliAPI.get().showMultiblock(multiblock, new TranslatableText("multiblock.spectrum.fusion_shrine.structure"), blockPos.down(2), BlockRotation.NONE); + PatchouliAPI.get().showMultiblock(multiblock, Text.translatable("multiblock.spectrum.fusion_shrine.structure"), blockPos.down(2), BlockRotation.NONE); } } else { scatterContents(world, blockPos); diff --git a/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlockEntity.java index b4504f3c9e..5be33aa970 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlockEntity.java @@ -49,7 +49,7 @@ import java.util.Map; import java.util.Optional; -import java.util.Random; +import net.minecraft.util.math.random.Random; import java.util.UUID; public class FusionShrineBlockEntity extends BlockEntity implements RecipeInputProvider, PlayerOwned, Upgradeable { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/gemstone/SpectrumBuddingBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/gemstone/SpectrumBuddingBlock.java index f71be706c6..4878212860 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/gemstone/SpectrumBuddingBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/gemstone/SpectrumBuddingBlock.java @@ -12,7 +12,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class SpectrumBuddingBlock extends BuddingAmethystBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/gravity/FloatBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/gravity/FloatBlock.java index 3241ae129f..ff9b3f0bb0 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/gravity/FloatBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/gravity/FloatBlock.java @@ -9,7 +9,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldAccess; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class FloatBlock extends FallingBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/GerminatedJadeVineSeedsItem.java b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/GerminatedJadeVineSeedsItem.java index 42444f7319..dd9e7a7c70 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/GerminatedJadeVineSeedsItem.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/GerminatedJadeVineSeedsItem.java @@ -13,7 +13,6 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.ActionResult; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; @@ -70,9 +69,9 @@ public ActionResult useOnBlock(ItemUsageContext context) { public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { super.appendTooltip(itemStack, world, tooltip, tooltipContext); - tooltip.add(new TranslatableText("item.spectrum.germinated_jade_vine_seeds.tooltip")); - tooltip.add(new TranslatableText("item.spectrum.germinated_jade_vine_seeds.tooltip2")); - tooltip.add(new TranslatableText("item.spectrum.germinated_jade_vine_seeds.tooltip3")); + tooltip.add(Text.translatable("item.spectrum.germinated_jade_vine_seeds.tooltip")); + tooltip.add(Text.translatable("item.spectrum.germinated_jade_vine_seeds.tooltip2")); + tooltip.add(Text.translatable("item.spectrum.germinated_jade_vine_seeds.tooltip3")); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeJellyItem.java b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeJellyItem.java index 4fb2775579..db2ad8f209 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeJellyItem.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeJellyItem.java @@ -7,7 +7,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.world.World; @@ -24,7 +23,7 @@ public JadeJellyItem(Settings settings) { @Override public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { super.appendTooltip(itemStack, world, tooltip, tooltipContext); - tooltip.add(new TranslatableText("item.spectrum.jade_jelly.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.jade_jelly.tooltip").formatted(Formatting.GRAY)); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVine.java b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVine.java index 9ce26adfb2..064ec19147 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVine.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVine.java @@ -16,7 +16,7 @@ import net.minecraft.world.World; import org.jetbrains.annotations.NotNull; -import java.util.Random; +import net.minecraft.util.math.random.Random; public interface JadeVine { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineBulbBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineBulbBlock.java index a2ffa57ead..ba4bcaf4ba 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineBulbBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineBulbBlock.java @@ -18,7 +18,7 @@ import net.minecraft.world.WorldView; import org.jetbrains.annotations.NotNull; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class JadeVineBulbBlock extends Block implements JadeVine { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVinePlantBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVinePlantBlock.java index 6c5e2cd318..60c4462e12 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVinePlantBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVinePlantBlock.java @@ -39,7 +39,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class JadeVinePlantBlock extends Block implements JadeVine { @@ -113,7 +113,7 @@ public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEnt JadeVinesGrowthStage growthStage = JadeVinesGrowthStage.fromAge(state.get(AGE)); if (growthStage.isFullyGrown()) { - for (ItemStack handStack : player.getItemsHand()) { + for (ItemStack handStack : player.getHandItems()) { if (handStack.isOf(Items.GLASS_BOTTLE)) { if (world.isClient) { return ActionResult.SUCCESS; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineRootsBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineRootsBlock.java index a9206bf80b..00061ad7fb 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineRootsBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineRootsBlock.java @@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class JadeVineRootsBlock extends BlockWithEntity implements JadeVine { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineRootsBlockEntityRenderer.java b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineRootsBlockEntityRenderer.java index 16ccb6cc4c..3c4d1953d6 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineRootsBlockEntityRenderer.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineRootsBlockEntityRenderer.java @@ -13,7 +13,7 @@ import net.minecraft.client.render.block.entity.BlockEntityRendererFactory; import net.minecraft.client.util.math.MatrixStack; -import java.util.Random; +import net.minecraft.util.math.random.Random; @Environment(EnvType.CLIENT) public class JadeVineRootsBlockEntityRenderer implements BlockEntityRenderer { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/lava_sponge/WetLavaSpongeBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/lava_sponge/WetLavaSpongeBlock.java index 79c5865ada..c429fd9f63 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/lava_sponge/WetLavaSpongeBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/lava_sponge/WetLavaSpongeBlock.java @@ -12,7 +12,7 @@ import net.minecraft.world.GameRules; import net.minecraft.world.World; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class WetLavaSpongeBlock extends WetSpongeBlock { @@ -23,7 +23,7 @@ public WetLavaSpongeBlock(Settings settings) { // faster than fire (30+ 0-10) // even more in the nether private static int getRandomTickTime(World world) { - if (world.getDimension().isUltrawarm()) { + if (world.getDimension().ultrawarm()) { return 10 + world.random.nextInt(5); } else { return 20 + world.random.nextInt(10); diff --git a/src/main/java/de/dafuqs/spectrum/blocks/lava_sponge/WetLavaSpongeItem.java b/src/main/java/de/dafuqs/spectrum/blocks/lava_sponge/WetLavaSpongeItem.java index 1b34d82e3a..bd29f1ea0f 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/lava_sponge/WetLavaSpongeItem.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/lava_sponge/WetLavaSpongeItem.java @@ -9,13 +9,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.world.GameRules; import net.minecraft.world.World; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class WetLavaSpongeItem extends BlockItem { @@ -56,7 +55,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { super.appendTooltip(itemStack, world, tooltip, tooltipContext); - tooltip.add(new TranslatableText("item.spectrum.wet_lava_sponge.tooltip")); + tooltip.add(Text.translatable("item.spectrum.wet_lava_sponge.tooltip")); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/memory/MemoryBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/memory/MemoryBlock.java index 4b5d0e0e01..599b1c0c4c 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/memory/MemoryBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/memory/MemoryBlock.java @@ -23,7 +23,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class MemoryBlock extends BlockWithEntity implements Waterloggable { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/memory/MemoryBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/memory/MemoryBlockEntity.java index 897efc2d7c..5c08ce0098 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/memory/MemoryBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/memory/MemoryBlockEntity.java @@ -16,9 +16,9 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.SpawnReason; import net.minecraft.entity.mob.MobEntity; +import net.minecraft.entity.passive.AbstractHorseEntity; import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.entity.passive.FoxEntity; -import net.minecraft.entity.passive.HorseBaseEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.SpawnEggItem; @@ -143,7 +143,7 @@ public void manifest(@NotNull ServerWorld world, BlockPos blockPos) { hatchedMobEntity.playSpawnEffects(); } if (this.ownerUUID != null) { - if (hatchedEntity.get() instanceof HorseBaseEntity horseBaseEntity) { + if (hatchedEntity.get() instanceof AbstractHorseEntity horseBaseEntity) { horseBaseEntity.setOwnerUuid(this.ownerUUID); } else if (hatchedEntity.get() instanceof FoxEntity foxEntity) { ((FoxEntityAccessor) foxEntity).invokeAddTrustedUuid(this.ownerUUID); diff --git a/src/main/java/de/dafuqs/spectrum/blocks/memory/MemoryItem.java b/src/main/java/de/dafuqs/spectrum/blocks/memory/MemoryItem.java index c4de6a3d49..0332754b56 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/memory/MemoryItem.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/memory/MemoryItem.java @@ -9,7 +9,6 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Pair; import net.minecraft.world.World; @@ -118,25 +117,25 @@ public void appendTooltip(ItemStack stack, @Nullable World world, List too if (entityType.isPresent()) { if (isEntityTypeUnrecognizable(nbt)) { - tooltip.add(new TranslatableText("item.spectrum.memory.tooltip.unrecognizable_entity_type").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.memory.tooltip.unrecognizable_entity_type").formatted(Formatting.GRAY)); } else { - tooltip.add(new TranslatableText("item.spectrum.memory.tooltip.entity_type", entityType.get().getName())); + tooltip.add(Text.translatable("item.spectrum.memory.tooltip.entity_type", entityType.get().getName())); } } else { - tooltip.add(new TranslatableText("item.spectrum.memory.tooltip.unset_entity_type").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.memory.tooltip.unset_entity_type").formatted(Formatting.GRAY)); return; } if (ticksToHatch <= 0) { - tooltip.add(new TranslatableText("item.spectrum.memory.tooltip.does_not_manifest").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.memory.tooltip.does_not_manifest").formatted(Formatting.GRAY)); } else if (ticksToHatch > 100) { - tooltip.add(new TranslatableText("item.spectrum.memory.tooltip.extra_long_time_to_manifest").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.memory.tooltip.extra_long_time_to_manifest").formatted(Formatting.GRAY)); } else if (ticksToHatch > 20) { - tooltip.add(new TranslatableText("item.spectrum.memory.tooltip.long_time_to_manifest").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.memory.tooltip.long_time_to_manifest").formatted(Formatting.GRAY)); } else if (ticksToHatch > 5) { - tooltip.add(new TranslatableText("item.spectrum.memory.tooltip.medium_time_to_manifest").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.memory.tooltip.medium_time_to_manifest").formatted(Formatting.GRAY)); } else { - tooltip.add(new TranslatableText("item.spectrum.memory.tooltip.short_time_to_manifest").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.memory.tooltip.short_time_to_manifest").formatted(Formatting.GRAY)); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/AoEStatusEffectMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/AoEStatusEffectMobBlock.java index 04b44ea61d..94519baee7 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/AoEStatusEffectMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/AoEStatusEffectMobBlock.java @@ -10,7 +10,6 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.Direction; @@ -38,7 +37,7 @@ public AoEStatusEffectMobBlock(Settings settings, ParticleEffect particleEffect, @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.echolocating_mob_block.tooltip", range)); + tooltip.add(Text.translatable("block.spectrum.echolocating_mob_block.tooltip", range)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/BonemealingMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/BonemealingMobBlock.java index af669b6041..7ca98dc726 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/BonemealingMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/BonemealingMobBlock.java @@ -8,7 +8,6 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; @@ -25,7 +24,7 @@ public BonemealingMobBlock(Settings settings, ParticleEffect particleEffect) { @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.bonemealing_mob_block.tooltip")); + tooltip.add(Text.translatable("block.spectrum.bonemealing_mob_block.tooltip")); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/EntitySummoningMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/EntitySummoningMobBlock.java index 2809a380fc..7b33ed76ff 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/EntitySummoningMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/EntitySummoningMobBlock.java @@ -10,7 +10,6 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; @@ -30,7 +29,7 @@ public EntitySummoningMobBlock(Settings settings, ParticleEffect particleEffect, @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.entity_summoning_mob_block.tooltip", entityType.getName())); + tooltip.add(Text.translatable("block.spectrum.entity_summoning_mob_block.tooltip", entityType.getName())); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/ExplosionMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/ExplosionMobBlock.java index 1832a803b4..4c7638965f 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/ExplosionMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/ExplosionMobBlock.java @@ -8,7 +8,6 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; @@ -34,7 +33,7 @@ public ExplosionMobBlock(Settings settings, ParticleEffect particleEffect, float @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.explosion_mob_block.tooltip", power)); + tooltip.add(Text.translatable("block.spectrum.explosion_mob_block.tooltip", power)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FallDamageNegatingMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FallDamageNegatingMobBlock.java index 22c7244f81..8b1541acf4 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FallDamageNegatingMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FallDamageNegatingMobBlock.java @@ -8,7 +8,6 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; @@ -38,8 +37,8 @@ public boolean trigger(ServerWorld world, BlockPos blockPos, BlockState state, @ @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.fall_damage_negating_mob_block.tooltip")); - tooltip.add(new TranslatableText("block.spectrum.fall_damage_negating_mob_block.tooltip2")); + tooltip.add(Text.translatable("block.spectrum.fall_damage_negating_mob_block.tooltip")); + tooltip.add(Text.translatable("block.spectrum.fall_damage_negating_mob_block.tooltip2")); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FeedingMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FeedingMobBlock.java index 7fa64464ce..86c598b258 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FeedingMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FeedingMobBlock.java @@ -9,7 +9,6 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.Direction; @@ -33,7 +32,7 @@ public FeedingMobBlock(Settings settings, ParticleEffect particleEffect, int ran @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.feeding_mob_block.tooltip", this.range)); + tooltip.add(Text.translatable("block.spectrum.feeding_mob_block.tooltip", this.range)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FirestarterMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FirestarterMobBlock.java index 6325d8a35d..95c8c0dad7 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FirestarterMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FirestarterMobBlock.java @@ -17,7 +17,6 @@ import net.minecraft.state.property.Properties; import net.minecraft.tag.BlockTags; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Pair; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; @@ -112,7 +111,7 @@ public boolean trigger(ServerWorld world, BlockPos blockPos, BlockState state, @ @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.firestarter_mob_block.tooltip")); + tooltip.add(Text.translatable("block.spectrum.firestarter_mob_block.tooltip")); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FreezingMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FreezingMobBlock.java index e31ab2460f..ac29c18ffe 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FreezingMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FreezingMobBlock.java @@ -10,7 +10,6 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Pair; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -81,7 +80,7 @@ public boolean trigger(ServerWorld world, BlockPos blockPos, BlockState state, @ @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.freezing_mob_block.tooltip")); + tooltip.add(Text.translatable("block.spectrum.freezing_mob_block.tooltip")); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/InsomniaMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/InsomniaMobBlock.java index ec42547797..5026e703fb 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/InsomniaMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/InsomniaMobBlock.java @@ -15,7 +15,6 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.stat.Stats; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.math.MathHelper; @@ -23,7 +22,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class InsomniaMobBlock extends MobBlock { @@ -75,7 +74,7 @@ public int getCooldownTicks() { @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.insomnia_mob_block.tooltip")); + tooltip.add(Text.translatable("block.spectrum.insomnia_mob_block.tooltip")); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/KnockbackMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/KnockbackMobBlock.java index 0a051ea269..f8f54cf92f 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/KnockbackMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/KnockbackMobBlock.java @@ -7,7 +7,6 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; @@ -63,7 +62,7 @@ public boolean trigger(ServerWorld world, BlockPos blockPos, BlockState state, @ @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.knockback_mob_block.tooltip")); + tooltip.add(Text.translatable("block.spectrum.knockback_mob_block.tooltip")); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/LineTeleportingMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/LineTeleportingMobBlock.java index f4dcd2591d..c000a71501 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/LineTeleportingMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/LineTeleportingMobBlock.java @@ -7,7 +7,6 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; @@ -52,8 +51,8 @@ public static Optional searchForBlock(World world, BlockPos pos, Block @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.line_teleporting_mob_block.tooltip", range)); - tooltip.add(new TranslatableText("block.spectrum.line_teleporting_mob_block.tooltip2", range)); + tooltip.add(Text.translatable("block.spectrum.line_teleporting_mob_block.tooltip", range)); + tooltip.add(Text.translatable("block.spectrum.line_teleporting_mob_block.tooltip2", range)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/MilkingMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/MilkingMobBlock.java index 56551bb59a..66989a7a92 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/MilkingMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/MilkingMobBlock.java @@ -19,7 +19,6 @@ import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.Direction; @@ -122,8 +121,8 @@ public boolean findAndDecreaseClosestItemEntityOfItem(@NotNull ServerWorld world @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.milking_mob_block.tooltip", this.milkingRange)); - tooltip.add(new TranslatableText("block.spectrum.milking_mob_block.tooltip2")); + tooltip.add(Text.translatable("block.spectrum.milking_mob_block.tooltip", this.milkingRange)); + tooltip.add(Text.translatable("block.spectrum.milking_mob_block.tooltip2")); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/MobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/MobBlock.java index b858637bf2..85149927c1 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/MobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/MobBlock.java @@ -14,7 +14,6 @@ import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; @@ -25,7 +24,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; public abstract class MobBlock extends Block { @@ -46,7 +45,7 @@ protected void appendProperties(StateManager.Builder builder) @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.mob_block.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("block.spectrum.mob_block.tooltip").formatted(Formatting.GRAY)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/PiglinTradeMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/PiglinTradeMobBlock.java index 1c23de5190..53429b9b40 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/PiglinTradeMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/PiglinTradeMobBlock.java @@ -17,7 +17,6 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPointerImpl; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -62,7 +61,7 @@ public boolean trigger(ServerWorld world, BlockPos blockPos, BlockState state, @ return true; } } else if (entity instanceof PlayerEntity player) { - for (ItemStack handStack : player.getItemsHand()) { + for (ItemStack handStack : player.getHandItems()) { if (handStack.isOf(PiglinBrain.BARTERING_ITEM)) { handStack.decrement(1); @@ -86,7 +85,7 @@ private void outputLoot(ServerWorld world, BlockPos blockPos, Direction side) { @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.piglin_trade_mob_block.tooltip")); + tooltip.add(Text.translatable("block.spectrum.piglin_trade_mob_block.tooltip")); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/ProjectileMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/ProjectileMobBlock.java index bdaf907c90..f314685edc 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/ProjectileMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/ProjectileMobBlock.java @@ -13,7 +13,6 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvent; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.*; import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; @@ -41,7 +40,7 @@ public ProjectileMobBlock(Settings settings, ParticleEffect particleEffect, Enti @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.projectile_mob_block.tooltip", this.entityType.getName())); + tooltip.add(Text.translatable("block.spectrum.projectile_mob_block.tooltip", this.entityType.getName())); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/RandomTeleportingMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/RandomTeleportingMobBlock.java index 9917a6e0e7..46d2c8eb7a 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/RandomTeleportingMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/RandomTeleportingMobBlock.java @@ -11,14 +11,13 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class RandomTeleportingMobBlock extends MobBlock { @@ -74,7 +73,7 @@ public static boolean teleportTo(ServerWorld world, Entity entity, BlockPos bloc @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.random_teleporting_mob_block.tooltip", horizontalRange)); + tooltip.add(Text.translatable("block.spectrum.random_teleporting_mob_block.tooltip", horizontalRange)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/ShearingMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/ShearingMobBlock.java index 2a65ee08d8..c68b1c80ed 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/ShearingMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/ShearingMobBlock.java @@ -10,7 +10,6 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.Direction; @@ -32,7 +31,7 @@ public ShearingMobBlock(Settings settings, ParticleEffect particleEffect, int ra @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.shearing_mob_block.tooltip")); + tooltip.add(Text.translatable("block.spectrum.shearing_mob_block.tooltip")); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/SilverfishInsertingMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/SilverfishInsertingMobBlock.java index 86170b228b..ec0cfe03bd 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/SilverfishInsertingMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/SilverfishInsertingMobBlock.java @@ -9,7 +9,6 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; @@ -27,7 +26,7 @@ public SilverfishInsertingMobBlock(Settings settings, ParticleEffect particleEff @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.silverfish_inserting_mob_block.tooltip")); + tooltip.add(Text.translatable("block.spectrum.silverfish_inserting_mob_block.tooltip")); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/SlimeSizingMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/SlimeSizingMobBlock.java index 95ccd1c48b..ca5e9d63a7 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/SlimeSizingMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/SlimeSizingMobBlock.java @@ -12,7 +12,6 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.Direction; @@ -36,7 +35,7 @@ public SlimeSizingMobBlock(Settings settings, ParticleEffect particleEffect, int @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.slime_sizing_mob_block.tooltip")); + tooltip.add(Text.translatable("block.spectrum.slime_sizing_mob_block.tooltip")); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/StatusEffectMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/StatusEffectMobBlock.java index 4f9c931565..87febf63fa 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/StatusEffectMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/StatusEffectMobBlock.java @@ -11,7 +11,6 @@ import net.minecraft.particle.ParticleEffect; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; @@ -35,7 +34,7 @@ public StatusEffectMobBlock(Settings settings, ParticleEffect particleEffect, St @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.potion_effect_mob_block.tooltip", this.statusEffect.getName())); + tooltip.add(Text.translatable("block.spectrum.potion_effect_mob_block.tooltip", this.statusEffect.getName())); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_head/SpectrumSkullBlockItem.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_head/SpectrumSkullBlockItem.java index 62750ba4df..462efecc71 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_head/SpectrumSkullBlockItem.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_head/SpectrumSkullBlockItem.java @@ -9,7 +9,6 @@ import net.minecraft.item.Items; import net.minecraft.item.WallStandingBlockItem; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.world.World; import java.util.List; @@ -53,7 +52,7 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, artistCached = getHeadArtist(SpectrumBlocks.getSkullType(this.getBlock())); } if (!artistCached.equals("")) { - tooltip.add(new TranslatableText("item.spectrum.mob_head.tooltip.designer", artistCached)); + tooltip.add(Text.translatable("item.spectrum.mob_head.tooltip.designer", artistCached)); } } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/particle_spawner/CreativeParticleSpawnerBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/particle_spawner/CreativeParticleSpawnerBlock.java index 3ef277be2c..7c7d295ecc 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/particle_spawner/CreativeParticleSpawnerBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/particle_spawner/CreativeParticleSpawnerBlock.java @@ -9,7 +9,6 @@ import net.minecraft.client.item.TooltipContext; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.world.BlockView; import net.minecraft.world.World; @@ -27,7 +26,7 @@ public CreativeParticleSpawnerBlock(Settings settings) { @Override public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { super.appendTooltip(stack, world, tooltip, options); - tooltip.add(new TranslatableText("block.spectrum.creative_particle_spawner.tooltip")); + tooltip.add(Text.translatable("block.spectrum.creative_particle_spawner.tooltip")); } @Nullable diff --git a/src/main/java/de/dafuqs/spectrum/blocks/particle_spawner/ParticleSpawnerBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/particle_spawner/ParticleSpawnerBlockEntity.java index 75bd63dd4a..a9d4ce09b2 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/particle_spawner/ParticleSpawnerBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/particle_spawner/ParticleSpawnerBlockEntity.java @@ -22,7 +22,6 @@ import net.minecraft.screen.ScreenHandler; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3f; @@ -32,7 +31,7 @@ import java.util.ArrayList; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class ParticleSpawnerBlockEntity extends BlockEntity implements ExtendedScreenHandlerFactory { @@ -192,7 +191,7 @@ public ScreenHandler createMenu(int syncId, PlayerInventory inv, PlayerEntity pl @Override public Text getDisplayName() { - return new TranslatableText("block.spectrum.particle_spawner"); + return Text.translatable("block.spectrum.particle_spawner"); } public void writeSettings(@NotNull PacketByteBuf packetByteBuf) { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/nodes/PastelNetworkNodeBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/nodes/PastelNetworkNodeBlock.java index 03b5c474bf..18134fcb8a 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/nodes/PastelNetworkNodeBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/nodes/PastelNetworkNodeBlock.java @@ -14,7 +14,6 @@ import net.minecraft.state.property.DirectionProperty; import net.minecraft.state.property.Properties; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -24,7 +23,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class PastelNetworkNodeBlock extends FacingBlock implements BlockEntityProvider { @@ -36,12 +35,12 @@ public class PastelNetworkNodeBlock extends FacingBlock implements BlockEntityPr protected static final VoxelShape SHAPE_SOUTH = Block.createCuboidShape(4.0D, 4.0D, 0.0D, 12.0D, 12.0D, 8.0D); protected static final VoxelShape SHAPE_EAST = Block.createCuboidShape(0.0D, 4.0D, 4.0D, 8.0D, 12.0D, 12.0D); protected static final VoxelShape SHAPE_WEST = Block.createCuboidShape(8.0D, 4.0D, 4.0D, 16.0D, 12.0D, 12.0D); - protected static final Text rangeTooltipText = new TranslatableText("block.spectrum.pastel_network_nodes.tooltip.range").formatted(Formatting.GRAY); + protected static final Text rangeTooltipText = Text.translatable("block.spectrum.pastel_network_nodes.tooltip.range").formatted(Formatting.GRAY); protected final Text nodeTypeTooltipText; public PastelNetworkNodeBlock(Settings settings, String tooltipName) { super(settings); - this.nodeTypeTooltipText = new TranslatableText(tooltipName); + this.nodeTypeTooltipText = Text.translatable(tooltipName); } @Nullable diff --git a/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlock.java index ad6f346040..fd2490cba5 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlock.java @@ -43,7 +43,7 @@ import vazkii.patchouli.api.IMultiblock; import vazkii.patchouli.api.PatchouliAPI; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class PedestalBlock extends BlockWithEntity implements RedstonePoweredBlock, PaintbrushTriggered { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockEntity.java index 8b72235f95..d5645fda65 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockEntity.java @@ -1,5 +1,6 @@ package de.dafuqs.spectrum.blocks.pedestal; +import java.util.*; import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.blocks.MultiblockCrafter; import de.dafuqs.spectrum.blocks.upgrade.Upgradeable; @@ -49,7 +50,6 @@ import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.BlockRotation; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; @@ -61,7 +61,7 @@ import org.jetbrains.annotations.Nullable; import vazkii.patchouli.api.IMultiblock; -import java.util.*; +import net.minecraft.util.math.random.Random; public class PedestalBlockEntity extends LockableContainerBlockEntity implements MultiblockCrafter, SidedInventory, ExtendedScreenHandlerFactory { @@ -487,7 +487,7 @@ public void setVariant(PedestalVariant pedestalVariant) { @Override public Text getContainerName() { - return new TranslatableText("block.spectrum.pedestal"); + return Text.translatable("block.spectrum.pedestal"); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockItem.java b/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockItem.java index 19b2482258..2bf37246fe 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockItem.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockItem.java @@ -5,7 +5,6 @@ import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.world.World; import java.util.List; @@ -18,7 +17,7 @@ public class PedestalBlockItem extends BlockItem { public PedestalBlockItem(Block block, Settings settings, PedestalVariant pedestalVariant, String tooltipTextString) { super(block, settings); this.pedestalVariant = pedestalVariant; - this.tooltipText = new TranslatableText(tooltipTextString); + this.tooltipText = Text.translatable(tooltipTextString); } public PedestalVariant getVariant() { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/potion_workshop/PotionWorkshopBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/potion_workshop/PotionWorkshopBlockEntity.java index 8207d98628..032f413d7e 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/potion_workshop/PotionWorkshopBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/potion_workshop/PotionWorkshopBlockEntity.java @@ -37,7 +37,6 @@ import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; @@ -47,6 +46,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import net.minecraft.util.math.random.Random; import java.util.*; public class PotionWorkshopBlockEntity extends BlockEntity implements NamedScreenHandlerFactory, RecipeInputProvider, SidedInventory, PlayerOwned { @@ -560,7 +560,7 @@ public void inventoryChanged() { @Override public Text getDisplayName() { - return new TranslatableText("block.spectrum.potion_workshop"); + return Text.translatable("block.spectrum.potion_workshop"); } @Nullable diff --git a/src/main/java/de/dafuqs/spectrum/blocks/redstone/BlockPlacerBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/redstone/BlockPlacerBlockEntity.java index f69017b4fc..0ee6fa93c1 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/redstone/BlockPlacerBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/redstone/BlockPlacerBlockEntity.java @@ -7,7 +7,6 @@ import net.minecraft.entity.player.PlayerInventory; import net.minecraft.screen.ScreenHandler; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; public class BlockPlacerBlockEntity extends DispenserBlockEntity { @@ -17,7 +16,7 @@ public BlockPlacerBlockEntity(BlockPos pos, BlockState state) { } protected Text getContainerName() { - return new TranslatableText("block.spectrum.block_placer"); + return Text.translatable("block.spectrum.block_placer"); } protected ScreenHandler createScreenHandler(int syncId, PlayerInventory playerInventory) { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/redstone/DetectorBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/redstone/DetectorBlock.java index e254a94020..39f8dfd662 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/redstone/DetectorBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/redstone/DetectorBlock.java @@ -21,7 +21,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; -import java.util.Random; +import net.minecraft.util.math.random.Random; public abstract class DetectorBlock extends Block { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/redstone/PlayerDetectorBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/redstone/PlayerDetectorBlock.java index b063ffc8d2..b626437eab 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/redstone/PlayerDetectorBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/redstone/PlayerDetectorBlock.java @@ -7,7 +7,7 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.hit.BlockHitResult; @@ -41,7 +41,7 @@ public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEnt String ownerName = getOwnerName(world, pos); if (ownerName != null && !ownerName.equals("")) { - player.sendMessage(new TranslatableText("block.spectrum.player_detector").append(new TranslatableText("container.spectrum.owned_by_player", ownerName)), false); + player.sendMessage(Text.translatable("block.spectrum.player_detector").append(Text.translatable("container.spectrum.owned_by_player", ownerName)), false); } return ActionResult.CONSUME; } else { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneCalculatorBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneCalculatorBlock.java index 291fd02270..4312a4b593 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneCalculatorBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneCalculatorBlock.java @@ -16,7 +16,7 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.state.StateManager; import net.minecraft.state.property.EnumProperty; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.StringIdentifiable; @@ -29,7 +29,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class RedstoneCalculatorBlock extends AbstractRedstoneGateBlock implements BlockEntityProvider { @@ -66,7 +66,7 @@ public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEnt if (player instanceof ServerPlayerEntity serverPlayerEntity) { // since this triggers both on server and client side: just send the // message once, client side is enough, since it is pretty irrelevant on the server - serverPlayerEntity.sendMessage(new TranslatableText("block.spectrum.redstone_calculator.mode_set").append(new TranslatableText(newModeState.get(CALCULATION_MODE).localizationString)), false); + serverPlayerEntity.sendMessage(Text.translatable("block.spectrum.redstone_calculator.mode_set").append(Text.translatable(newModeState.get(CALCULATION_MODE).localizationString)), false); } this.updatePowered(world, pos, newModeState); return ActionResult.success(world.isClient); diff --git a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneGravityBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneGravityBlock.java index d01ee7bf7f..9b93d92bd5 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneGravityBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneGravityBlock.java @@ -11,7 +11,7 @@ import net.minecraft.util.math.Direction; import org.jetbrains.annotations.Nullable; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class RedstoneGravityBlock extends FallingBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneTimerBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneTimerBlock.java index 14a155aa1a..e657237740 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneTimerBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneTimerBlock.java @@ -12,7 +12,7 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.state.StateManager; import net.minecraft.state.property.EnumProperty; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.StringIdentifiable; @@ -24,7 +24,7 @@ import net.minecraft.world.World; import org.jetbrains.annotations.NotNull; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class RedstoneTimerBlock extends AbstractRedstoneGateBlock { @@ -101,14 +101,14 @@ public void stepTiming(ServerWorld world, BlockPos pos, ServerPlayerEntity serve if (serverPlayerEntity.isSneaking()) { // toggle inactive time TimingStep newStep = blockState.get(INACTIVE_TIME).next(); - serverPlayerEntity.sendMessage(new TranslatableText("block.spectrum.redstone_timer.setting.inactive").append(new TranslatableText(newStep.localizationString)), false); + serverPlayerEntity.sendMessage(Text.translatable("block.spectrum.redstone_timer.setting.inactive").append(Text.translatable(newStep.localizationString)), false); float pitch = 0.5F + newStep.ordinal() * 0.05F; world.playSound(null, pos, SoundEvents.BLOCK_COMPARATOR_CLICK, SoundCategory.BLOCKS, 0.3F, pitch); world.setBlockState(pos, world.getBlockState(pos).with(INACTIVE_TIME, newStep)); } else { // toggle active time TimingStep newStep = blockState.get(ACTIVE_TIME).next(); - serverPlayerEntity.sendMessage(new TranslatableText("block.spectrum.redstone_timer.setting.active").append(new TranslatableText(newStep.localizationString)), false); + serverPlayerEntity.sendMessage(Text.translatable("block.spectrum.redstone_timer.setting.active").append(Text.translatable(newStep.localizationString)), false); float pitch = 0.5F + newStep.ordinal() * 0.05F; world.playSound(null, pos, SoundEvents.BLOCK_COMPARATOR_CLICK, SoundCategory.BLOCKS, 0.3F, pitch); world.setBlockState(pos, world.getBlockState(pos).with(ACTIVE_TIME, newStep)); diff --git a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlock.java index b07d50f8f4..6233e08093 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlock.java @@ -31,7 +31,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Optional; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class RedstoneWirelessBlock extends AbstractRedstoneGateBlock implements BlockEntityProvider { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/shooting_star/ShootingStarBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/shooting_star/ShootingStarBlock.java index 4d43e23841..85577a1984 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/shooting_star/ShootingStarBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/shooting_star/ShootingStarBlock.java @@ -26,7 +26,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class ShootingStarBlock extends BlockWithEntity { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlock.java index 0658fa74c7..c13fb6e28c 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlock.java @@ -16,7 +16,7 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.*; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; @@ -80,7 +80,7 @@ public static boolean verifyStructure(World world, @NotNull BlockPos blockPos, @ } else { lastBlockRotation = BlockRotation.NONE; } - PatchouliAPI.get().showMultiblock(multiblock, new TranslatableText("multiblock.spectrum.spirit_instiller.structure"), blockPos.down(2).offset(Support.directionFromRotation(lastBlockRotation), 2), lastBlockRotation); + PatchouliAPI.get().showMultiblock(multiblock, Text.translatable("multiblock.spectrum.spirit_instiller.structure"), blockPos.down(2).offset(Support.directionFromRotation(lastBlockRotation), 2), lastBlockRotation); } else { scatterContents(world, blockPos); } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java index da4149d540..0549aab24d 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java @@ -43,6 +43,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import net.minecraft.util.math.random.Random; import java.util.*; public class SpiritInstillerBlockEntity extends BlockEntity implements MultiblockCrafter, Inventory { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/OminousSaplingBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/OminousSaplingBlock.java index 03f6b1a6a2..8c2d3830fb 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/OminousSaplingBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/OminousSaplingBlock.java @@ -20,7 +20,7 @@ import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; -import java.util.Random; +import net.minecraft.util.math.random.Random; import java.util.UUID; public class OminousSaplingBlock extends PlantBlock implements BlockEntityProvider { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/SpiritSallowLeavesBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/SpiritSallowLeavesBlock.java index 1d896914ef..c1390508a6 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/SpiritSallowLeavesBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/SpiritSallowLeavesBlock.java @@ -6,7 +6,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class SpiritSallowLeavesBlock extends LeavesBlock { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/SpiritVinesBodyBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/SpiritVinesBodyBlock.java index 7db47a374e..8a416a073e 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/SpiritVinesBodyBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/SpiritVinesBodyBlock.java @@ -20,7 +20,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class SpiritVinesBodyBlock extends AbstractPlantBlock implements SpiritVines { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/SpiritVinesHeadBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/SpiritVinesHeadBlock.java index 31bfab48f2..22357df38b 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/SpiritVinesHeadBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/SpiritVinesHeadBlock.java @@ -19,7 +19,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class SpiritVinesHeadBlock extends AbstractPlantStemBlock implements SpiritVines { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/WindStrength.java b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/WindStrength.java index c5774561ac..c965725d80 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/WindStrength.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/WindStrength.java @@ -3,7 +3,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.noise.SimplexNoiseSampler; -import net.minecraft.world.gen.random.SimpleRandom; +import net.minecraft.util.math.random.LocalRandom; public class WindStrength { @@ -17,9 +17,9 @@ public class WindStrength { public Vec3d getWindStrength(long tick) { if (samplerX == null) { - samplerX = new SimplexNoiseSampler(new SimpleRandom(0)); - samplerY = new SimplexNoiseSampler(new SimpleRandom(1)); - samplerZ = new SimplexNoiseSampler(new SimpleRandom(2)); + samplerX = new SimplexNoiseSampler(new LocalRandom(0)); + samplerY = new SimplexNoiseSampler(new LocalRandom(1)); + samplerZ = new SimplexNoiseSampler(new LocalRandom(2)); } if (tick != cachedTick) { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/structure/TreasureChestBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/structure/TreasureChestBlockEntity.java index bc7061be74..17a70fa612 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/structure/TreasureChestBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/structure/TreasureChestBlockEntity.java @@ -23,7 +23,6 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; @@ -76,7 +75,7 @@ public void writeNbt(NbtCompound tag) { @Override protected Text getContainerName() { - return new TranslatableText("block.spectrum.treasure_chest"); + return Text.translatable("block.spectrum.treasure_chest"); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/upgrade/UpgradeBlockItem.java b/src/main/java/de/dafuqs/spectrum/blocks/upgrade/UpgradeBlockItem.java index be0883187c..4db2791538 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/upgrade/UpgradeBlockItem.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/upgrade/UpgradeBlockItem.java @@ -5,7 +5,6 @@ import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.world.World; @@ -24,8 +23,8 @@ public UpgradeBlockItem(Block block, Settings settings, String tooltipString) { public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { super.appendTooltip(itemStack, world, tooltip, tooltipContext); - tooltip.add(new TranslatableText("item.spectrum." + this.tooltipString + ".tooltip").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.upgrade.tooltip_increase").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum." + this.tooltipString + ".tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.upgrade.tooltip_increase").formatted(Formatting.GRAY)); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/upgrade/Upgradeable.java b/src/main/java/de/dafuqs/spectrum/blocks/upgrade/Upgradeable.java index 3322787469..5747208a4d 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/upgrade/Upgradeable.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/upgrade/Upgradeable.java @@ -14,6 +14,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import net.minecraft.util.math.random.Random; + import java.util.*; public interface Upgradeable { diff --git a/src/main/java/de/dafuqs/spectrum/commands/ProgressionSanityCommand.java b/src/main/java/de/dafuqs/spectrum/commands/ProgressionSanityCommand.java index 926edef538..3c9ef7838d 100644 --- a/src/main/java/de/dafuqs/spectrum/commands/ProgressionSanityCommand.java +++ b/src/main/java/de/dafuqs/spectrum/commands/ProgressionSanityCommand.java @@ -39,7 +39,7 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundEvent; import net.minecraft.tag.BlockTags; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; @@ -322,7 +322,7 @@ private static int execute(ServerCommandSource source) { } if (source.getEntity() instanceof ServerPlayerEntity serverPlayerEntity) { - serverPlayerEntity.sendMessage(new TranslatableText("commands.spectrum.progression_sanity.success"), false); + serverPlayerEntity.sendMessage(Text.translatable("commands.spectrum.progression_sanity.success"), false); } return 0; diff --git a/src/main/java/de/dafuqs/spectrum/commands/ShootingStarCommand.java b/src/main/java/de/dafuqs/spectrum/commands/ShootingStarCommand.java index 3248341394..8dcb9a3ee7 100644 --- a/src/main/java/de/dafuqs/spectrum/commands/ShootingStarCommand.java +++ b/src/main/java/de/dafuqs/spectrum/commands/ShootingStarCommand.java @@ -8,7 +8,7 @@ import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import java.util.Collection; @@ -30,7 +30,7 @@ private static int execute(ServerCommandSource source, Collection setupDisplay(AnvilCrushingDisplay display, Rectangle bounds) // xp text widgets.add(Widgets.createLabel(new Point(startPoint.x + 84, startPoint.y + 48), - new TranslatableText("container.spectrum.rei.anvil_crushing.plus_xp", display.experience) + Text.translatable("container.spectrum.rei.anvil_crushing.plus_xp", display.experience) ).leftAligned().color(0x3f3f3f).noShadow()); // the tooltip text - TranslatableText text; + Text text; if (display.crushedItemsPerPointOfDamage >= 1) { - text = new TranslatableText("container.spectrum.rei.anvil_crushing.low_force_required"); + text = Text.translatable("container.spectrum.rei.anvil_crushing.low_force_required"); } else if (display.crushedItemsPerPointOfDamage >= 0.5) { - text = new TranslatableText("container.spectrum.rei.anvil_crushing.medium_force_required"); + text = Text.translatable("container.spectrum.rei.anvil_crushing.medium_force_required"); } else { - text = new TranslatableText("container.spectrum.rei.anvil_crushing.high_force_required"); + text = Text.translatable("container.spectrum.rei.anvil_crushing.high_force_required"); } widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 68), text).leftAligned().color(0x3f3f3f).noShadow()); diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/BlockToBlockWithChanceCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/BlockToBlockWithChanceCategory.java index 486470c63e..bd5d997c63 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/BlockToBlockWithChanceCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/BlockToBlockWithChanceCategory.java @@ -6,7 +6,7 @@ import me.shedaniel.rei.api.client.gui.widgets.Widget; import me.shedaniel.rei.api.client.gui.widgets.Widgets; import me.shedaniel.rei.api.client.registry.display.DisplayCategory; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import java.util.List; @@ -19,14 +19,14 @@ public List setupDisplay(BlockToBlockWithChanceDisplay display, Rectangl widgets.add(Widgets.createRecipeBase(bounds)); if (!display.isUnlocked()) { - widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 10), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 20), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 10), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 20), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); } else { widgets.add(Widgets.createArrow(new Point(startPoint.x + 27, startPoint.y + 4))); widgets.add(Widgets.createResultSlotBackground(new Point(startPoint.x + 61, startPoint.y + 5))); widgets.add(Widgets.createSlot(new Point(startPoint.x + 4, startPoint.y + 5)).entries(display.getIn()).markInput()); widgets.add(Widgets.createSlot(new Point(startPoint.x + 61, startPoint.y + 5)).entries(display.getOut()).disableBackground().markInput()); - widgets.add(Widgets.createLabel(new Point(startPoint.x + 4, startPoint.y + 30), new TranslatableText("container.spectrum.rei.chance", display.getChance() * 100)).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x + 4, startPoint.y + 30), Text.translatable("container.spectrum.rei.chance", display.getChance() * 100)).leftAligned().color(0x3f3f3f).noShadow()); } return widgets; } diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/CinderhearthCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/CinderhearthCategory.java index 4037dea576..b8744c0dde 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/CinderhearthCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/CinderhearthCategory.java @@ -14,9 +14,7 @@ import me.shedaniel.rei.api.common.util.EntryIngredients; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.item.ItemStack; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Pair; import org.jetbrains.annotations.NotNull; @@ -33,7 +31,7 @@ public CategoryIdentifier getCategoryIdentifier() { @Override public Text getTitle() { - return new TranslatableText("block.spectrum.cinderhearth"); + return Text.translatable("block.spectrum.cinderhearth"); } @Override @@ -49,8 +47,8 @@ public List setupDisplay(@NotNull CinderhearthDisplay display, @NotNull widgets.add(Widgets.createRecipeBase(bounds)); if (!display.isUnlocked()) { - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 33), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 43), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 33), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 43), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); } else { widgets.add(Widgets.createSlot(new Point(startPoint.x, startPoint.y)).markInput().entries(display.getInputEntries().get(0))); // input slot @@ -68,17 +66,17 @@ public List setupDisplay(@NotNull CinderhearthDisplay display, @NotNull widgets.add(Widgets.createResultSlotBackground(point)); widgets.add(Widgets.createSlot(point).disableBackground().markOutput().entries(EntryIngredients.of(outputStack))); if(chance < 1.0) { - widgets.add(Widgets.createLabel(new Point(point.x - 2, point.y + 23), new LiteralText((int) (chance * 100) + " %")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(point.x - 2, point.y + 23), Text.literal((int) (chance * 100) + " %")).leftAligned().color(0x3f3f3f).noShadow()); } } // description text // special handling for "1 second". Looks nicer - TranslatableText text; + Text text; if (display.craftingTime == 20) { - text = new TranslatableText("container.spectrum.rei.pedestal_crafting.crafting_time_one_second_and_xp", 1, display.experience); + text = Text.translatable("container.spectrum.rei.pedestal_crafting.crafting_time_one_second_and_xp", 1, display.experience); } else { - text = new TranslatableText("container.spectrum.rei.pedestal_crafting.crafting_time_and_xp", (display.craftingTime / 20), display.experience); + text = Text.translatable("container.spectrum.rei.pedestal_crafting.crafting_time_and_xp", (display.craftingTime / 20), display.experience); } widgets.add(Widgets.createLabel(new Point(startPoint.x - 6, startPoint.y + 43), text).leftAligned().color(0x3f3f3f).noShadow()); } diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/CrystallarieumCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/CrystallarieumCategory.java index aa7191ea12..d357610483 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/CrystallarieumCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/CrystallarieumCategory.java @@ -16,7 +16,6 @@ import me.shedaniel.rei.api.common.util.EntryIngredients; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import org.jetbrains.annotations.NotNull; @@ -35,7 +34,7 @@ public CategoryIdentifier getCategoryIdentifier() { @Override public Text getTitle() { - return new TranslatableText("block.spectrum.crystallarieum"); + return Text.translatable("block.spectrum.crystallarieum"); } @Override @@ -51,8 +50,8 @@ public List setupDisplay(@NotNull CrystallarieumDisplay display, @NotNul widgets.add(Widgets.createRecipeBase(bounds)); if (!display.isUnlocked()) { - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 33), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 43), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 33), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 43), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); } else { // input EntryIngredient input = display.getInputEntries().get(0); @@ -74,10 +73,10 @@ public List setupDisplay(@NotNull CrystallarieumDisplay display, @NotNul } // catalysts - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 42), new TranslatableText("container.spectrum.rei.crystallarieum.catalyst")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 58), new TranslatableText("container.spectrum.rei.crystallarieum.accelerator")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 68), new TranslatableText("container.spectrum.rei.crystallarieum.ink_consumption")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 78), new TranslatableText("container.spectrum.rei.crystallarieum.used_up")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 42), Text.translatable("container.spectrum.rei.crystallarieum.catalyst")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 58), Text.translatable("container.spectrum.rei.crystallarieum.accelerator")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 68), Text.translatable("container.spectrum.rei.crystallarieum.ink_consumption")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 78), Text.translatable("container.spectrum.rei.crystallarieum.used_up")).leftAligned().color(0x3f3f3f).noShadow()); int i = 0; int startX = 46; @@ -103,9 +102,9 @@ public List setupDisplay(@NotNull CrystallarieumDisplay display, @NotNul // description texts if (display.growsWithoutCatalyst) { - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 90), new TranslatableText("container.spectrum.rei.crystallarieum.crafting_time_per_stage_seconds", display.secondsPerStage)).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 90), Text.translatable("container.spectrum.rei.crystallarieum.crafting_time_per_stage_seconds", display.secondsPerStage)).leftAligned().color(0x3f3f3f).noShadow()); } else { - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 90), new TranslatableText("container.spectrum.rei.crystallarieum.crafting_time_per_stage_seconds_catalyst_required", display.secondsPerStage)).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 90), Text.translatable("container.spectrum.rei.crystallarieum.crafting_time_per_stage_seconds_catalyst_required", display.secondsPerStage)).leftAligned().color(0x3f3f3f).noShadow()); } } return widgets; diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/EnchanterCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/EnchanterCategory.java index 535e7f6fd1..013428413d 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/EnchanterCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/EnchanterCategory.java @@ -15,7 +15,6 @@ import me.shedaniel.rei.api.common.util.EntryIngredients; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import org.jetbrains.annotations.NotNull; @@ -33,7 +32,7 @@ public CategoryIdentifier getCategoryIdentifier() { @Override public Text getTitle() { - return new TranslatableText("container.spectrum.rei.enchanting.title"); + return Text.translatable("container.spectrum.rei.enchanting.title"); } @Override @@ -49,8 +48,8 @@ public List setupDisplay(@NotNull EnchanterDisplay display, @NotNull Rec widgets.add(Widgets.createRecipeBase(bounds)); if (!display.isUnlocked()) { - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 38), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 48), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 38), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 48), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); } else { // enchanter structure background destinationX destinationY sourceX, sourceY, width, height widgets.add(Widgets.createTexturedWidget(BACKGROUND_TEXTURE, startPoint.x + 12, startPoint.y + 21, 0, 0, 54, 54)); @@ -80,11 +79,11 @@ public List setupDisplay(@NotNull EnchanterDisplay display, @NotNull Rec // duration and XP requirements // special handling for "1 second". Looks nicer - TranslatableText text; + Text text; if (display.craftingTime == 20) { - text = new TranslatableText("container.spectrum.rei.enchanting.crafting_time_one_second", 1); + text = Text.translatable("container.spectrum.rei.enchanting.crafting_time_one_second", 1); } else { - text = new TranslatableText("container.spectrum.rei.enchanting.crafting_time", (display.craftingTime / 20)); + text = Text.translatable("container.spectrum.rei.enchanting.crafting_time", (display.craftingTime / 20)); } widgets.add(Widgets.createLabel(new Point(startPoint.x + 70, startPoint.y + 85), text).leftAligned().color(0x3f3f3f).noShadow()); } diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/EnchantmentUpgradeCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/EnchantmentUpgradeCategory.java index d585aafa78..bc799d69a4 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/EnchantmentUpgradeCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/EnchantmentUpgradeCategory.java @@ -13,7 +13,6 @@ import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -27,7 +26,7 @@ public CategoryIdentifier getCategoryIdentifier() { @Override public Text getTitle() { - return new TranslatableText("container.spectrum.rei.enchantment_upgrading.title"); + return Text.translatable("container.spectrum.rei.enchantment_upgrading.title"); } @Override @@ -43,8 +42,8 @@ public List setupDisplay(@NotNull EnchantmentUpgradeDisplay display, @No widgets.add(Widgets.createRecipeBase(bounds)); if (!display.isUnlocked()) { - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 38), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 48), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 38), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 48), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); } else { // enchanter structure background destinationX destinationY sourceX, sourceY, width, height widgets.add(Widgets.createTexturedWidget(EnchanterCategory.BACKGROUND_TEXTURE, startPoint.x + 12, startPoint.y + 21, 0, 0, 54, 54)); @@ -73,9 +72,9 @@ public List setupDisplay(@NotNull EnchantmentUpgradeDisplay display, @No widgets.add(Widgets.createSlot(new Point(startPoint.x + 111, startPoint.y + 40)).markOutput().disableBackground().entries(output.get(0))); // required amount - TranslatableText text; + Text text; if (display.requiredItemCount > 0) { - text = new TranslatableText("container.spectrum.rei.enchantment_upgrade.required_item_count", display.requiredItemCount); + text = Text.translatable("container.spectrum.rei.enchantment_upgrade.required_item_count", display.requiredItemCount); widgets.add(Widgets.createLabel(new Point(startPoint.x + 67, startPoint.y + 78), text).leftAligned().color(0x3f3f3f).noShadow()); } } diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/FreezingCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/FreezingCategory.java index db2fc8b566..915f778643 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/FreezingCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/FreezingCategory.java @@ -6,7 +6,6 @@ import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; public class FreezingCategory extends BlockToBlockWithChanceCategory { @@ -22,7 +21,7 @@ public Renderer getIcon() { @Override public Text getTitle() { - return new TranslatableText("container.spectrum.rei.freezing.title"); + return Text.translatable("container.spectrum.rei.freezing.title"); } } diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/FusionShrineCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/FusionShrineCategory.java index 18efe4ff36..a176c56212 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/FusionShrineCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/FusionShrineCategory.java @@ -15,7 +15,6 @@ import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.fluid.Fluids; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -31,7 +30,7 @@ public CategoryIdentifier getCategoryIdentifier() { @Override public Text getTitle() { - return new TranslatableText("block.spectrum.fusion_shrine"); + return Text.translatable("block.spectrum.fusion_shrine"); } @Override @@ -47,8 +46,8 @@ public List setupDisplay(@NotNull FusionShrineDisplay display, @NotNull widgets.add(Widgets.createRecipeBase(bounds)); if (!display.isUnlocked()) { - widgets.add(Widgets.createLabel(new Point(startPoint.x - 6, startPoint.y + 33), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x - 6, startPoint.y + 43), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 6, startPoint.y + 33), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 6, startPoint.y + 43), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); } else { List output = display.getOutputEntries(); @@ -80,11 +79,11 @@ public List setupDisplay(@NotNull FusionShrineDisplay display, @NotNull // description text // special handling for "1 second". Looks nicer - TranslatableText text; + Text text; if (display.craftingTime == 20) { - text = new TranslatableText("container.spectrum.rei.pedestal_crafting.crafting_time_one_second_and_xp", 1, display.experience); + text = Text.translatable("container.spectrum.rei.pedestal_crafting.crafting_time_one_second_and_xp", 1, display.experience); } else { - text = new TranslatableText("container.spectrum.rei.pedestal_crafting.crafting_time_and_xp", (display.craftingTime / 20), display.experience); + text = Text.translatable("container.spectrum.rei.pedestal_crafting.crafting_time_and_xp", (display.craftingTime / 20), display.experience); } widgets.add(Widgets.createLabel(new Point(startPoint.x - 10, startPoint.y + 75), text).leftAligned().color(0x3f3f3f).noShadow()); diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/GatedItemInformationDisplay.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/GatedItemInformationDisplay.java index 8f395b7416..28de3b3718 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/GatedItemInformationDisplay.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/GatedItemInformationDisplay.java @@ -12,7 +12,6 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.item.Item; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import java.util.ArrayList; @@ -25,7 +24,7 @@ public abstract class GatedItemInformationDisplay extends BasicDisplay implement protected final List input; protected final Identifier requiredAdvancementIdentifier; protected final Item item; - protected final TranslatableText description; + protected final Text description; public GatedItemInformationDisplay(DescriptiveGatedRecipe recipe) { super(recipe.getIngredients().stream().map(EntryIngredients::ofIngredient).collect(Collectors.toCollection(ArrayList::new)), Collections.emptyList()); diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/GatedItemInformationPageCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/GatedItemInformationPageCategory.java index d4d6bcae97..bfa7901de3 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/GatedItemInformationPageCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/GatedItemInformationPageCategory.java @@ -10,7 +10,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.item.Item; import net.minecraft.text.OrderedText; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import java.util.List; @@ -23,8 +23,8 @@ public List setupDisplay(GatedItemInformationDisplay display, Rectangle widgets.add(Widgets.createRecipeBase(bounds)); if (!display.isUnlocked()) { - widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 4), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 14), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 4), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 14), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); } else { Item item = display.getItem(); widgets.add(Widgets.createSlot(new Point(startPoint.x, startPoint.y)).entries(display.getInputEntries().get(0)).markInput()); diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/HeatingCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/HeatingCategory.java index d1ee95ed35..ff3c8b26ef 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/HeatingCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/HeatingCategory.java @@ -6,7 +6,6 @@ import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; public class HeatingCategory extends BlockToBlockWithChanceCategory { @@ -22,7 +21,7 @@ public Renderer getIcon() { @Override public Text getTitle() { - return new TranslatableText("container.spectrum.rei.heating.title"); + return Text.translatable("container.spectrum.rei.heating.title"); } } diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/InkConvertingCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/InkConvertingCategory.java index 12e43d7718..0412944d63 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/InkConvertingCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/InkConvertingCategory.java @@ -12,7 +12,6 @@ import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -31,7 +30,7 @@ public Renderer getIcon() { @Override public Text getTitle() { - return new TranslatableText("container.spectrum.rei.ink_converting.title"); + return Text.translatable("container.spectrum.rei.ink_converting.title"); } @@ -43,8 +42,8 @@ public List setupDisplay(@NotNull InkConvertingDisplay display, @NotNull widgets.add(Widgets.createRecipeBase(bounds)); if (!display.isUnlocked()) { - widgets.add(Widgets.createLabel(new Point(startPoint.x + 8, startPoint.y + 38), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x + 8, startPoint.y + 48), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x + 8, startPoint.y + 38), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x + 8, startPoint.y + 48), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); } else { // input slot widgets.add(Widgets.createSlot(new Point(startPoint.x + 8, startPoint.y + 40)).markInput().entries(display.getInputEntries().get(0))); @@ -53,8 +52,8 @@ public List setupDisplay(@NotNull InkConvertingDisplay display, @NotNull widgets.add(Widgets.createArrow(new Point(startPoint.x + 30, startPoint.y + 40))); // output amount & required time - TranslatableText colorText = new TranslatableText("container.spectrum.rei.ink_converting.color", display.color.getName()); - TranslatableText amountText = new TranslatableText("container.spectrum.rei.ink_converting.amount", display.amount); + Text colorText = Text.translatable("container.spectrum.rei.ink_converting.color", display.color.getName()); + Text amountText = Text.translatable("container.spectrum.rei.ink_converting.amount", display.amount); widgets.add(Widgets.createLabel(new Point(startPoint.x + 58, startPoint.y + 40), colorText).leftAligned().color(0x3f3f3f).noShadow()); widgets.add(Widgets.createLabel(new Point(startPoint.x + 58, startPoint.y + 50), amountText).leftAligned().color(0x3f3f3f).noShadow()); } diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/MidnightSolutionConvertingCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/MidnightSolutionConvertingCategory.java index a1a3dc84e5..df1bfc37d5 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/MidnightSolutionConvertingCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/MidnightSolutionConvertingCategory.java @@ -12,7 +12,6 @@ import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import java.util.List; @@ -30,7 +29,7 @@ public Renderer getIcon() { @Override public Text getTitle() { - return new TranslatableText("container.spectrum.rei.midnight_solution_converting.title"); + return Text.translatable("container.spectrum.rei.midnight_solution_converting.title"); } @Override @@ -40,8 +39,8 @@ public List setupDisplay(MidnightSolutionConvertingDisplay display, Rect widgets.add(Widgets.createRecipeBase(bounds)); if (!display.isUnlocked()) { - widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 4), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 14), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 4), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 14), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); } else { widgets.add(Widgets.createArrow(new Point(startPoint.x + 27, startPoint.y + 4))); widgets.add(Widgets.createResultSlotBackground(new Point(startPoint.x + 61, startPoint.y + 5))); diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/NaturesStaffConversionsCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/NaturesStaffConversionsCategory.java index db1bd2ae60..3e79add6e2 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/NaturesStaffConversionsCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/NaturesStaffConversionsCategory.java @@ -12,7 +12,6 @@ import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import java.util.List; @@ -40,8 +39,8 @@ public List setupDisplay(NaturesStaffConversionsDisplay display, Rectang widgets.add(Widgets.createRecipeBase(bounds)); if (!display.isUnlocked()) { - widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 4), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 14), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 4), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 23, startPoint.y + 14), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); } else { widgets.add(Widgets.createArrow(new Point(startPoint.x + 27, startPoint.y + 4))); widgets.add(Widgets.createResultSlotBackground(new Point(startPoint.x + 61, startPoint.y + 5))); diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingCategory.java index 10e05cbaea..eeb4b3ce00 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingCategory.java @@ -18,7 +18,6 @@ import me.shedaniel.rei.api.common.util.EntryStacks; import me.shedaniel.rei.plugin.common.displays.crafting.DefaultCraftingDisplay; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import java.util.List; @@ -37,7 +36,7 @@ public Identifier getIdentifier() { @Override public Text getTitle() { - return new TranslatableText("container.spectrum.rei.pedestal_crafting.title"); + return Text.translatable("container.spectrum.rei.pedestal_crafting.title"); } @Override @@ -55,8 +54,8 @@ public List setupDisplay(PedestalCraftingDisplay display, Rectangle boun widgets.add(Widgets.createRecipeBase(bounds)); if (!display.isUnlocked() || display.getInputEntries().isEmpty()) { - widgets.add(Widgets.createLabel(new Point(startPoint.x - 9, startPoint.y + 33), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x - 9, startPoint.y + 43), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 9, startPoint.y + 33), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 9, startPoint.y + 43), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); } else { widgets.add(Widgets.createArrow(new Point(startPoint.x + 60, startPoint.y + 18)).animationDurationTicks(display.craftingTime)); @@ -103,11 +102,11 @@ public List setupDisplay(PedestalCraftingDisplay display, Rectangle boun // description text // special handling for "1 second". Looks nicer - TranslatableText text; + Text text; if (display.craftingTime == 20) { - text = new TranslatableText("container.spectrum.rei.pedestal_crafting.crafting_time_one_second_and_xp", 1, display.experience); + text = Text.translatable("container.spectrum.rei.pedestal_crafting.crafting_time_one_second_and_xp", 1, display.experience); } else { - text = new TranslatableText("container.spectrum.rei.pedestal_crafting.crafting_time_and_xp", (display.craftingTime / 20), display.experience); + text = Text.translatable("container.spectrum.rei.pedestal_crafting.crafting_time_and_xp", (display.craftingTime / 20), display.experience); } widgets.add(Widgets.createLabel(new Point(startPoint.x, startPoint.y + 82), text).leftAligned().color(0x3f3f3f).noShadow()); } diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingDisplay.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingDisplay.java index e989e5d22a..42e1bc6abe 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingDisplay.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingDisplay.java @@ -18,8 +18,9 @@ import net.minecraft.util.Identifier; import org.jetbrains.annotations.NotNull; -import java.util.*; +import net.minecraft.util.math.random.Random; import java.util.stream.Collectors; +import java.util.*; public class PedestalCraftingDisplay extends BasicDisplay implements SimpleGridMenuDisplay, GatedRecipeDisplay { diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopBrewingCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopBrewingCategory.java index 33fcbde066..052d44c0b5 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopBrewingCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopBrewingCategory.java @@ -4,7 +4,6 @@ import de.dafuqs.spectrum.compat.REI.SpectrumPlugins; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; public class PotionWorkshopBrewingCategory extends PotionWorkshopCategory { @@ -21,7 +20,7 @@ public Identifier getIdentifier() { @Override public Text getTitle() { - return new TranslatableText("container.spectrum.rei.potion_workshop_brewing.title"); + return Text.translatable("container.spectrum.rei.potion_workshop_brewing.title"); } } diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopCategory.java index aa5f7f5bef..1410b917b6 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopCategory.java @@ -11,7 +11,7 @@ import me.shedaniel.rei.api.client.registry.display.DisplayCategory; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryStacks; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import java.util.List; @@ -33,8 +33,8 @@ public List setupDisplay(PotionWorkshopRecipeDisplay display, Rectangle widgets.add(Widgets.createRecipeBase(bounds)); if (!display.isUnlocked()) { - widgets.add(Widgets.createLabel(new Point(startPoint.x - 5, startPoint.y + 23), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x - 5, startPoint.y + 33), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 5, startPoint.y + 23), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 5, startPoint.y + 33), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); } else { // bubbles widgets.add(Widgets.createTexturedWidget(BACKGROUND_TEXTURE, startPoint.x + 18, startPoint.y + 19, 197, 0, 10, 27)); @@ -54,7 +54,7 @@ public List setupDisplay(PotionWorkshopRecipeDisplay display, Rectangle widgets.add(Widgets.createSlot(new Point(startPoint.x + 95, startPoint.y + 19)).entries(result).markOutput()); // description text - TranslatableText text = new TranslatableText("container.spectrum.rei.potion_workshop.crafting_time", (display.craftingTime / 20)); + Text text = Text.translatable("container.spectrum.rei.potion_workshop.crafting_time", (display.craftingTime / 20)); widgets.add(Widgets.createLabel(new Point(startPoint.x + 40, startPoint.y + 54), text).leftAligned().color(0x3f3f3f).noShadow()); } diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopCraftingCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopCraftingCategory.java index 43193a9c53..675e11c7ec 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopCraftingCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopCraftingCategory.java @@ -4,7 +4,6 @@ import de.dafuqs.spectrum.compat.REI.SpectrumPlugins; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; public class PotionWorkshopCraftingCategory extends PotionWorkshopCategory { @@ -21,7 +20,7 @@ public Identifier getIdentifier() { @Override public Text getTitle() { - return new TranslatableText("container.spectrum.rei.potion_workshop_crafting.title"); + return Text.translatable("container.spectrum.rei.potion_workshop_crafting.title"); } } diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopReactingCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopReactingCategory.java index f79bf990e2..e29c27cfdf 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopReactingCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PotionWorkshopReactingCategory.java @@ -7,7 +7,6 @@ import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; public class PotionWorkshopReactingCategory extends GatedItemInformationPageCategory { @@ -20,7 +19,7 @@ public Renderer getIcon() { @Override public Text getTitle() { - return new TranslatableText("container.spectrum.rei.potion_workshop_reacting.title"); + return Text.translatable("container.spectrum.rei.potion_workshop_reacting.title"); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/SpiritInstillingCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/SpiritInstillingCategory.java index e066d2c291..4b62d5a074 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/SpiritInstillingCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/SpiritInstillingCategory.java @@ -14,7 +14,6 @@ import me.shedaniel.rei.api.common.util.EntryIngredients; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -47,8 +46,8 @@ public List setupDisplay(@NotNull SpiritInstillingDisplay display, @NotN widgets.add(Widgets.createRecipeBase(bounds)); if (!display.isUnlocked()) { - widgets.add(Widgets.createLabel(new Point(startPoint.x - 6, startPoint.y + 13), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); - widgets.add(Widgets.createLabel(new Point(startPoint.x - 6, startPoint.y + 23), new TranslatableText("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 6, startPoint.y + 13), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_1")).leftAligned().color(0x3f3f3f).noShadow()); + widgets.add(Widgets.createLabel(new Point(startPoint.x - 6, startPoint.y + 23), Text.translatable("container.spectrum.rei.pedestal_crafting.recipe_not_unlocked_line_2")).leftAligned().color(0x3f3f3f).noShadow()); } else { List output = display.getOutputEntries(); @@ -70,11 +69,11 @@ public List setupDisplay(@NotNull SpiritInstillingDisplay display, @NotN // description text // special handling for "1 second". Looks nicer - TranslatableText text; + Text text; if (display.craftingTime == 20) { - text = new TranslatableText("container.spectrum.rei.pedestal_crafting.crafting_time_one_second_and_xp", 1, display.experience); + text = Text.translatable("container.spectrum.rei.pedestal_crafting.crafting_time_one_second_and_xp", 1, display.experience); } else { - text = new TranslatableText("container.spectrum.rei.pedestal_crafting.crafting_time_and_xp", (display.craftingTime / 20), display.experience); + text = Text.translatable("container.spectrum.rei.pedestal_crafting.crafting_time_and_xp", (display.craftingTime / 20), display.experience); } widgets.add(Widgets.createLabel(new Point(startPoint.x - 10, startPoint.y + 39), text).leftAligned().color(0x3f3f3f).noShadow()); } diff --git a/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageChecklist.java b/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageChecklist.java index 124d616273..85cec9e264 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageChecklist.java +++ b/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageChecklist.java @@ -3,7 +3,6 @@ import com.google.gson.annotations.SerializedName; import de.dafuqs.revelationary.api.advancements.AdvancementHelper; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; import net.minecraft.util.Identifier; import vazkii.patchouli.api.IVariable; @@ -55,7 +54,7 @@ public void onDisplayed(GuiBookEntry parent, int left, int top) { if (title == null) { title = ""; - titleText = new LiteralText(""); + titleText = Text.literal(""); } else { titleText = i18nText(title); } diff --git a/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageCinderhearthSmelting.java b/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageCinderhearthSmelting.java index 9e9303f621..2739e8a893 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageCinderhearthSmelting.java +++ b/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageCinderhearthSmelting.java @@ -8,7 +8,7 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.recipe.Ingredient; -import net.minecraft.text.LiteralText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.Pair; import org.jetbrains.annotations.NotNull; @@ -67,7 +67,7 @@ protected void drawRecipe(MatrixStack ms, @NotNull CinderhearthRecipe recipe, in if(possibleOutput.getRight() < 1.0F) { if(chanceTextRenders.size() < chanceTextIndex + 1) { - chanceTextRenders.add(new BookTextRenderer(parent, new LiteralText((int) (possibleOutput.getRight() * 100) + "%"), x, recipeY + 24)); + chanceTextRenders.add(new BookTextRenderer(parent, Text.literal((int) (possibleOutput.getRight() * 100) + "%"), x, recipeY + 24)); } chanceTextRenders.get(chanceTextIndex).render(ms, mouseX, mouseY); chanceTextIndex++; diff --git a/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageCrystallarieumGrowing.java b/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageCrystallarieumGrowing.java index ffb318e58c..5f34b5805f 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageCrystallarieumGrowing.java +++ b/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageCrystallarieumGrowing.java @@ -10,7 +10,7 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.recipe.Ingredient; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.jetbrains.annotations.NotNull; import vazkii.patchouli.client.book.gui.BookTextRenderer; @@ -64,7 +64,7 @@ protected void drawRecipe(MatrixStack ms, @NotNull CrystallarieumRecipe recipe, // catalyst text if(textRenderer == null) { - textRenderer = new BookTextRenderer(parent, new TranslatableText("container.spectrum.patchouli.crystallarieum.catalyst"), 0, 38); + textRenderer = new BookTextRenderer(parent, Text.translatable("container.spectrum.patchouli.crystallarieum.catalyst"), 0, 38); } textRenderer.render(ms, mouseX, mouseY); diff --git a/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageHint.java b/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageHint.java index 192d3d854a..921425e003 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageHint.java +++ b/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageHint.java @@ -11,7 +11,6 @@ import net.minecraft.recipe.Ingredient; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; import net.minecraft.util.Identifier; import vazkii.patchouli.api.IVariable; @@ -67,7 +66,7 @@ public void onDisplayed(GuiBookEntry parent, int left, int top) { revealProgress = -1; displayedText = calculateTextToRender(rawText); - PaymentButtonWidget paymentButtonWidget = new PaymentButtonWidget(GuiBook.PAGE_WIDTH / 2 - 50, GuiBook.PAGE_HEIGHT - 35, 100, 20, LiteralText.EMPTY, this::paymentButtonClicked, this); + PaymentButtonWidget paymentButtonWidget = new PaymentButtonWidget(GuiBook.PAGE_WIDTH / 2 - 50, GuiBook.PAGE_HEIGHT - 35, 100, 20, Text.empty(), this::paymentButtonClicked, this); addButton(paymentButtonWidget); } else { displayedText = rawText; @@ -80,11 +79,11 @@ private Text calculateTextToRender(Text text) { if (revealProgress == 0) { return text; } else if (revealProgress < 0) { - return new LiteralText("$(obf)" + text.getString()); + return Text.literal("$(obf)" + text.getString()); } // Show a new letter each tick - LiteralText calculatedText = new LiteralText(text.asString().substring(0, (int) revealProgress) + "$(obf)" + text.asString().substring((int) revealProgress)); + Text calculatedText = Text.literal(text.asString().substring(0, (int) revealProgress) + "$(obf)" + text.asString().substring((int) revealProgress)); long currentTime = MinecraftClient.getInstance().world.getTime(); if (currentTime != lastRevealTick) { diff --git a/src/main/java/de/dafuqs/spectrum/compat/patchouli/PaymentButtonWidget.java b/src/main/java/de/dafuqs/spectrum/compat/patchouli/PaymentButtonWidget.java index 1ae23dd17a..2c5227dcb8 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/patchouli/PaymentButtonWidget.java +++ b/src/main/java/de/dafuqs/spectrum/compat/patchouli/PaymentButtonWidget.java @@ -3,7 +3,6 @@ import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; public class PaymentButtonWidget extends ButtonWidget { @@ -12,7 +11,7 @@ public class PaymentButtonWidget extends ButtonWidget { public PaymentButtonWidget(int x, int y, int width, int height, Text message, PressAction onPress, PageHint pageHint) { super(x, y, width, height, message, onPress); this.pageHint = pageHint; - setMessage(new TranslatableText("spectrum.gui.lexicon.reveal_hint_button.text")); + setMessage(Text.translatable("spectrum.gui.lexicon.reveal_hint_button.text")); } public void renderButton(MatrixStack matrices, int mouseX, int mouseY, float delta) { diff --git a/src/main/java/de/dafuqs/spectrum/deeper_down/DDConfiguredFeatures.java b/src/main/java/de/dafuqs/spectrum/deeper_down/DDConfiguredFeatures.java index 16515c9405..35c73922f1 100644 --- a/src/main/java/de/dafuqs/spectrum/deeper_down/DDConfiguredFeatures.java +++ b/src/main/java/de/dafuqs/spectrum/deeper_down/DDConfiguredFeatures.java @@ -7,6 +7,7 @@ import de.dafuqs.spectrum.worldgen.features.RandomBudsFeaturesConfig; import net.minecraft.block.Block; import net.minecraft.block.Blocks; +import net.minecraft.block.GlowLichenBlock; import net.minecraft.fluid.Fluids; import net.minecraft.structure.rule.AlwaysTrueRuleTest; import net.minecraft.structure.rule.RuleTest; @@ -36,7 +37,7 @@ public class DDConfiguredFeatures { public static final ConfiguredFeature BEDROCK_DISK_SLOPED = new ConfiguredFeature<>(SpectrumFeatures.AIR_CHECK_DISK, new OreFeatureConfig(ALWAYS_TRUE, Blocks.BEDROCK.getDefaultState(), 40)); public static final ConfiguredFeature WATER_SPRING = new ConfiguredFeature<>(Feature.SPRING_FEATURE, new SpringFeatureConfig(Fluids.WATER.getDefaultState(), true, 4, 1, DD_BASE_BLOCKS)); - public static final ConfiguredFeature GLOW_LICHEN = new ConfiguredFeature<>(Feature.GLOW_LICHEN, new GlowLichenFeatureConfig(20, false, true, true, 0.5F, DD_BASE_BLOCKS)); + public static final ConfiguredFeature GLOW_LICHEN = new ConfiguredFeature<>(Feature.MULTIFACE_GROWTH, new MultifaceGrowthFeatureConfig((GlowLichenBlock) Blocks.GLOW_LICHEN, 20, false, true, true, 0.5F, DD_BASE_BLOCKS)); public static final ConfiguredFeature BISMUTH_BUDS = new ConfiguredFeature<>(SpectrumFeatures.RANDOM_BUDS, diff --git a/src/main/java/de/dafuqs/spectrum/deeper_down/DDOreVeinSampler.java b/src/main/java/de/dafuqs/spectrum/deeper_down/DDOreVeinSampler.java index df4e5ecba3..b7a8e4466a 100644 --- a/src/main/java/de/dafuqs/spectrum/deeper_down/DDOreVeinSampler.java +++ b/src/main/java/de/dafuqs/spectrum/deeper_down/DDOreVeinSampler.java @@ -4,10 +4,10 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.random.Random; +import net.minecraft.util.math.random.RandomSplitter; import net.minecraft.world.gen.chunk.ChunkNoiseSampler; import net.minecraft.world.gen.densityfunction.DensityFunction; -import net.minecraft.world.gen.random.AbstractRandom; -import net.minecraft.world.gen.random.RandomDeriver; public final class DDOreVeinSampler { private static final float field_36620 = 0.4F; @@ -23,7 +23,7 @@ public final class DDOreVeinSampler { private DDOreVeinSampler() { } - public static ChunkNoiseSampler.BlockStateSampler create(DensityFunction veinToggle, DensityFunction veinRidged, DensityFunction veinGap, RandomDeriver randomDeriver) { + public static ChunkNoiseSampler.BlockStateSampler create(DensityFunction veinToggle, DensityFunction veinRidged, DensityFunction veinGap, RandomSplitter randomDeriver) { return (pos) -> { double veinTypeSample = veinToggle.sample(pos); DDOreVeinSampler.VeinType veinType = VeinType.getVeinTypeForSample(veinTypeSample); @@ -38,15 +38,15 @@ public static ChunkNoiseSampler.BlockStateSampler create(DensityFunction veinTog if (absVeinTypeSample + f < 0.05) { return null; } else { - AbstractRandom abstractRandom = randomDeriver.createRandom(pos.blockX(), i, pos.blockZ()); - if (abstractRandom.nextFloat() > VEIN_LIMIT) { + Random random = randomDeriver.split(pos.blockX(), i, pos.blockZ()); + if (random.nextFloat() > VEIN_LIMIT) { return null; } else if (veinRidged.sample(pos) >= 0.0D) { return null; } else { double g = MathHelper.clampedLerpFromProgress(absVeinTypeSample, field_36620, field_36626, field_36624, field_36625); - if ((double)abstractRandom.nextFloat() < g && veinGap.sample(pos) > ORE_OR_STONE_THRESHOLD) { - return abstractRandom.nextFloat() < RAW_ORE_BLOCK_CHANCE ? veinType.rawOreBlock : veinType.ore; + if ((double)random.nextFloat() < g && veinGap.sample(pos) > ORE_OR_STONE_THRESHOLD) { + return random.nextFloat() < RAW_ORE_BLOCK_CHANCE ? veinType.rawOreBlock : veinType.ore; } else { return veinType.stone; } diff --git a/src/main/java/de/dafuqs/spectrum/enchantments/SpectrumEnchantment.java b/src/main/java/de/dafuqs/spectrum/enchantments/SpectrumEnchantment.java index fb74aa30ce..1e3807f321 100644 --- a/src/main/java/de/dafuqs/spectrum/enchantments/SpectrumEnchantment.java +++ b/src/main/java/de/dafuqs/spectrum/enchantments/SpectrumEnchantment.java @@ -11,7 +11,6 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.text.MutableText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; @@ -42,7 +41,7 @@ public boolean isAvailableForRandomSelection() { @Environment(EnvType.CLIENT) @Override public Text getName(int level) { - MutableText mutableText = new TranslatableText(this.getTranslationKey()); + MutableText mutableText = Text.translatable(this.getTranslationKey()); if (this.isCursed()) { mutableText.formatted(Formatting.RED); } else { @@ -53,7 +52,7 @@ public Text getName(int level) { } if (level != 1 || this.getMaxLevel() != 1) { - mutableText.append(" ").append(new TranslatableText("enchantment.level." + level)); + mutableText.append(" ").append(Text.translatable("enchantment.level." + level)); } return mutableText; diff --git a/src/main/java/de/dafuqs/spectrum/energy/InkPowered.java b/src/main/java/de/dafuqs/spectrum/energy/InkPowered.java index 9a42e14f83..cafcfa16d5 100644 --- a/src/main/java/de/dafuqs/spectrum/energy/InkPowered.java +++ b/src/main/java/de/dafuqs/spectrum/energy/InkPowered.java @@ -13,7 +13,6 @@ import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.Pair; @@ -51,13 +50,13 @@ private static boolean canUse(PlayerEntity playerEntity) { default void addInkPoweredTooltip(List tooltip) { if(canUse()) { if (getUsedColors().size() > 1) { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_powered.prefix").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("spectrum.tooltip.ink_powered.prefix").formatted(Formatting.GRAY)); for (InkColor color : getUsedColors()) { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_powered.bullet." + color.toString())); + tooltip.add(Text.translatable("spectrum.tooltip.ink_powered.bullet." + color.toString())); } } else { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_powered." + getUsedColors().get(0).toString()).formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("spectrum.tooltip.ink_powered." + getUsedColors().get(0).toString()).formatted(Formatting.GRAY)); } } } @@ -128,7 +127,7 @@ static boolean tryDrainEnergy(@NotNull PlayerEntity player, InkColor color, long } // hands (main hand, too, if someone uses the staff from the offhand) - for (ItemStack itemStack : player.getItemsHand()) { + for (ItemStack itemStack : player.getHandItems()) { amount -= tryDrainEnergy(itemStack, color, amount, true); if (amount <= 0) { return true; @@ -168,7 +167,7 @@ static long getAvailableInk(@NotNull PlayerEntity player, InkColor color) { long available = 0; // offhand - for (ItemStack itemStack : player.getItemsHand()) { + for (ItemStack itemStack : player.getHandItems()) { available += tryGetEnergy(itemStack, color); } diff --git a/src/main/java/de/dafuqs/spectrum/energy/color/InkColor.java b/src/main/java/de/dafuqs/spectrum/energy/color/InkColor.java index ed8d31cdf5..b4336b4daf 100644 --- a/src/main/java/de/dafuqs/spectrum/energy/color/InkColor.java +++ b/src/main/java/de/dafuqs/spectrum/energy/color/InkColor.java @@ -1,10 +1,12 @@ package de.dafuqs.spectrum.energy.color; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.DyeColor; import net.minecraft.util.Identifier; import net.minecraft.util.math.Vec3f; +import net.minecraft.util.math.random.Random; + import java.util.*; public abstract class InkColor { @@ -66,8 +68,8 @@ public int hashCode() { return dyeColor.getId(); } - public TranslatableText getName() { - return new TranslatableText("spectrum.ink.color." + this); + public Text getName() { + return Text.translatable("spectrum.ink.color." + this); } public Vec3f getColor() { diff --git a/src/main/java/de/dafuqs/spectrum/energy/storage/CreativeInkStorage.java b/src/main/java/de/dafuqs/spectrum/energy/storage/CreativeInkStorage.java index aa9588863b..c8ac68d545 100644 --- a/src/main/java/de/dafuqs/spectrum/energy/storage/CreativeInkStorage.java +++ b/src/main/java/de/dafuqs/spectrum/energy/storage/CreativeInkStorage.java @@ -4,7 +4,6 @@ import de.dafuqs.spectrum.energy.color.InkColor; import net.minecraft.nbt.NbtCompound; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -99,7 +98,7 @@ public void clear() { } @Override public void addTooltip(List tooltip, boolean includeHeader) { if(includeHeader) { - tooltip.add(new TranslatableText("item.spectrum.creative_ink_assortment.tooltip")); + tooltip.add(Text.translatable("item.spectrum.creative_ink_assortment.tooltip")); } } diff --git a/src/main/java/de/dafuqs/spectrum/energy/storage/IndividualCappedInkStorage.java b/src/main/java/de/dafuqs/spectrum/energy/storage/IndividualCappedInkStorage.java index 59abc4648f..de6c74fbde 100644 --- a/src/main/java/de/dafuqs/spectrum/energy/storage/IndividualCappedInkStorage.java +++ b/src/main/java/de/dafuqs/spectrum/energy/storage/IndividualCappedInkStorage.java @@ -7,10 +7,11 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import net.minecraft.util.math.random.Random; + import java.util.*; import static de.dafuqs.spectrum.helpers.Support.getShortenedNumberString; @@ -158,11 +159,11 @@ public NbtCompound toNbt() { @Environment(EnvType.CLIENT) public void addTooltip(List tooltip, boolean includeHeader) { if(includeHeader) { - tooltip.add(new TranslatableText("item.spectrum.pigment_palette.tooltip", getShortenedNumberString(maxEnergyPerColor))); + tooltip.add(Text.translatable("item.spectrum.pigment_palette.tooltip", getShortenedNumberString(maxEnergyPerColor))); } for (Map.Entry color : this.storedEnergy.entrySet()) { if (color.getValue() > 0) { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_powered.bullet." + color.getKey().toString().toLowerCase(Locale.ROOT), getShortenedNumberString(color.getValue()))); + tooltip.add(Text.translatable("spectrum.tooltip.ink_powered.bullet." + color.getKey().toString().toLowerCase(Locale.ROOT), getShortenedNumberString(color.getValue()))); } } } diff --git a/src/main/java/de/dafuqs/spectrum/energy/storage/SingleInkStorage.java b/src/main/java/de/dafuqs/spectrum/energy/storage/SingleInkStorage.java index d128d895dd..9ccd6bbc0c 100644 --- a/src/main/java/de/dafuqs/spectrum/energy/storage/SingleInkStorage.java +++ b/src/main/java/de/dafuqs/spectrum/energy/storage/SingleInkStorage.java @@ -6,7 +6,6 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -157,10 +156,10 @@ public NbtCompound toNbt() { public void addTooltip(List tooltip, boolean includeHeader) { if(includeHeader) { - tooltip.add(new TranslatableText("item.spectrum.ink_flask.tooltip", getShortenedNumberString(this.maxEnergy))); + tooltip.add(Text.translatable("item.spectrum.ink_flask.tooltip", getShortenedNumberString(this.maxEnergy))); } if (this.storedEnergy > 0) { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_powered.bullet." + this.storedColor.toString().toLowerCase(Locale.ROOT), getShortenedNumberString(this.storedEnergy))); + tooltip.add(Text.translatable("spectrum.tooltip.ink_powered.bullet." + this.storedColor.toString().toLowerCase(Locale.ROOT), getShortenedNumberString(this.storedEnergy))); } } diff --git a/src/main/java/de/dafuqs/spectrum/energy/storage/TotalCappedElementalInkStorage.java b/src/main/java/de/dafuqs/spectrum/energy/storage/TotalCappedElementalInkStorage.java index 5ce22a0352..5de4454dd4 100644 --- a/src/main/java/de/dafuqs/spectrum/energy/storage/TotalCappedElementalInkStorage.java +++ b/src/main/java/de/dafuqs/spectrum/energy/storage/TotalCappedElementalInkStorage.java @@ -10,7 +10,6 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -252,28 +251,28 @@ public long getRoom(InkColor color) { @Environment(EnvType.CLIENT) public void addTooltip(List tooltip, boolean includeHeader) { if(includeHeader) { - tooltip.add(new TranslatableText("item.spectrum.artists_palette.tooltip", getShortenedNumberString(this.maxEnergyTotal))); - tooltip.add(new TranslatableText("item.spectrum.artists_palette.tooltip.mix_on_demand")); + tooltip.add(Text.translatable("item.spectrum.artists_palette.tooltip", getShortenedNumberString(this.maxEnergyTotal))); + tooltip.add(Text.translatable("item.spectrum.artists_palette.tooltip.mix_on_demand")); } long cyan = this.storedEnergy.get(InkColors.CYAN); if (cyan > 0) { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_powered.bullet.cyan", getShortenedNumberString(cyan))); + tooltip.add(Text.translatable("spectrum.tooltip.ink_powered.bullet.cyan", getShortenedNumberString(cyan))); } long magenta = this.storedEnergy.get(InkColors.MAGENTA); if (magenta > 0) { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_powered.bullet.magenta", getShortenedNumberString(magenta))); + tooltip.add(Text.translatable("spectrum.tooltip.ink_powered.bullet.magenta", getShortenedNumberString(magenta))); } long yellow = this.storedEnergy.get(InkColors.YELLOW); if (yellow > 0) { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_powered.bullet.yellow", getShortenedNumberString(yellow))); + tooltip.add(Text.translatable("spectrum.tooltip.ink_powered.bullet.yellow", getShortenedNumberString(yellow))); } long black = this.storedEnergy.get(InkColors.BLACK); if (black > 0) { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_powered.bullet.black", getShortenedNumberString(black))); + tooltip.add(Text.translatable("spectrum.tooltip.ink_powered.bullet.black", getShortenedNumberString(black))); } long white = this.storedEnergy.get(InkColors.WHITE); if (white > 0) { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_powered.bullet.white", getShortenedNumberString(white))); + tooltip.add(Text.translatable("spectrum.tooltip.ink_powered.bullet.white", getShortenedNumberString(white))); } } diff --git a/src/main/java/de/dafuqs/spectrum/energy/storage/TotalCappedInkStorage.java b/src/main/java/de/dafuqs/spectrum/energy/storage/TotalCappedInkStorage.java index e24337f081..80fd8bba99 100644 --- a/src/main/java/de/dafuqs/spectrum/energy/storage/TotalCappedInkStorage.java +++ b/src/main/java/de/dafuqs/spectrum/energy/storage/TotalCappedInkStorage.java @@ -8,7 +8,6 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -171,11 +170,11 @@ public void clear() { @Environment(EnvType.CLIENT) public void addTooltip(List tooltip, boolean includeHeader) { if(includeHeader) { - tooltip.add(new TranslatableText("item.spectrum.total_capped_simple_pigment_energy_storage.tooltip", getShortenedNumberString(maxEnergyTotal))); + tooltip.add(Text.translatable("item.spectrum.total_capped_simple_pigment_energy_storage.tooltip", getShortenedNumberString(maxEnergyTotal))); } for (Map.Entry color : this.storedEnergy.entrySet()) { if (color.getValue() > 0) { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_powered.bullet." + color.getKey().toString().toLowerCase(Locale.ROOT), getShortenedNumberString(color.getValue()))); + tooltip.add(Text.translatable("spectrum.tooltip.ink_powered.bullet." + color.getKey().toString().toLowerCase(Locale.ROOT), getShortenedNumberString(color.getValue()))); } } } diff --git a/src/main/java/de/dafuqs/spectrum/entity/SpectrumEntityRenderers.java b/src/main/java/de/dafuqs/spectrum/entity/SpectrumEntityRenderers.java index 6f958e8893..0ff9929b5d 100644 --- a/src/main/java/de/dafuqs/spectrum/entity/SpectrumEntityRenderers.java +++ b/src/main/java/de/dafuqs/spectrum/entity/SpectrumEntityRenderers.java @@ -5,7 +5,7 @@ import de.dafuqs.spectrum.entity.render.ShootingStarEntityRenderer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; import net.id.incubus_core.blocklikeentities.api.client.BlockLikeEntityRenderer; import net.minecraft.client.render.entity.EntityRendererFactory; import net.minecraft.client.render.entity.FlyingItemEntityRenderer; @@ -25,7 +25,7 @@ public static void registerClient() { } private static void register(EntityType type, EntityRendererFactory factory) { - EntityRendererRegistry.INSTANCE.register(type, factory); + EntityRendererRegistry.register(type, factory); } } \ No newline at end of file diff --git a/src/main/java/de/dafuqs/spectrum/entity/entity/FloatBlockEntity.java b/src/main/java/de/dafuqs/spectrum/entity/entity/FloatBlockEntity.java index daee526744..2e78f3f198 100644 --- a/src/main/java/de/dafuqs/spectrum/entity/entity/FloatBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/entity/entity/FloatBlockEntity.java @@ -89,7 +89,7 @@ public void postTickMoveEntities() { List otherEntities = this.world.getOtherEntities(this, getBoundingBox().union(getBoundingBox().offset(0, 2 * (this.prevY - this.getY()), 0))); for (Entity entity : otherEntities) { - if (!(entity instanceof BlockLikeEntity) && !entity.noClip && this.collides()) { + if (!(entity instanceof BlockLikeEntity) && !entity.noClip && this.isCollidable()) { entity.setPosition(entity.getX(), this.getBoundingBox().maxY, entity.getZ()); } } diff --git a/src/main/java/de/dafuqs/spectrum/entity/entity/ShootingStarEntity.java b/src/main/java/de/dafuqs/spectrum/entity/entity/ShootingStarEntity.java index d31f922e88..ef327ff1f2 100644 --- a/src/main/java/de/dafuqs/spectrum/entity/entity/ShootingStarEntity.java +++ b/src/main/java/de/dafuqs/spectrum/entity/entity/ShootingStarEntity.java @@ -52,7 +52,7 @@ import org.jetbrains.annotations.NotNull; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; import java.util.stream.Collectors; public class ShootingStarEntity extends Entity { diff --git a/src/main/java/de/dafuqs/spectrum/entity/render/InkProjectileEntityRenderer.java b/src/main/java/de/dafuqs/spectrum/entity/render/InkProjectileEntityRenderer.java index 546dee3995..9519e0e14d 100644 --- a/src/main/java/de/dafuqs/spectrum/entity/render/InkProjectileEntityRenderer.java +++ b/src/main/java/de/dafuqs/spectrum/entity/render/InkProjectileEntityRenderer.java @@ -16,7 +16,7 @@ import net.minecraft.util.math.Matrix4f; import net.minecraft.util.math.Vec3f; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class InkProjectileEntityRenderer extends EntityRenderer { diff --git a/src/main/java/de/dafuqs/spectrum/entity/render/ShootingStarEntityRenderer.java b/src/main/java/de/dafuqs/spectrum/entity/render/ShootingStarEntityRenderer.java index aa4c770c85..71fa351cd2 100644 --- a/src/main/java/de/dafuqs/spectrum/entity/render/ShootingStarEntityRenderer.java +++ b/src/main/java/de/dafuqs/spectrum/entity/render/ShootingStarEntityRenderer.java @@ -18,7 +18,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import java.util.Random; +import net.minecraft.util.math.random.Random; @Environment(EnvType.CLIENT) public class ShootingStarEntityRenderer extends EntityRenderer { diff --git a/src/main/java/de/dafuqs/spectrum/helpers/BuildingHelper.java b/src/main/java/de/dafuqs/spectrum/helpers/BuildingHelper.java index 000c637a18..ce6dd79348 100644 --- a/src/main/java/de/dafuqs/spectrum/helpers/BuildingHelper.java +++ b/src/main/java/de/dafuqs/spectrum/helpers/BuildingHelper.java @@ -14,6 +14,7 @@ import org.jetbrains.annotations.NotNull; import oshi.util.tuples.Triplet; +import net.minecraft.util.math.random.Random; import java.util.*; public class BuildingHelper { diff --git a/src/main/java/de/dafuqs/spectrum/helpers/LoreHelper.java b/src/main/java/de/dafuqs/spectrum/helpers/LoreHelper.java index fe31b067e3..0fcbcaad40 100644 --- a/src/main/java/de/dafuqs/spectrum/helpers/LoreHelper.java +++ b/src/main/java/de/dafuqs/spectrum/helpers/LoreHelper.java @@ -5,9 +5,7 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtList; import net.minecraft.nbt.NbtString; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -16,11 +14,11 @@ public class LoreHelper { - public static @NotNull List getLoreTextArrayFromString(@NotNull String string) { - List loreText = new ArrayList<>(); + public static @NotNull List getLoreTextArrayFromString(@NotNull String string) { + List loreText = new ArrayList<>(); for (String split : string.split("\\\\n")) { - loreText.add(0, new LiteralText(split)); + loreText.add(0, Text.literal(split)); } return loreText; @@ -41,7 +39,7 @@ public class LoreHelper { } } - public static void setLore(@NotNull ItemStack itemStack, @Nullable List lore) { + public static void setLore(@NotNull ItemStack itemStack, @Nullable List lore) { NbtCompound nbtCompound = itemStack.getOrCreateSubNbt("display"); if (lore != null) { NbtList nbtList = new NbtList(); @@ -96,7 +94,7 @@ public static boolean hasLore(@NotNull ItemStack itemStack) { return lore; } - public static boolean equalsLore(List lore, ItemStack stack) { + public static boolean equalsLore(List lore, ItemStack stack) { if (hasLore(stack)) { List loreList = getLoreList(stack); @@ -114,7 +112,7 @@ public static boolean equalsLore(List lore, ItemStack stack) { return false; } - public static void setLore(@NotNull ItemStack stack, @Nullable TranslatableText lore) { + public static void setLore(@NotNull ItemStack stack, @Nullable Text lore) { NbtCompound nbtCompound = stack.getOrCreateSubNbt("display"); if (lore != null) { NbtList nbtList = new NbtList(); diff --git a/src/main/java/de/dafuqs/spectrum/helpers/Support.java b/src/main/java/de/dafuqs/spectrum/helpers/Support.java index 978166cc70..8a29b37ea9 100644 --- a/src/main/java/de/dafuqs/spectrum/helpers/Support.java +++ b/src/main/java/de/dafuqs/spectrum/helpers/Support.java @@ -28,7 +28,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class Support { diff --git a/src/main/java/de/dafuqs/spectrum/inventories/BedrockAnvilScreen.java b/src/main/java/de/dafuqs/spectrum/inventories/BedrockAnvilScreen.java index dd80833270..fe48a0bda8 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/BedrockAnvilScreen.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/BedrockAnvilScreen.java @@ -22,7 +22,6 @@ import net.minecraft.screen.ScreenHandlerListener; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import org.lwjgl.glfw.GLFW; @@ -79,7 +78,7 @@ protected void setup() { int i = (this.width - this.backgroundWidth) / 2; int j = (this.height - this.backgroundHeight) / 2; - this.nameField = new TextFieldWidget(this.textRenderer, i + 62, j + 24, 98, 12, new TranslatableText("container.spectrum.bedrock_anvil")); + this.nameField = new TextFieldWidget(this.textRenderer, i + 62, j + 24, 98, 12, Text.translatable("container.spectrum.bedrock_anvil")); this.nameField.setFocusUnlocked(false); this.nameField.setEditableColor(-1); this.nameField.setUneditableColor(-1); @@ -91,7 +90,7 @@ protected void setup() { this.setInitialFocus(this.nameField); this.nameField.setEditable(false); - this.loreField = new TextFieldWidget(this.textRenderer, i + 45, j + 76, 116, 12, new TranslatableText("container.spectrum.bedrock_anvil.lore")); + this.loreField = new TextFieldWidget(this.textRenderer, i + 45, j + 76, 116, 12, Text.translatable("container.spectrum.bedrock_anvil.lore")); this.loreField.setFocusUnlocked(false); this.loreField.setEditableColor(-1); this.loreField.setUneditableColor(-1); @@ -164,7 +163,7 @@ protected void drawForeground(MatrixStack matrices, int mouseX, int mouseY) { this.textRenderer.draw(matrices, this.title, this.titleX, this.titleY, 3289650); this.textRenderer.draw(matrices, this.playerInventoryTitle, this.playerInventoryTitleX, this.playerInventoryTitleY, 3289650); - this.textRenderer.draw(matrices, new TranslatableText("container.spectrum.bedrock_anvil.lore"), playerInventoryTitleX, 76, 3289650); + this.textRenderer.draw(matrices, Text.translatable("container.spectrum.bedrock_anvil.lore"), playerInventoryTitleX, 76, 3289650); int levelCost = (this.handler).getLevelCost(); if (levelCost > 0 || this.handler.getSlot(2).hasStack()) { @@ -173,7 +172,7 @@ protected void drawForeground(MatrixStack matrices, int mouseX, int mouseY) { if (!handler.getSlot(2).hasStack()) { costText = null; } else { - costText = new TranslatableText("container.repair.cost", levelCost); + costText = Text.translatable("container.repair.cost", levelCost); if (!handler.getSlot(2).canTakeItems(this.player)) { textColor = 16736352; } diff --git a/src/main/java/de/dafuqs/spectrum/inventories/BedrockAnvilScreenHandler.java b/src/main/java/de/dafuqs/spectrum/inventories/BedrockAnvilScreenHandler.java index b5d019c889..bb91ab102e 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/BedrockAnvilScreenHandler.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/BedrockAnvilScreenHandler.java @@ -17,7 +17,7 @@ import net.minecraft.screen.ScreenHandlerContext; import net.minecraft.screen.slot.Slot; import net.minecraft.tag.BlockTags; -import net.minecraft.text.LiteralText; +import net.minecraft.text.Text; import net.minecraft.world.WorldEvents; import org.apache.commons.lang3.StringUtils; @@ -307,7 +307,7 @@ public void updateResult() { outputStack.removeCustomName(); } } else if (!this.newItemName.equals(itemStack.getName().getString())) { - outputStack.setCustomName(new LiteralText(this.newItemName)); + outputStack.setCustomName(Text.literal(this.newItemName)); renamed = true; } @@ -318,7 +318,7 @@ public void updateResult() { loreChanged = true; } } else { - List lore = LoreHelper.getLoreTextArrayFromString(this.newLoreString); + List lore = LoreHelper.getLoreTextArrayFromString(this.newLoreString); if (!LoreHelper.equalsLore(lore, itemStack)) { LoreHelper.setLore(outputStack, lore); loreChanged = true; @@ -359,7 +359,7 @@ public void setNewItemName(String newItemName) { if (StringUtils.isBlank(newItemName)) { itemStack.removeCustomName(); } else { - itemStack.setCustomName(new LiteralText(this.newItemName)); + itemStack.setCustomName(Text.literal(this.newItemName)); } } this.updateResult(); diff --git a/src/main/java/de/dafuqs/spectrum/inventories/CompactingChestScreen.java b/src/main/java/de/dafuqs/spectrum/inventories/CompactingChestScreen.java index 3eedd06fdb..8d6bf8e989 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/CompactingChestScreen.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/CompactingChestScreen.java @@ -12,9 +12,7 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.network.PacketByteBuf; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; public class CompactingChestScreen extends HandledScreen { @@ -39,7 +37,7 @@ protected void setupInputFields(CompactingChestBlockEntity compactingChestBlockE int x = (this.width - this.backgroundWidth) / 2 + 3; int y = (this.height - this.backgroundHeight) / 2 + 3; - ButtonWidget craftingModeButton = new ButtonWidget(x + 154, y + 6, 16, 16, new LiteralText("Mode"), this::craftingModeButtonPressed); + ButtonWidget craftingModeButton = new ButtonWidget(x + 154, y + 6, 16, 16, Text.literal("Mode"), this::craftingModeButtonPressed); addSelectableChild(craftingModeButton); } @@ -82,7 +80,7 @@ public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { super.render(matrices, mouseX, mouseY, delta); if (mouseX > x + 153 && mouseX < x + 153 + 16 && mouseY > y + 5 && mouseY < y + 5 + 16) { - this.renderTooltip(matrices, new TranslatableText("block.spectrum.compacting_chest.toggle_crafting_mode"), mouseX, mouseY); + this.renderTooltip(matrices, Text.translatable("block.spectrum.compacting_chest.toggle_crafting_mode"), mouseX, mouseY); } else { drawMouseoverTooltip(matrices, mouseX, mouseY); } diff --git a/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreenHandler.java b/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreenHandler.java index 7927017cc6..bcd55e2c45 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreenHandler.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreenHandler.java @@ -29,8 +29,13 @@ public PaintbrushScreenHandler(int syncId, PlayerInventory playerInventory, Scre this.hasAccessToWhites = AdvancementHelper.hasAdvancement(playerInventory.player, InkColors.WHITE.getRequiredAdvancement()); } + @Override + public ItemStack transferSlot(PlayerEntity player, int index) { + return ItemStack.EMPTY; + } + public boolean canUse(PlayerEntity player) { - for(ItemStack itemStack : player.getItemsHand()) { + for(ItemStack itemStack : player.getHandItems()) { if(itemStack == paintBrushStack) { return true; } diff --git a/src/main/java/de/dafuqs/spectrum/inventories/ParticleSpawnerScreen.java b/src/main/java/de/dafuqs/spectrum/inventories/ParticleSpawnerScreen.java index 2956ebdebc..afc46a002b 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/ParticleSpawnerScreen.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/ParticleSpawnerScreen.java @@ -17,7 +17,6 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.network.PacketByteBuf; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.jetbrains.annotations.Contract; @@ -157,20 +156,20 @@ public void renderForeground(MatrixStack matrices, int mouseX, int mouseY, float protected void drawForeground(MatrixStack matrices, int mouseX, int mouseY) { this.textRenderer.draw(matrices, this.title, (float) this.titleX, (float) this.titleY, 2236962); - this.textRenderer.draw(matrices, new LiteralText("Particles / Second"), 10, 50, textColor); - this.textRenderer.draw(matrices, new LiteralText("x"), 66, 64, textColor); - this.textRenderer.draw(matrices, new LiteralText("y"), 99, 64, textColor); - this.textRenderer.draw(matrices, new LiteralText("z"), 134, 64, textColor); - this.textRenderer.draw(matrices, new LiteralText("Offset"), 10, 78, textColor); - this.textRenderer.draw(matrices, new LiteralText("Variance"), 21, 97, textColor); - this.textRenderer.draw(matrices, new LiteralText("Velocity"), 10, 117, textColor); - this.textRenderer.draw(matrices, new LiteralText("Variance"), 21, 137, textColor); - this.textRenderer.draw(matrices, new LiteralText("Scale"), 10, 161, textColor); - this.textRenderer.draw(matrices, new LiteralText("Variance"), 91, 161, textColor); - this.textRenderer.draw(matrices, new LiteralText("Duration"), 10, 181, textColor); - this.textRenderer.draw(matrices, new LiteralText("Variance"), 91, 181, textColor); - this.textRenderer.draw(matrices, new LiteralText("Gravity"), 10, 201, textColor); - this.textRenderer.draw(matrices, new LiteralText("Collisions"), 90, 201, textColor); + this.textRenderer.draw(matrices, Text.literal("Particles / Second"), 10, 50, textColor); + this.textRenderer.draw(matrices, Text.literal("x"), 66, 64, textColor); + this.textRenderer.draw(matrices, Text.literal("y"), 99, 64, textColor); + this.textRenderer.draw(matrices, Text.literal("z"), 134, 64, textColor); + this.textRenderer.draw(matrices, Text.literal("Offset"), 10, 78, textColor); + this.textRenderer.draw(matrices, Text.literal("Variance"), 21, 97, textColor); + this.textRenderer.draw(matrices, Text.literal("Velocity"), 10, 117, textColor); + this.textRenderer.draw(matrices, Text.literal("Variance"), 21, 137, textColor); + this.textRenderer.draw(matrices, Text.literal("Scale"), 10, 161, textColor); + this.textRenderer.draw(matrices, Text.literal("Variance"), 91, 161, textColor); + this.textRenderer.draw(matrices, Text.literal("Duration"), 10, 181, textColor); + this.textRenderer.draw(matrices, Text.literal("Variance"), 91, 181, textColor); + this.textRenderer.draw(matrices, Text.literal("Gravity"), 10, 201, textColor); + this.textRenderer.draw(matrices, Text.literal("Collisions"), 90, 201, textColor); } @Override @@ -203,26 +202,26 @@ protected void setupInputFields(ParticleSpawnerBlockEntity blockEntity) { int i = (this.width - this.backgroundWidth) / 2 + 3; int j = (this.height - this.backgroundHeight) / 2 + 3; - amountField = addTextFieldWidget(i + 110, j + 47, new LiteralText("Amount"), String.valueOf(blockEntity.particlesPerSecond), this::isPositiveDecimalNumberUnderThousand); - positionXField = addTextFieldWidget(i + 61, j + 74, new LiteralText("X Position"), String.valueOf(blockEntity.particleSourcePosition.getX()), this::isAbsoluteDecimalNumberThousand); - positionYField = addTextFieldWidget(i + 96, j + 74, new LiteralText("Y Position"), String.valueOf(blockEntity.particleSourcePosition.getY()), this::isAbsoluteDecimalNumberThousand); - positionZField = addTextFieldWidget(i + 131, j + 74, new LiteralText("Z Position"), String.valueOf(blockEntity.particleSourcePosition.getZ()), this::isAbsoluteDecimalNumberThousand); - positionXVarianceField = addTextFieldWidget(i + 69, j + 94, new LiteralText("X Position Variance"), String.valueOf(blockEntity.particleSourcePositionVariance.getX()), this::isAbsoluteDecimalNumberThousand); - positionYVarianceField = addTextFieldWidget(i + 104, j + 94, new LiteralText("Y Position Variance"), String.valueOf(blockEntity.particleSourcePositionVariance.getY()), this::isAbsoluteDecimalNumberThousand); - positionZVarianceField = addTextFieldWidget(i + 140, j + 94, new LiteralText("Z Position Variance"), String.valueOf(blockEntity.particleSourcePositionVariance.getZ()), this::isAbsoluteDecimalNumberThousand); - velocityXField = addTextFieldWidget(i + 61, j + 114, new LiteralText("X Velocity"), String.valueOf(blockEntity.velocity.getX()), this::isAbsoluteDecimalNumberThousand); - velocityYField = addTextFieldWidget(i + 96, j + 114, new LiteralText("Y Velocity"), String.valueOf(blockEntity.velocity.getY()), this::isAbsoluteDecimalNumberThousand); - velocityZField = addTextFieldWidget(i + 131, j + 114, new LiteralText("Z Velocity"), String.valueOf(blockEntity.velocity.getZ()), this::isAbsoluteDecimalNumberThousand); - velocityXVarianceField = addTextFieldWidget(i + 69, j + 134, new LiteralText("X Velocity Variance"), String.valueOf(blockEntity.velocityVariance.getX()), this::isAbsoluteDecimalNumberThousand); - velocityYVarianceField = addTextFieldWidget(i + 104, j + 134, new LiteralText("Y Velocity Variance"), String.valueOf(blockEntity.velocityVariance.getY()), this::isAbsoluteDecimalNumberThousand); - velocityZVarianceField = addTextFieldWidget(i + 140, j + 134, new LiteralText("Z Velocity Variance"), String.valueOf(blockEntity.velocityVariance.getZ()), this::isAbsoluteDecimalNumberThousand); - scale = addTextFieldWidget(i + 55, j + 158, new LiteralText("Scale"), String.valueOf(blockEntity.scale), this::isPositiveDecimalNumberUnderTen); - scaleVariance = addTextFieldWidget(i + 139, j + 158, new LiteralText("Scale Variance"), String.valueOf(blockEntity.scaleVariance), this::isPositiveDecimalNumberUnderTen); - duration = addTextFieldWidget(i + 55, j + 178, new LiteralText("Duration"), String.valueOf(blockEntity.lifetimeTicks), this::isPositiveWholeNumberUnderThousand); - durationVariance = addTextFieldWidget(i + 139, j + 178, new LiteralText("Duration Variance"), String.valueOf(blockEntity.lifetimeVariance), this::isPositiveWholeNumberUnderThousand); - gravity = addTextFieldWidget(i + 55, j + 198, new LiteralText("Gravity"), String.valueOf(blockEntity.gravity), this::isBetweenZeroAndOne); + amountField = addTextFieldWidget(i + 110, j + 47, Text.literal("Amount"), String.valueOf(blockEntity.particlesPerSecond), this::isPositiveDecimalNumberUnderThousand); + positionXField = addTextFieldWidget(i + 61, j + 74, Text.literal("X Position"), String.valueOf(blockEntity.particleSourcePosition.getX()), this::isAbsoluteDecimalNumberThousand); + positionYField = addTextFieldWidget(i + 96, j + 74, Text.literal("Y Position"), String.valueOf(blockEntity.particleSourcePosition.getY()), this::isAbsoluteDecimalNumberThousand); + positionZField = addTextFieldWidget(i + 131, j + 74, Text.literal("Z Position"), String.valueOf(blockEntity.particleSourcePosition.getZ()), this::isAbsoluteDecimalNumberThousand); + positionXVarianceField = addTextFieldWidget(i + 69, j + 94, Text.literal("X Position Variance"), String.valueOf(blockEntity.particleSourcePositionVariance.getX()), this::isAbsoluteDecimalNumberThousand); + positionYVarianceField = addTextFieldWidget(i + 104, j + 94, Text.literal("Y Position Variance"), String.valueOf(blockEntity.particleSourcePositionVariance.getY()), this::isAbsoluteDecimalNumberThousand); + positionZVarianceField = addTextFieldWidget(i + 140, j + 94, Text.literal("Z Position Variance"), String.valueOf(blockEntity.particleSourcePositionVariance.getZ()), this::isAbsoluteDecimalNumberThousand); + velocityXField = addTextFieldWidget(i + 61, j + 114, Text.literal("X Velocity"), String.valueOf(blockEntity.velocity.getX()), this::isAbsoluteDecimalNumberThousand); + velocityYField = addTextFieldWidget(i + 96, j + 114, Text.literal("Y Velocity"), String.valueOf(blockEntity.velocity.getY()), this::isAbsoluteDecimalNumberThousand); + velocityZField = addTextFieldWidget(i + 131, j + 114, Text.literal("Z Velocity"), String.valueOf(blockEntity.velocity.getZ()), this::isAbsoluteDecimalNumberThousand); + velocityXVarianceField = addTextFieldWidget(i + 69, j + 134, Text.literal("X Velocity Variance"), String.valueOf(blockEntity.velocityVariance.getX()), this::isAbsoluteDecimalNumberThousand); + velocityYVarianceField = addTextFieldWidget(i + 104, j + 134, Text.literal("Y Velocity Variance"), String.valueOf(blockEntity.velocityVariance.getY()), this::isAbsoluteDecimalNumberThousand); + velocityZVarianceField = addTextFieldWidget(i + 140, j + 134, Text.literal("Z Velocity Variance"), String.valueOf(blockEntity.velocityVariance.getZ()), this::isAbsoluteDecimalNumberThousand); + scale = addTextFieldWidget(i + 55, j + 158, Text.literal("Scale"), String.valueOf(blockEntity.scale), this::isPositiveDecimalNumberUnderTen); + scaleVariance = addTextFieldWidget(i + 139, j + 158, Text.literal("Scale Variance"), String.valueOf(blockEntity.scaleVariance), this::isPositiveDecimalNumberUnderTen); + duration = addTextFieldWidget(i + 55, j + 178, Text.literal("Duration"), String.valueOf(blockEntity.lifetimeTicks), this::isPositiveWholeNumberUnderThousand); + durationVariance = addTextFieldWidget(i + 139, j + 178, Text.literal("Duration Variance"), String.valueOf(blockEntity.lifetimeVariance), this::isPositiveWholeNumberUnderThousand); + gravity = addTextFieldWidget(i + 55, j + 198, Text.literal("Gravity"), String.valueOf(blockEntity.gravity), this::isBetweenZeroAndOne); - collisionsButton = new ButtonWidget(i + 142, j + 194, 16, 16, new LiteralText("Collisions"), this::collisionButtonPressed); + collisionsButton = new ButtonWidget(i + 142, j + 194, 16, 16, Text.literal("Collisions"), this::collisionButtonPressed); collisionsEnabled = blockEntity.collisions; addSelectableChild(collisionsButton); @@ -248,9 +247,9 @@ protected void setupInputFields(ParticleSpawnerBlockEntity blockEntity) { add(collisionsButton); }}; - backButton = new ButtonWidget(i + 11, j + 19, 12, 14, new LiteralText("back"), this::navigationButtonPressed); + backButton = new ButtonWidget(i + 11, j + 19, 12, 14, Text.literal("back"), this::navigationButtonPressed); addSelectableChild(backButton); - forwardButton = new ButtonWidget(i + 147, j + 19, 12, 14, new LiteralText("forward"), this::navigationButtonPressed); + forwardButton = new ButtonWidget(i + 147, j + 19, 12, 14, Text.literal("forward"), this::navigationButtonPressed); addSelectableChild(forwardButton); particleButtons = new ArrayList<>(); @@ -293,7 +292,7 @@ private void navigationButtonPressed(ButtonWidget buttonWidget) { } private @NotNull ButtonWidget addParticleButton(int x, int y) { - ButtonWidget button = new ButtonWidget(x, y, 20, 20, new LiteralText("asdfsd.asdfsd"), this::particleButtonPressed); + ButtonWidget button = new ButtonWidget(x, y, 20, 20, Text.literal("asdfsd.asdfsd"), this::particleButtonPressed); addSelectableChild(button); return button; } diff --git a/src/main/java/de/dafuqs/spectrum/inventories/ParticleSpawnerScreenHandler.java b/src/main/java/de/dafuqs/spectrum/inventories/ParticleSpawnerScreenHandler.java index b62ea328e8..8c7cbdb934 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/ParticleSpawnerScreenHandler.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/ParticleSpawnerScreenHandler.java @@ -4,6 +4,7 @@ import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.item.ItemStack; import net.minecraft.network.PacketByteBuf; import net.minecraft.screen.ScreenHandler; import net.minecraft.util.math.BlockPos; @@ -42,6 +43,11 @@ public ParticleSpawnerBlockEntity getBlockEntity() { return this.particleSpawnerBlockEntity; } + @Override + public ItemStack transferSlot(PlayerEntity player, int index) { + return ItemStack.EMPTY; + } + @Override public boolean canUse(PlayerEntity player) { return this.particleSpawnerBlockEntity != null && !this.particleSpawnerBlockEntity.isRemoved(); diff --git a/src/main/java/de/dafuqs/spectrum/inventories/PedestalScreen.java b/src/main/java/de/dafuqs/spectrum/inventories/PedestalScreen.java index 449d27d92c..7b943e46e3 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/PedestalScreen.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/PedestalScreen.java @@ -9,7 +9,6 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.BlockRotation; import net.minecraft.util.Identifier; import org.jetbrains.annotations.Contract; @@ -139,7 +138,7 @@ public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { super.render(matrices, mouseX, mouseY, delta); if (mouseOverInformationIcon(mouseX, mouseY)) { - this.renderTooltip(matrices, new TranslatableText("multiblock.spectrum.pedestal.upgrade_available"), mouseX, mouseY); + this.renderTooltip(matrices, Text.translatable("multiblock.spectrum.pedestal.upgrade_available"), mouseX, mouseY); } else { drawMouseoverTooltip(matrices, mouseX, mouseY); } diff --git a/src/main/java/de/dafuqs/spectrum/inventories/SuckingChestScreen.java b/src/main/java/de/dafuqs/spectrum/inventories/SuckingChestScreen.java index 96af5d0b76..3ba9dfb905 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/SuckingChestScreen.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/SuckingChestScreen.java @@ -52,7 +52,7 @@ public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { super.render(matrices, mouseX, mouseY, delta); /*if(mouseX > x+153 && mouseX < x+153+16 && mouseY > y+5 && mouseY < y+5+16) { - this.renderTooltip(matrices, new TranslatableText("block.spectrum.compacting_chest.toggle_crafting_mode"), mouseX, mouseY); + this.renderTooltip(matrices, Text.translatable("block.spectrum.compacting_chest.toggle_crafting_mode"), mouseX, mouseY); } else { }*/ diff --git a/src/main/java/de/dafuqs/spectrum/inventories/widgets/ColorSelectionWidget.java b/src/main/java/de/dafuqs/spectrum/inventories/widgets/ColorSelectionWidget.java index 60d6ee5e9f..54ab1cd2ba 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/widgets/ColorSelectionWidget.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/widgets/ColorSelectionWidget.java @@ -15,7 +15,7 @@ import net.minecraft.client.gui.widget.ClickableWidget; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.sound.SoundCategory; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Pair; import net.minecraft.util.math.MathHelper; import org.jetbrains.annotations.Nullable; @@ -42,7 +42,7 @@ public class ColorSelectionWidget extends ClickableWidget implements Drawable, E int selectedDotY; public ColorSelectionWidget(int x, int y, int selectedDotX, int selectedDotY, Screen screen, ColorPickerBlockEntity colorPicker) { - super(x, y, 56, 14, new TranslatableText("")); + super(x, y, 56, 14, Text.literal("")); this.colorPicker = colorPicker; this.selectedDotX = selectedDotX; this.selectedDotY = selectedDotY; @@ -96,7 +96,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) { @Override public void appendNarrations(NarrationMessageBuilder builder) { - builder.put(NarrationPart.TITLE, new TranslatableText("spectrum.narration.color_selection", this.colorPicker.getSelectedColor())); + builder.put(NarrationPart.TITLE, Text.translatable("spectrum.narration.color_selection", this.colorPicker.getSelectedColor())); } public void draw(MatrixStack matrices) { @@ -126,7 +126,7 @@ public void draw(MatrixStack matrices) { public void drawMouseoverTooltip(MatrixStack matrices, int mouseX, int mouseY) { boolean overUnselection = mouseX >= (double) selectedDotX && mouseX < (double) (selectedDotX + 4) && mouseY >= (double) selectedDotY && mouseY < (double) (selectedDotY + 4); if (overUnselection) { - screen.renderTooltip(matrices, List.of(new TranslatableText("spectrum.tooltip.ink_powered.unselect_color")), Optional.empty(), x, y); + screen.renderTooltip(matrices, List.of(Text.translatable("spectrum.tooltip.ink_powered.unselect_color")), Optional.empty(), x, y); } else { int xOffset = MathHelper.floor(mouseX) - this.x; @@ -140,7 +140,7 @@ public void drawMouseoverTooltip(MatrixStack matrices, int mouseX, int mouseY) { if (AdvancementHelper.hasAdvancementClient(newColor.getRequiredAdvancement())) { screen.renderTooltip(matrices, List.of(newColor.getName()), Optional.empty(), x, y); } else { - screen.renderTooltip(matrices, List.of(new TranslatableText("spectrum.tooltip.ink_powered.unselect_color")), Optional.empty(), x, y); + screen.renderTooltip(matrices, List.of(Text.translatable("spectrum.tooltip.ink_powered.unselect_color")), Optional.empty(), x, y); } } } diff --git a/src/main/java/de/dafuqs/spectrum/inventories/widgets/InkGaugeWidget.java b/src/main/java/de/dafuqs/spectrum/inventories/widgets/InkGaugeWidget.java index 907c9cbac4..aece54d8c0 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/widgets/InkGaugeWidget.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/widgets/InkGaugeWidget.java @@ -13,9 +13,10 @@ import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.apache.commons.lang3.StringUtils; +import net.minecraft.util.math.random.Random; + import java.util.*; import static de.dafuqs.spectrum.helpers.Support.getShortenedNumberString; @@ -71,13 +72,13 @@ public void drawMouseoverTooltip(MatrixStack matrices, int x, int y) { for (Map.Entry entry : energy.entrySet()) { long amount = entry.getValue(); if (amount > 0) { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_powered.bullet." + entry.getKey().toString().toLowerCase(Locale.ROOT), getShortenedNumberString(amount))); + tooltip.add(Text.translatable("spectrum.tooltip.ink_powered.bullet." + entry.getKey().toString().toLowerCase(Locale.ROOT), getShortenedNumberString(amount))); } } if (tooltip.size() == 0) { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_powered.empty")); + tooltip.add(Text.translatable("spectrum.tooltip.ink_powered.empty")); } else { - tooltip.add(0, new TranslatableText("spectrum.tooltip.ink_powered.stored")); + tooltip.add(0, Text.translatable("spectrum.tooltip.ink_powered.stored")); } screen.renderTooltip(matrices, tooltip, Optional.empty(), x, y); diff --git a/src/main/java/de/dafuqs/spectrum/inventories/widgets/StackedInkMeterWidget.java b/src/main/java/de/dafuqs/spectrum/inventories/widgets/StackedInkMeterWidget.java index cc8cf312fe..a48be1d45e 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/widgets/StackedInkMeterWidget.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/widgets/StackedInkMeterWidget.java @@ -13,7 +13,7 @@ import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import java.util.List; import java.util.Map; @@ -65,7 +65,7 @@ public void drawMouseoverTooltip(MatrixStack matrices, int x, int y) { String readableCurrentTotalString = Support.getShortenedNumberString(currentTotal); String percent = Support.getSensiblePercent(this.inkStorage.getCurrentTotal(), (this.inkStorage.getMaxTotal())); screen.renderTooltip(matrices, - List.of(new TranslatableText("spectrum.tooltip.ink_powered.percent_filled", readableCurrentTotalString, percent)), + List.of(Text.translatable("spectrum.tooltip.ink_powered.percent_filled", readableCurrentTotalString, percent)), Optional.empty(), x, y); } diff --git a/src/main/java/de/dafuqs/spectrum/items/CraftingTabletItem.java b/src/main/java/de/dafuqs/spectrum/items/CraftingTabletItem.java index 6b27e8bc6e..e6af9115d2 100644 --- a/src/main/java/de/dafuqs/spectrum/items/CraftingTabletItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/CraftingTabletItem.java @@ -25,7 +25,6 @@ import net.minecraft.screen.SimpleNamedScreenHandlerFactory; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; import net.minecraft.util.Identifier; @@ -38,7 +37,7 @@ public class CraftingTabletItem extends Item implements LoomPatternProvider { - private static final Text TITLE = new TranslatableText("item.spectrum.crafting_tablet"); + private static final Text TITLE = Text.translatable("item.spectrum.crafting_tablet"); public CraftingTabletItem(Settings settings) { super(settings); @@ -121,14 +120,14 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, super.appendTooltip(itemStack, world, tooltip, tooltipContext); Recipe recipe = getStoredRecipe(world, itemStack); if (recipe == null) { - tooltip.add(new TranslatableText("item.spectrum.crafting_tablet.tooltip.no_recipe").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.crafting_tablet.tooltip.no_recipe").formatted(Formatting.GRAY)); } else { if (recipe instanceof PedestalCraftingRecipe) { - tooltip.add(new TranslatableText("item.spectrum.crafting_tablet.tooltip.pedestal_recipe").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.crafting_tablet.tooltip.pedestal_recipe").formatted(Formatting.GRAY)); } else { - tooltip.add(new TranslatableText("item.spectrum.crafting_tablet.tooltip.crafting_recipe").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.crafting_tablet.tooltip.crafting_recipe").formatted(Formatting.GRAY)); } - tooltip.add(new TranslatableText("item.spectrum.crafting_tablet.tooltip.shift_to_view_gui").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.crafting_tablet.tooltip.shift_to_view_gui").formatted(Formatting.GRAY)); } SpectrumBannerPatternItem.addBannerPatternProviderTooltip(tooltip); diff --git a/src/main/java/de/dafuqs/spectrum/items/DecayPlacerItem.java b/src/main/java/de/dafuqs/spectrum/items/DecayPlacerItem.java index 9447383595..4a9cac22b9 100644 --- a/src/main/java/de/dafuqs/spectrum/items/DecayPlacerItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/DecayPlacerItem.java @@ -7,7 +7,6 @@ import net.minecraft.client.item.TooltipContext; import net.minecraft.item.*; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.ActionResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.TickPriority; @@ -45,13 +44,13 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, Item item = itemStack.getItem(); if (item.equals(SpectrumItems.BOTTLE_OF_FADING)) { - tooltip.add(new TranslatableText("item.spectrum.bottle_of_fading.tooltip")); + tooltip.add(Text.translatable("item.spectrum.bottle_of_fading.tooltip")); } else if (item.equals(SpectrumItems.BOTTLE_OF_FAILING)) { - tooltip.add(new TranslatableText("item.spectrum.bottle_of_failing.tooltip")); + tooltip.add(Text.translatable("item.spectrum.bottle_of_failing.tooltip")); } else if (item.equals(SpectrumItems.BOTTLE_OF_RUIN)) { - tooltip.add(new TranslatableText("item.spectrum.bottle_of_ruin.tooltip")); + tooltip.add(Text.translatable("item.spectrum.bottle_of_ruin.tooltip")); } else if (item.equals(SpectrumItems.BOTTLE_OF_DECAY_AWAY)) { - tooltip.add(new TranslatableText("item.spectrum.bottle_of_decay_away.tooltip")); + tooltip.add(Text.translatable("item.spectrum.bottle_of_decay_away.tooltip")); } } diff --git a/src/main/java/de/dafuqs/spectrum/items/ExperienceStorageItem.java b/src/main/java/de/dafuqs/spectrum/items/ExperienceStorageItem.java index 6eb9fd97f7..e02712ed85 100644 --- a/src/main/java/de/dafuqs/spectrum/items/ExperienceStorageItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/ExperienceStorageItem.java @@ -6,7 +6,7 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; -import java.util.Random; +import net.minecraft.util.math.random.Random; public interface ExperienceStorageItem { diff --git a/src/main/java/de/dafuqs/spectrum/items/ItemWithTooltip.java b/src/main/java/de/dafuqs/spectrum/items/ItemWithTooltip.java index 396268a426..b6bb888910 100644 --- a/src/main/java/de/dafuqs/spectrum/items/ItemWithTooltip.java +++ b/src/main/java/de/dafuqs/spectrum/items/ItemWithTooltip.java @@ -3,8 +3,8 @@ import net.minecraft.client.item.TooltipContext; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.text.MutableText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -13,11 +13,11 @@ public class ItemWithTooltip extends Item { - TranslatableText tooltipText; + MutableText tooltipText; public ItemWithTooltip(Settings settings, String tooltip) { super(settings); - this.tooltipText = new TranslatableText(tooltip); + this.tooltipText = Text.translatable(tooltip); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/items/MidnightAberrationItem.java b/src/main/java/de/dafuqs/spectrum/items/MidnightAberrationItem.java index d4e9b006aa..25d74fea42 100644 --- a/src/main/java/de/dafuqs/spectrum/items/MidnightAberrationItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/MidnightAberrationItem.java @@ -12,7 +12,6 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -49,7 +48,7 @@ public void appendTooltip(ItemStack stack, @Nullable World world, List too NbtCompound compound = stack.getNbt(); if (compound != null && compound.getBoolean("Stable")) { - tooltip.add(new TranslatableText("item.spectrum.midnight_aberration.tooltip.stable")); + tooltip.add(Text.translatable("item.spectrum.midnight_aberration.tooltip.stable")); } } diff --git a/src/main/java/de/dafuqs/spectrum/items/MoonstruckNectarItem.java b/src/main/java/de/dafuqs/spectrum/items/MoonstruckNectarItem.java index 7cd9112253..d1a57ba1ae 100644 --- a/src/main/java/de/dafuqs/spectrum/items/MoonstruckNectarItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/MoonstruckNectarItem.java @@ -8,7 +8,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.UseAction; @@ -32,8 +31,8 @@ public UseAction getUseAction(ItemStack stack) { @Override public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { super.appendTooltip(itemStack, world, tooltip, tooltipContext); - tooltip.add(new TranslatableText("item.spectrum.moonstruck_nectar.tooltip").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.moonstruck_nectar.tooltip2").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.moonstruck_nectar.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.moonstruck_nectar.tooltip2").formatted(Formatting.GRAY)); } } diff --git a/src/main/java/de/dafuqs/spectrum/items/SpectrumBannerPatternItem.java b/src/main/java/de/dafuqs/spectrum/items/SpectrumBannerPatternItem.java index 8b078ae789..1db30827b4 100644 --- a/src/main/java/de/dafuqs/spectrum/items/SpectrumBannerPatternItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/SpectrumBannerPatternItem.java @@ -5,8 +5,8 @@ import net.minecraft.client.item.TooltipContext; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.text.MutableText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -15,19 +15,19 @@ public class SpectrumBannerPatternItem extends Item implements LoomPatternProvider { - public static final TranslatableText TOOLTIP_TEXT = new TranslatableText("item.spectrum.tooltip.loom_pattern_available"); + public static final Text TOOLTIP_TEXT = Text.translatable("item.spectrum.tooltip.loom_pattern_available").formatted(Formatting.GRAY); private final LoomPattern pattern; - private final TranslatableText tooltipText; + private final MutableText tooltipText; public SpectrumBannerPatternItem(Settings settings, LoomPattern pattern, String tooltipText) { super(settings); this.pattern = pattern; - this.tooltipText = new TranslatableText(tooltipText); + this.tooltipText = Text.translatable(tooltipText); } public static void addBannerPatternProviderTooltip(List tooltips) { - tooltips.add(TOOLTIP_TEXT.formatted(Formatting.GRAY)); + tooltips.add(TOOLTIP_TEXT); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/items/SpectrumMobSpawnerItem.java b/src/main/java/de/dafuqs/spectrum/items/SpectrumMobSpawnerItem.java index 07e7c3455c..1563c1cc0d 100644 --- a/src/main/java/de/dafuqs/spectrum/items/SpectrumMobSpawnerItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/SpectrumMobSpawnerItem.java @@ -17,7 +17,6 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.state.property.Property; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; import net.minecraft.util.math.BlockPos; @@ -121,27 +120,27 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, short requiredPlayerRange = blockEntityTag.getShort("RequiredPlayerRange"); if (entityType.isPresent()) { - tooltip.add(new TranslatableText(entityType.get().getTranslationKey())); + tooltip.add(Text.translatable(entityType.get().getTranslationKey())); } else { - tooltip.add(new TranslatableText("item.spectrum.spawner.tooltip.unknown_mob")); + tooltip.add(Text.translatable("item.spectrum.spawner.tooltip.unknown_mob")); } if (spawnCount > 0) { - tooltip.add(new TranslatableText("item.spectrum.spawner.tooltip.spawn_count", spawnCount).formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.spawner.tooltip.spawn_count", spawnCount).formatted(Formatting.GRAY)); } if (minSpawnDelay > 0) { - tooltip.add(new TranslatableText("item.spectrum.spawner.tooltip.min_spawn_delay", minSpawnDelay).formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.spawner.tooltip.min_spawn_delay", minSpawnDelay).formatted(Formatting.GRAY)); } if (maxSpawnDelay > 0) { - tooltip.add(new TranslatableText("item.spectrum.spawner.tooltip.max_spawn_delay", maxSpawnDelay).formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.spawner.tooltip.max_spawn_delay", maxSpawnDelay).formatted(Formatting.GRAY)); } if (spawnRange > 0) { - tooltip.add(new TranslatableText("item.spectrum.spawner.tooltip.spawn_range", spawnRange).formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.spawner.tooltip.spawn_range", spawnRange).formatted(Formatting.GRAY)); } if (requiredPlayerRange > 0) { - tooltip.add(new TranslatableText("item.spectrum.spawner.tooltip.required_player_range", requiredPlayerRange).formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.spawner.tooltip.required_player_range", requiredPlayerRange).formatted(Formatting.GRAY)); } } catch (Exception e) { - tooltip.add(new TranslatableText("item.spectrum.spawner.tooltip.unknown_mob")); + tooltip.add(Text.translatable("item.spectrum.spawner.tooltip.unknown_mob")); } } } diff --git a/src/main/java/de/dafuqs/spectrum/items/armor/GemstoneArmorItem.java b/src/main/java/de/dafuqs/spectrum/items/armor/GemstoneArmorItem.java index 27ab1fa211..bb6a43b36f 100644 --- a/src/main/java/de/dafuqs/spectrum/items/armor/GemstoneArmorItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/armor/GemstoneArmorItem.java @@ -14,7 +14,6 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.world.World; import org.jetbrains.annotations.NotNull; @@ -96,16 +95,16 @@ private void process(@NotNull EquipmentSlot equipmentSlot, DamageSource source, public void addTooltip(List tooltip, @NotNull EquipmentSlot equipmentSlot) { switch (equipmentSlot) { case HEAD -> { - tooltip.add(new TranslatableText("item.spectrum.emergency_helmet.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.emergency_helmet.tooltip").formatted(Formatting.GRAY)); } case CHEST -> { - tooltip.add(new TranslatableText("item.spectrum.emergency_chestplate.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.emergency_chestplate.tooltip").formatted(Formatting.GRAY)); } case LEGS -> { - tooltip.add(new TranslatableText("item.spectrum.emergency_leggings.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.emergency_leggings.tooltip").formatted(Formatting.GRAY)); } case FEET -> { - tooltip.add(new TranslatableText("item.spectrum.emergency_boots.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.emergency_boots.tooltip").formatted(Formatting.GRAY)); } } } diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/BlockFlooderItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/BlockFlooderItem.java index 94c824f8da..3f048aed35 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/BlockFlooderItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/BlockFlooderItem.java @@ -9,7 +9,6 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.stat.Stats; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -45,10 +44,10 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.block_flooder.tooltip").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.block_flooder.tooltip2").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.block_flooder.tooltip3").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.block_flooder.tooltip4").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.block_flooder.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.block_flooder.tooltip2").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.block_flooder.tooltip3").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.block_flooder.tooltip4").formatted(Formatting.GRAY)); } } \ No newline at end of file diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/BottomlessBundleItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/BottomlessBundleItem.java index 4646b9305d..f03e9c1272 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/BottomlessBundleItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/BottomlessBundleItem.java @@ -33,7 +33,6 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.stat.Stats; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.*; import net.minecraft.util.math.BlockPointer; import net.minecraft.util.math.BlockPos; @@ -317,22 +316,22 @@ public void appendTooltip(ItemStack stack, World world, List tooltip, Tool } int storedAmount = getStoredAmount(stack); if (storedAmount == 0) { - tooltip.add(new TranslatableText("item.spectrum.void_bundle.tooltip.empty").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.void_bundle.tooltip.empty").formatted(Formatting.GRAY)); if(locked) { - tooltip.add(new TranslatableText("item.spectrum.void_bundle.tooltip.locked").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.void_bundle.tooltip.locked").formatted(Formatting.GRAY)); } } else { ItemStack firstStack = getFirstBundledStack(stack); String totalStacks = Support.getShortenedNumberString(storedAmount / (float) firstStack.getMaxCount()); - tooltip.add(new TranslatableText("item.spectrum.void_bundle.tooltip.count", storedAmount, getMaxStoredAmount(stack), totalStacks).formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.void_bundle.tooltip.count", storedAmount, getMaxStoredAmount(stack), totalStacks).formatted(Formatting.GRAY)); if(locked) { - tooltip.add(new TranslatableText("item.spectrum.void_bundle.tooltip.locked").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.void_bundle.tooltip.locked").formatted(Formatting.GRAY)); } else { - tooltip.add(new TranslatableText("item.spectrum.void_bundle.tooltip.enter_inventory", firstStack.getName().getString()).formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.void_bundle.tooltip.enter_inventory", firstStack.getName().getString()).formatted(Formatting.GRAY)); } } if (EnchantmentHelper.getLevel(SpectrumEnchantments.VOIDING, stack) > 0) { - tooltip.add(new TranslatableText("item.spectrum.void_bundle.tooltip.voiding")); + tooltip.add(Text.translatable("item.spectrum.void_bundle.tooltip.voiding")); } } diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/CelestialPocketWatchItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/CelestialPocketWatchItem.java index 65cf5e9f43..85e3142e04 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/CelestialPocketWatchItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/CelestialPocketWatchItem.java @@ -10,7 +10,6 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -34,7 +33,7 @@ public static boolean advanceTime(ServerPlayerEntity player, @NotNull ServerWorl GameRules.BooleanRule doDaylightCycleRule = world.getGameRules().get(GameRules.DO_DAYLIGHT_CYCLE); if (doDaylightCycleRule.get()) { if (world.getDimension().hasFixedTime()) { - player.sendMessage(new TranslatableText("item.spectrum.celestial_pocketwatch.tooltip.use_blocked_fixed_time"), false); + player.sendMessage(Text.translatable("item.spectrum.celestial_pocketwatch.tooltip.use_blocked_fixed_time"), false); } else { SpectrumS2CPacketSender.startSkyLerping(world, TIME_STEP_TICKS); long timeOfDay = world.getTimeOfDay(); @@ -42,7 +41,7 @@ public static boolean advanceTime(ServerPlayerEntity player, @NotNull ServerWorl return true; } } else { - player.sendMessage(new TranslatableText("item.spectrum.celestial_pocketwatch.tooltip.use_blocked_gamerule"), false); + player.sendMessage(Text.translatable("item.spectrum.celestial_pocketwatch.tooltip.use_blocked_gamerule"), false); } return false; } @@ -72,12 +71,12 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, GameRules.BooleanRule doDaylightCycleRule = world.getGameRules().get(GameRules.DO_DAYLIGHT_CYCLE); if (doDaylightCycleRule.get()) { if (world.getDimension().hasFixedTime()) { - tooltip.add(new TranslatableText("item.spectrum.celestial_pocketwatch.tooltip.use_blocked_fixed_time").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.celestial_pocketwatch.tooltip.use_blocked_fixed_time").formatted(Formatting.GRAY)); } else { - tooltip.add(new TranslatableText("item.spectrum.celestial_pocketwatch.tooltip.working").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.celestial_pocketwatch.tooltip.working").formatted(Formatting.GRAY)); } } else { - tooltip.add(new TranslatableText("item.spectrum.celestial_pocketwatch.tooltip.use_blocked_gamerule").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.celestial_pocketwatch.tooltip.use_blocked_gamerule").formatted(Formatting.GRAY)); } } } diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderBagItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderBagItem.java index b822ca9b6a..698b229d52 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderBagItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderBagItem.java @@ -6,7 +6,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.screen.GenericContainerScreenHandler; import net.minecraft.screen.SimpleNamedScreenHandlerFactory; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; @@ -25,7 +25,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han if (enderChestInventory != null) { user.openHandledScreen(new SimpleNamedScreenHandlerFactory((syncId, inventory, playerx) -> { return GenericContainerScreenHandler.createGeneric9x3(syncId, inventory, enderChestInventory); - }, new TranslatableText("container.enderchest"))); + }, Text.translatable("container.enderchest"))); return TypedActionResult.consume(itemStack); } else { diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java index d3af6764d4..90d9feb66f 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java @@ -30,7 +30,6 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.stat.Stats; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.*; import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult; @@ -209,7 +208,7 @@ public void appendTooltip(ItemStack itemStack, @Nullable World world, List if (teleportTargetPos.isPresent()) { String dimensionDisplayString = Support.getReadableDimensionString(teleportTargetPos.get().getLeft()); Vec3d pos = teleportTargetPos.get().getRight(); - tooltip.add(new TranslatableText("item.spectrum.ender_splice.tooltip.bound_pos", (int) pos.x, (int) pos.y, (int) pos.z, dimensionDisplayString)); + tooltip.add(Text.translatable("item.spectrum.ender_splice.tooltip.bound_pos", (int) pos.x, (int) pos.y, (int) pos.z, dimensionDisplayString)); return; } else { // If UUID stored => Teleport to player, if online @@ -217,15 +216,15 @@ public void appendTooltip(ItemStack itemStack, @Nullable World world, List if (teleportTargetPlayerUUID.isPresent()) { Optional teleportTargetPlayerName = getTeleportTargetPlayerName(itemStack); if (teleportTargetPlayerName.isPresent()) { - tooltip.add(new TranslatableText("item.spectrum.ender_splice.tooltip.bound_player", teleportTargetPlayerName.get())); + tooltip.add(Text.translatable("item.spectrum.ender_splice.tooltip.bound_player", teleportTargetPlayerName.get())); } else { - tooltip.add(new TranslatableText("item.spectrum.ender_splice.tooltip.bound_player", "???")); + tooltip.add(Text.translatable("item.spectrum.ender_splice.tooltip.bound_player", "???")); } return; } } - tooltip.add(new TranslatableText("item.spectrum.ender_splice.tooltip.unbound")); + tooltip.add(Text.translatable("item.spectrum.ender_splice.tooltip.unbound")); } public Optional> getTeleportTargetPos(@NotNull ItemStack itemStack) { diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/ExchangeStaffItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/ExchangeStaffItem.java index 806513faed..d2460e8802 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/ExchangeStaffItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/ExchangeStaffItem.java @@ -31,7 +31,6 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; @@ -184,12 +183,12 @@ public static ActionResult exchange(World world, BlockPos pos, @NotNull PlayerEn public void appendTooltip(ItemStack stack, World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); addInkPoweredTooltip(tooltip); - tooltip.add(new TranslatableText("item.spectrum.exchange_staff.tooltip.range", getRange(MinecraftClient.getInstance().player)).formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.exchange_staff.tooltip.crouch").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.exchange_staff.tooltip.range", getRange(MinecraftClient.getInstance().player)).formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.exchange_staff.tooltip.crouch").formatted(Formatting.GRAY)); Optional optionalBlock = getBlockTarget(stack); if (optionalBlock.isPresent()) { - tooltip.add(new TranslatableText("item.spectrum.exchange_staff.tooltip.target", optionalBlock.get().getName()).formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.exchange_staff.tooltip.target", optionalBlock.get().getName()).formatted(Formatting.GRAY)); } } diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/GildedBookItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/GildedBookItem.java index 7f4b73b962..df00cfbc7d 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/GildedBookItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/GildedBookItem.java @@ -5,7 +5,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -25,9 +24,9 @@ public int getEnchantability() { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.gilded_book.tooltip.enchantability").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.gilded_book.tooltip.copy_enchantments").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.gilded_book.tooltip.copy_enchantments2").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.gilded_book.tooltip.enchantability").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.gilded_book.tooltip.copy_enchantments").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.gilded_book.tooltip.copy_enchantments2").formatted(Formatting.GRAY)); } } diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/KnowledgeGemItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/KnowledgeGemItem.java index db19a047d0..017fab8b95 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/KnowledgeGemItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/KnowledgeGemItem.java @@ -20,9 +20,7 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -128,12 +126,12 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, int maxExperience = getMaxStoredExperience(itemStack); int storedExperience = ExperienceStorageItem.getStoredExperience(itemStack); if (storedExperience == 0) { - tooltip.add(new LiteralText("0 ").formatted(Formatting.DARK_GRAY).append(new TranslatableText("item.spectrum.knowledge_gem.tooltip.stored_experience", maxExperience).formatted(Formatting.GRAY))); + tooltip.add(Text.literal("0 ").formatted(Formatting.DARK_GRAY).append(Text.translatable("item.spectrum.knowledge_gem.tooltip.stored_experience", maxExperience).formatted(Formatting.GRAY))); } else { - tooltip.add(new LiteralText(storedExperience + " ").formatted(Formatting.GREEN).append(new TranslatableText("item.spectrum.knowledge_gem.tooltip.stored_experience", maxExperience).formatted(Formatting.GRAY))); + tooltip.add(Text.literal(storedExperience + " ").formatted(Formatting.GREEN).append(Text.translatable("item.spectrum.knowledge_gem.tooltip.stored_experience", maxExperience).formatted(Formatting.GRAY))); } if (shouldDisplayUsageTooltip(itemStack)) { - tooltip.add(new TranslatableText("item.spectrum.knowledge_gem.tooltip.use", getTransferableExperiencePerTick(itemStack)).formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.knowledge_gem.tooltip.use", getTransferableExperiencePerTick(itemStack)).formatted(Formatting.GRAY)); SpectrumBannerPatternItem.addBannerPatternProviderTooltip(tooltip); } } diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java index 5b36f3ac5e..a0d2905aba 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java @@ -30,7 +30,6 @@ import net.minecraft.tag.BlockTags; import net.minecraft.tag.FluidTags; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -50,7 +49,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class NaturesStaffItem extends Item implements EnchanterEnchantable, InkPowered { @@ -178,16 +177,16 @@ public void appendTooltip(ItemStack itemStack, World world, List tooltip, int efficiencyLevel = EnchantmentHelper.getLevel(Enchantments.EFFICIENCY, itemStack); if (efficiencyLevel == 0) { if(InkPowered.canUse()) { - tooltip.add(new TranslatableText("item.spectrum.natures_staff.tooltip_with_ink")); + tooltip.add(Text.translatable("item.spectrum.natures_staff.tooltip_with_ink")); } else { - tooltip.add(new TranslatableText("item.spectrum.natures_staff.tooltip")); + tooltip.add(Text.translatable("item.spectrum.natures_staff.tooltip")); } } else { int chancePercent = (int) Math.round(2.0 / (2 + efficiencyLevel) * 100); if(InkPowered.canUse()) { - tooltip.add(new TranslatableText("item.spectrum.natures_staff.tooltip_with_ink_and_chance", chancePercent)); + tooltip.add(Text.translatable("item.spectrum.natures_staff.tooltip_with_ink_and_chance", chancePercent)); } else { - tooltip.add(new TranslatableText("item.spectrum.natures_staff.tooltip_with_chance", chancePercent)); + tooltip.add(Text.translatable("item.spectrum.natures_staff.tooltip_with_chance", chancePercent)); } } } diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/PaintBrushItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/PaintBrushItem.java index 8d15cc646f..3971210980 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/PaintBrushItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/PaintBrushItem.java @@ -26,7 +26,6 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.*; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; @@ -46,7 +45,7 @@ public class PaintBrushItem extends Item { public static final int INK_FLING_COST = 100; public static final String COLOR_NBT_STRING = "Color"; - private static final Text GUI_TITLE = new TranslatableText("item.spectrum.paintbrush"); + private static final Text GUI_TITLE = Text.translatable("item.spectrum.paintbrush"); public PaintBrushItem(Settings settings) { super(settings); @@ -61,7 +60,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); Optional color = getColor(stack); - color.ifPresent(inkColor -> tooltip.add(new TranslatableText("spectrum.ink.color." + inkColor))); + color.ifPresent(inkColor -> tooltip.add(Text.translatable("spectrum.ink.color." + inkColor))); } public static boolean canColor(PlayerEntity player) { diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/PlacementStaffItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/PlacementStaffItem.java index ddde8ee8d4..9021817ed8 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/PlacementStaffItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/PlacementStaffItem.java @@ -19,7 +19,6 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; import net.minecraft.util.math.BlockPos; @@ -73,8 +72,8 @@ public static int getRange(PlayerEntity playerEntity) { public void appendTooltip(ItemStack stack, World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); addInkPoweredTooltip(tooltip); - tooltip.add(new TranslatableText("item.spectrum.placement_staff.tooltip.range", getRange(MinecraftClient.getInstance().player)).formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.placement_staff.tooltip.crouch").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.placement_staff.tooltip.range", getRange(MinecraftClient.getInstance().player)).formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.placement_staff.tooltip.crouch").formatted(Formatting.GRAY)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/RadianceStaffItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/RadianceStaffItem.java index 6881cb2d85..c4d39d2f41 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/RadianceStaffItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/RadianceStaffItem.java @@ -21,7 +21,6 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.UseAction; @@ -82,11 +81,11 @@ public static void playDenySound(World world, PlayerEntity playerEntity) { @Environment(EnvType.CLIENT) public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { if(InkPowered.canUse()) { - tooltip.add(new TranslatableText("item.spectrum.light_staff.tooltip.ink")); + tooltip.add(Text.translatable("item.spectrum.light_staff.tooltip.ink")); } else { - tooltip.add(new TranslatableText("item.spectrum.light_staff.tooltip")); + tooltip.add(Text.translatable("item.spectrum.light_staff.tooltip")); } - tooltip.add(new TranslatableText("item.spectrum.light_staff.tooltip2")); + tooltip.add(Text.translatable("item.spectrum.light_staff.tooltip2")); } public UseAction getUseAction(ItemStack stack) { diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/RestorationTeaItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/RestorationTeaItem.java index 64ca3af3b3..793062a351 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/RestorationTeaItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/RestorationTeaItem.java @@ -17,7 +17,6 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.stat.Stats; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.UseAction; @@ -82,12 +81,12 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { super.appendTooltip(itemStack, world, tooltip, tooltipContext); - tooltip.add(new TranslatableText("item.spectrum.restoration_tea.tooltip")); - tooltip.add(new TranslatableText("item.spectrum.restoration_tea.tooltip2")); + tooltip.add(Text.translatable("item.spectrum.restoration_tea.tooltip")); + tooltip.add(Text.translatable("item.spectrum.restoration_tea.tooltip2")); NbtCompound nbtCompound = itemStack.getNbt(); if (nbtCompound != null && nbtCompound.contains("Milk")) { - tooltip.add(new TranslatableText("item.spectrum.restoration_tea.tooltip_milk")); + tooltip.add(Text.translatable("item.spectrum.restoration_tea.tooltip_milk")); } } diff --git a/src/main/java/de/dafuqs/spectrum/items/tools/DreamflayerItem.java b/src/main/java/de/dafuqs/spectrum/items/tools/DreamflayerItem.java index 91531fa662..ea188e1b51 100644 --- a/src/main/java/de/dafuqs/spectrum/items/tools/DreamflayerItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/tools/DreamflayerItem.java @@ -23,7 +23,6 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; @@ -117,12 +116,12 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.dreamflayer.tooltip").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.dreamflayer.tooltip2").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.dreamflayer.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.dreamflayer.tooltip2").formatted(Formatting.GRAY)); if(ActivatableItem.isActivated(stack)) { - tooltip.add(new TranslatableText("item.spectrum.dreamflayer.tooltip.activated").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.dreamflayer.tooltip.activated").formatted(Formatting.GRAY)); } else { - tooltip.add(new TranslatableText("item.spectrum.dreamflayer.tooltip.deactivated").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.dreamflayer.tooltip.deactivated").formatted(Formatting.GRAY)); } } diff --git a/src/main/java/de/dafuqs/spectrum/items/tooltip/CraftingTabletTooltipData.java b/src/main/java/de/dafuqs/spectrum/items/tooltip/CraftingTabletTooltipData.java index d8b4094410..81bee78d12 100644 --- a/src/main/java/de/dafuqs/spectrum/items/tooltip/CraftingTabletTooltipData.java +++ b/src/main/java/de/dafuqs/spectrum/items/tooltip/CraftingTabletTooltipData.java @@ -3,23 +3,23 @@ import net.minecraft.client.item.TooltipData; import net.minecraft.item.ItemStack; import net.minecraft.recipe.Recipe; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; public class CraftingTabletTooltipData implements TooltipData { private final ItemStack itemStack; - private final TranslatableText description; + private final Text description; public CraftingTabletTooltipData(Recipe recipe) { this.itemStack = recipe.getOutput(); - this.description = new TranslatableText("item.spectrum.crafting_tablet.tooltip.recipe", this.itemStack.getCount(), this.itemStack.getName().getString()); + this.description = Text.translatable("item.spectrum.crafting_tablet.tooltip.recipe", this.itemStack.getCount(), this.itemStack.getName().getString()); } public ItemStack getItemStack() { return this.itemStack; } - public TranslatableText getDescription() { + public Text getDescription() { return this.description; } diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/AshenCircletItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/AshenCircletItem.java index 0b7e774d80..3713328ec9 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/AshenCircletItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/AshenCircletItem.java @@ -16,7 +16,6 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.world.World; @@ -73,15 +72,15 @@ public void tick(ItemStack stack, SlotReference slot, LivingEntity entity) { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.ashen_circlet.tooltip").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.ashen_circlet.tooltip2").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.ashen_circlet.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.ashen_circlet.tooltip2").formatted(Formatting.GRAY)); if (world != null) { long cooldownTicks = getCooldownTicks(stack, world); if (cooldownTicks == 0) { - tooltip.add(new TranslatableText("item.spectrum.ashen_circlet.tooltip.cooldown_full")); + tooltip.add(Text.translatable("item.spectrum.ashen_circlet.tooltip.cooldown_full")); } else { - tooltip.add(new TranslatableText("item.spectrum.ashen_circlet.tooltip.cooldown_seconds", cooldownTicks / 20)); + tooltip.add(Text.translatable("item.spectrum.ashen_circlet.tooltip.cooldown_seconds", cooldownTicks / 20)); } } } diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/AttackRingItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/AttackRingItem.java index cb123caf5f..6c07d88330 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/AttackRingItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/AttackRingItem.java @@ -15,7 +15,6 @@ import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -58,9 +57,9 @@ public void appendTooltip(ItemStack stack, @Nullable World world, List too super.appendTooltip(stack, world, tooltip, context); long mod = Math.round(getAttackModifierForEntity(MinecraftClient.getInstance().player) * 100); if (mod == 0) { - tooltip.add(new TranslatableText("item.spectrum.jeopardant.tooltip.damage_zero")); + tooltip.add(Text.translatable("item.spectrum.jeopardant.tooltip.damage_zero")); } else { - tooltip.add(new TranslatableText("item.spectrum.jeopardant.tooltip.damage", mod)); + tooltip.add(Text.translatable("item.spectrum.jeopardant.tooltip.damage", mod)); } } diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeAmuletItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeAmuletItem.java index a1572d3ac5..738db1562b 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeAmuletItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeAmuletItem.java @@ -10,7 +10,6 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -26,7 +25,7 @@ public AzureDikeAmuletItem(Settings settings) { @Environment(EnvType.CLIENT) @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { - tooltip.add(new TranslatableText("item.spectrum.azure_dike_provider.tooltip", maxAzureDike(stack))); + tooltip.add(Text.translatable("item.spectrum.azure_dike_provider.tooltip", maxAzureDike(stack))); super.appendTooltip(stack, world, tooltip, context); } diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeBeltItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeBeltItem.java index 5827e65f96..cbad0470d4 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeBeltItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeBeltItem.java @@ -6,7 +6,6 @@ import net.minecraft.client.item.TooltipContext; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -23,7 +22,7 @@ public AzureDikeBeltItem(Settings settings) { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.azure_dike_belt.tooltip")); + tooltip.add(Text.translatable("item.spectrum.azure_dike_belt.tooltip")); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeRingItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeRingItem.java index 4b95e027bc..c9ec1e3606 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeRingItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeRingItem.java @@ -6,7 +6,6 @@ import net.minecraft.client.item.TooltipContext; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -28,7 +27,7 @@ public boolean canEquipMoreThanOne() { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.azure_dike_ring.tooltip")); + tooltip.add(Text.translatable("item.spectrum.azure_dike_ring.tooltip")); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeTrinketItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeTrinketItem.java index 69d5634350..874a454086 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeTrinketItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeTrinketItem.java @@ -7,7 +7,6 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -42,7 +41,7 @@ public void onBreak(ItemStack stack, SlotReference slot, LivingEntity entity) { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.azure_dike_provider.tooltip", maxAzureDike(stack))); + tooltip.add(Text.translatable("item.spectrum.azure_dike_provider.tooltip", maxAzureDike(stack))); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/ExtraHealthRingItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/ExtraHealthRingItem.java index 0b6c8114f0..4a63521dcf 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/ExtraHealthRingItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/ExtraHealthRingItem.java @@ -12,7 +12,6 @@ import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.world.World; @@ -29,7 +28,7 @@ public ExtraHealthRingItem(Settings settings) { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { - tooltip.add(new TranslatableText("item.spectrum.heartsingers_reward.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.heartsingers_reward.tooltip").formatted(Formatting.GRAY)); super.appendTooltip(stack, world, tooltip, context); } diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/ExtraReachGlovesItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/ExtraReachGlovesItem.java index 8ec8bf7166..39885da6d2 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/ExtraReachGlovesItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/ExtraReachGlovesItem.java @@ -12,7 +12,6 @@ import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.world.World; @@ -36,7 +35,7 @@ public static double roundHalf(double number) { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { - tooltip.add(new TranslatableText("item.spectrum.gloves_of_dawns_grasp.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.gloves_of_dawns_grasp.tooltip").formatted(Formatting.GRAY)); super.appendTooltip(stack, world, tooltip, context); } diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/GleamingPinItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/GleamingPinItem.java index 385d32f5b9..db9b25e141 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/GleamingPinItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/GleamingPinItem.java @@ -18,7 +18,6 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; @@ -56,7 +55,7 @@ public static int getEffectRange(ItemStack stack) { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.gleaming_pin.tooltip")); + tooltip.add(Text.translatable("item.spectrum.gleaming_pin.tooltip")); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/GlowVisionGogglesItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/GlowVisionGogglesItem.java index 8137f559fb..8cb542515b 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/GlowVisionGogglesItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/GlowVisionGogglesItem.java @@ -13,7 +13,6 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.world.World; @@ -55,7 +54,7 @@ public void tick(ItemStack stack, SlotReference slot, LivingEntity entity) { @Override public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { super.appendTooltip(itemStack, world, tooltip, tooltipContext); - tooltip.add(new TranslatableText("item.spectrum.glow_vision_helmet.tooltip")); + tooltip.add(Text.translatable("item.spectrum.glow_vision_helmet.tooltip")); } } diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/InkDrainTrinketItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/InkDrainTrinketItem.java index 29cedb592a..b3596a52b1 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/InkDrainTrinketItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/InkDrainTrinketItem.java @@ -8,7 +8,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.Rarity; @@ -43,9 +42,9 @@ public void appendTooltip(ItemStack stack, @Nullable World world, List too } while (storedInk > nextStepInk); if (nextStepInk == maxInk) { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_drain.tooltip.maxed_out").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("spectrum.tooltip.ink_drain.tooltip.maxed_out").formatted(Formatting.GRAY)); } else { - tooltip.add(new TranslatableText("spectrum.tooltip.ink_drain.tooltip.ink_for_next_step." + inkStorage.getStoredColor().toString(), Support.getShortenedNumberString(nextStepInk - storedInk)).formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("spectrum.tooltip.ink_drain.tooltip.ink_for_next_step." + inkStorage.getStoredColor().toString(), Support.getShortenedNumberString(nextStepInk - storedInk)).formatted(Formatting.GRAY)); } } diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/NeatRingItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/NeatRingItem.java index a5933cee8b..ad687c5b30 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/NeatRingItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/NeatRingItem.java @@ -6,7 +6,6 @@ import net.minecraft.client.item.TooltipContext; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -23,7 +22,7 @@ public NeatRingItem(Settings settings) { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.neat_ring.tooltip")); + tooltip.add(Text.translatable("item.spectrum.neat_ring.tooltip")); } } \ No newline at end of file diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/PotionPendantItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/PotionPendantItem.java index b987ba5c2a..122c2c6392 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/PotionPendantItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/PotionPendantItem.java @@ -11,9 +11,8 @@ import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionUtil; -import net.minecraft.text.LiteralText; +import net.minecraft.text.MutableText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.world.World; @@ -44,10 +43,10 @@ public void appendTooltip(ItemStack stack, @Nullable World world, List too if (effects.size() > 0) { List> attributeModifiers = Lists.newArrayList(); for (StatusEffectInstance effect : effects) { - TranslatableText mutableText = new TranslatableText(effect.getTranslationKey()); + MutableText mutableText = Text.translatable(effect.getTranslationKey()); if (effect.getAmplifier() > 0) { - mutableText = new TranslatableText("potion.withAmplifier", mutableText, new TranslatableText("potion.potency." + effect.getAmplifier())); + mutableText = Text.translatable("potion.withAmplifier", mutableText, Text.translatable("potion.potency." + effect.getAmplifier())); } tooltip.add(mutableText.formatted(effect.getEffectType().getCategory().getFormatting())); @@ -61,8 +60,8 @@ public void appendTooltip(ItemStack stack, @Nullable World world, List too } if (!attributeModifiers.isEmpty()) { - tooltip.add(LiteralText.EMPTY); - tooltip.add((new TranslatableText("potion.whenDrank")).formatted(Formatting.DARK_PURPLE)); + tooltip.add(Text.empty()); + tooltip.add((Text.translatable("potion.whenDrank")).formatted(Formatting.DARK_PURPLE)); for (Pair entityAttributeEntityAttributeModifierPair : attributeModifiers) { EntityAttributeModifier mutableText = entityAttributeEntityAttributeModifierPair.getSecond(); @@ -75,10 +74,10 @@ public void appendTooltip(ItemStack stack, @Nullable World world, List too } if (statusEffect > 0.0D) { - tooltip.add((new TranslatableText("attribute.modifier.plus." + mutableText.getOperation().getId(), ItemStack.MODIFIER_FORMAT.format(d), new TranslatableText((entityAttributeEntityAttributeModifierPair.getFirst()).getTranslationKey()))).formatted(Formatting.BLUE)); + tooltip.add((Text.translatable("attribute.modifier.plus." + mutableText.getOperation().getId(), ItemStack.MODIFIER_FORMAT.format(d), Text.translatable((entityAttributeEntityAttributeModifierPair.getFirst()).getTranslationKey()))).formatted(Formatting.BLUE)); } else if (statusEffect < 0.0D) { d *= -1.0D; - tooltip.add((new TranslatableText("attribute.modifier.take." + mutableText.getOperation().getId(), ItemStack.MODIFIER_FORMAT.format(d), new TranslatableText((entityAttributeEntityAttributeModifierPair.getFirst()).getTranslationKey()))).formatted(Formatting.RED)); + tooltip.add((Text.translatable("attribute.modifier.take." + mutableText.getOperation().getId(), ItemStack.MODIFIER_FORMAT.format(d), Text.translatable((entityAttributeEntityAttributeModifierPair.getFirst()).getTranslationKey()))).formatted(Formatting.RED)); } } } @@ -87,11 +86,11 @@ public void appendTooltip(ItemStack stack, @Nullable World world, List too int maxEffectCount = maxEffectCount(); if (effects.size() < maxEffectCount) { if (maxEffectCount == 1) { - tooltip.add(new TranslatableText("item.spectrum.potion_pendant.tooltip_not_full_one")); + tooltip.add(Text.translatable("item.spectrum.potion_pendant.tooltip_not_full_one")); } else { - tooltip.add(new TranslatableText("item.spectrum.potion_pendant.tooltip_not_full_count", maxEffectCount)); + tooltip.add(Text.translatable("item.spectrum.potion_pendant.tooltip_not_full_count", maxEffectCount)); } - tooltip.add(new TranslatableText("item.spectrum.potion_pendant.tooltip_max_level").append(new TranslatableText("enchantment.level." + (this.maxAmplifier + 1)))); + tooltip.add(Text.translatable("item.spectrum.potion_pendant.tooltip_max_level").append(Text.translatable("enchantment.level." + (this.maxAmplifier + 1)))); } } diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/PuffCircletItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/PuffCircletItem.java index 781662a590..c576823cf1 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/PuffCircletItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/PuffCircletItem.java @@ -4,7 +4,6 @@ import net.minecraft.client.item.TooltipContext; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -23,8 +22,8 @@ public PuffCircletItem(Settings settings) { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.puff_circlet.tooltip")); - tooltip.add(new TranslatableText("item.spectrum.puff_circlet.tooltip2")); + tooltip.add(Text.translatable("item.spectrum.puff_circlet.tooltip")); + tooltip.add(Text.translatable("item.spectrum.puff_circlet.tooltip2")); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/RadiancePinItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/RadiancePinItem.java index 5b46862e35..7c2d7715ce 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/RadiancePinItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/RadiancePinItem.java @@ -14,7 +14,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.world.World; @@ -36,7 +35,7 @@ public RadiancePinItem(Settings settings) { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.radiance_pin.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.radiance_pin.tooltip").formatted(Formatting.GRAY)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/TakeOffBeltItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/TakeOffBeltItem.java index f4ea3faeda..b01e2b8aa5 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/TakeOffBeltItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/TakeOffBeltItem.java @@ -22,7 +22,6 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.math.Vec3d; @@ -58,7 +57,7 @@ public static int getCurrentCharge(PlayerEntity playerEntity) { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.take_off_belt.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.take_off_belt.tooltip").formatted(Formatting.GRAY)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/TidalCircletItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/TidalCircletItem.java index 471659a8b7..bd6441eb24 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/TidalCircletItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/TidalCircletItem.java @@ -17,7 +17,6 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.math.Box; @@ -45,9 +44,9 @@ public TidalCircletItem(Settings settings) { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.tidal_circlet.tooltip").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.tidal_circlet.tooltip2").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.tidal_circlet.tooltip3").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.tidal_circlet.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.tidal_circlet.tooltip2").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.tidal_circlet.tooltip3").formatted(Formatting.GRAY)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/TotemPendantItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/TotemPendantItem.java index f6a16546f5..f84a1779ed 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/TotemPendantItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/TotemPendantItem.java @@ -6,7 +6,6 @@ import net.minecraft.client.item.TooltipContext; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.world.World; @@ -24,7 +23,7 @@ public TotemPendantItem(Settings settings) { @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.totem_pendant.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.totem_pendant.tooltip").formatted(Formatting.GRAY)); } diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/WhispyCircletItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/WhispyCircletItem.java index 9b3decc174..95885b35d3 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/WhispyCircletItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/WhispyCircletItem.java @@ -12,13 +12,13 @@ import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.stat.Stats; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.world.World; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import net.minecraft.util.math.random.Random; import java.util.*; public class WhispyCircletItem extends SpectrumTrinketItem { @@ -80,9 +80,9 @@ public static void preventPhantomSpawns(@NotNull ServerPlayerEntity serverPlayer @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); - tooltip.add(new TranslatableText("item.spectrum.whispy_circlet.tooltip").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.whispy_circlet.tooltip2").formatted(Formatting.GRAY)); - tooltip.add(new TranslatableText("item.spectrum.whispy_circlet.tooltip3").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.whispy_circlet.tooltip").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.whispy_circlet.tooltip2").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.whispy_circlet.tooltip3").formatted(Formatting.GRAY)); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/loot/EnchantmentDrops.java b/src/main/java/de/dafuqs/spectrum/loot/EnchantmentDrops.java index 6b7034cc60..6e99fd3aec 100644 --- a/src/main/java/de/dafuqs/spectrum/loot/EnchantmentDrops.java +++ b/src/main/java/de/dafuqs/spectrum/loot/EnchantmentDrops.java @@ -3,8 +3,8 @@ import de.dafuqs.spectrum.blocks.mob_head.SpectrumSkullBlock; import de.dafuqs.spectrum.loot.conditions.*; import de.dafuqs.spectrum.registries.SpectrumBlocks; -import net.fabricmc.fabric.api.loot.v1.FabricLootPoolBuilder; -import net.fabricmc.fabric.api.loot.v1.event.LootTableLoadingCallback; +import net.fabricmc.fabric.api.loot.v2.FabricLootPoolBuilder; +import net.fabricmc.fabric.api.loot.v2.LootTableEvents; import net.minecraft.entity.passive.AxolotlEntity; import net.minecraft.entity.passive.FoxEntity; import net.minecraft.entity.passive.MooshroomEntity; @@ -106,106 +106,106 @@ public class EnchantmentDrops { }}; public static void setup() { - LootTableLoadingCallback.EVENT.register((resourceManager, lootManager, id, supplier, setter) -> { + LootTableEvents.MODIFY.register(((resourceManager, lootManager, id, supplier, setter) -> { // TREASURE HUNTER POOLS if (trophyHunterLootPools.containsKey(id)) { TreasureHunterDropDefinition treasureHunterDropDefinition = trophyHunterLootPools.get(id); - supplier.withPool(getLootPool(treasureHunterDropDefinition)); + supplier.pool(getLootPool(treasureHunterDropDefinition)); // Some entity types use custom loot conditions // because vanillas are too generic (fox/snow fox both use "fox" loot table) } else if (id.equals(new Identifier("entities/fox"))) { - supplier.withPool(getFoxLootPool(FoxEntity.Type.RED, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.FOX).asItem(), 0.01F)); - supplier.withPool(getFoxLootPool(FoxEntity.Type.SNOW, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.FOX_ARCTIC).asItem(), 0.01F)); + supplier.pool(getFoxLootPool(FoxEntity.Type.RED, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.FOX).asItem(), 0.01F)); + supplier.pool(getFoxLootPool(FoxEntity.Type.SNOW, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.FOX_ARCTIC).asItem(), 0.01F)); } else if (id.equals(new Identifier("entities/mooshroom"))) { - supplier.withPool(getMooshroomLootPool(MooshroomEntity.Type.BROWN, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.MOOSHROOM_BROWN).asItem(), 0.01F)); - supplier.withPool(getMooshroomLootPool(MooshroomEntity.Type.RED, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.MOOSHROOM_RED).asItem(), 0.01F)); + supplier.pool(getMooshroomLootPool(MooshroomEntity.Type.BROWN, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.MOOSHROOM_BROWN).asItem(), 0.01F)); + supplier.pool(getMooshroomLootPool(MooshroomEntity.Type.RED, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.MOOSHROOM_RED).asItem(), 0.01F)); } else if (id.equals(new Identifier("entities/shulker"))) { - supplier.withPool(getShulkerLootPool(DyeColor.BLACK, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_BLACK).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.BLUE, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_BLUE).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.BROWN, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_BROWN).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.CYAN, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_CYAN).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.GRAY, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_GRAY).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.GREEN, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_GREEN).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.LIGHT_BLUE, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_LIGHT_BLUE).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.LIGHT_GRAY, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_LIGHT_GRAY).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.LIME, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_LIME).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.MAGENTA, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_MAGENTA).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.ORANGE, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_ORANGE).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.PINK, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_PINK).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.PURPLE, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_PURPLE).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.RED, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_RED).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.WHITE, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_WHITE).asItem(), 0.01F)); - supplier.withPool(getShulkerLootPool(DyeColor.YELLOW, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_YELLOW).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.BLACK, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_BLACK).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.BLUE, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_BLUE).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.BROWN, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_BROWN).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.CYAN, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_CYAN).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.GRAY, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_GRAY).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.GREEN, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_GREEN).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.LIGHT_BLUE, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_LIGHT_BLUE).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.LIGHT_GRAY, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_LIGHT_GRAY).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.LIME, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_LIME).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.MAGENTA, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_MAGENTA).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.ORANGE, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_ORANGE).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.PINK, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_PINK).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.PURPLE, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_PURPLE).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.RED, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_RED).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.WHITE, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_WHITE).asItem(), 0.01F)); + supplier.pool(getShulkerLootPool(DyeColor.YELLOW, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.SHULKER_YELLOW).asItem(), 0.01F)); } else if (id.equals(new Identifier("entities/axolotl"))) { - supplier.withPool(getAxolotlLootPool(AxolotlEntity.Variant.BLUE, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.AXOLOTL_BLUE).asItem(), 0.01F)); - supplier.withPool(getAxolotlLootPool(AxolotlEntity.Variant.CYAN, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.AXOLOTL_CYAN).asItem(), 0.01F)); - supplier.withPool(getAxolotlLootPool(AxolotlEntity.Variant.GOLD, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.AXOLOTL_GOLD).asItem(), 0.01F)); - supplier.withPool(getAxolotlLootPool(AxolotlEntity.Variant.LUCY, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.AXOLOTL_LEUCISTIC).asItem(), 0.01F)); - supplier.withPool(getAxolotlLootPool(AxolotlEntity.Variant.WILD, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.AXOLOTL_BROWN).asItem(), 0.01F)); + supplier.pool(getAxolotlLootPool(AxolotlEntity.Variant.BLUE, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.AXOLOTL_BLUE).asItem(), 0.01F)); + supplier.pool(getAxolotlLootPool(AxolotlEntity.Variant.CYAN, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.AXOLOTL_CYAN).asItem(), 0.01F)); + supplier.pool(getAxolotlLootPool(AxolotlEntity.Variant.GOLD, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.AXOLOTL_GOLD).asItem(), 0.01F)); + supplier.pool(getAxolotlLootPool(AxolotlEntity.Variant.LUCY, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.AXOLOTL_LEUCISTIC).asItem(), 0.01F)); + supplier.pool(getAxolotlLootPool(AxolotlEntity.Variant.WILD, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.AXOLOTL_BROWN).asItem(), 0.01F)); } else if (id.equals(new Identifier("entities/parrot"))) { - supplier.withPool(getParrotLootPool(0, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.PARROT_RED).asItem(), 0.01F)); - supplier.withPool(getParrotLootPool(1, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.PARROT_BLUE).asItem(), 0.01F)); - supplier.withPool(getParrotLootPool(2, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.PARROT_GREEN).asItem(), 0.01F)); - supplier.withPool(getParrotLootPool(3, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.PARROT_CYAN).asItem(), 0.01F)); - supplier.withPool(getParrotLootPool(4, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.PARROT_GRAY).asItem(), 0.01F)); + supplier.pool(getParrotLootPool(0, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.PARROT_RED).asItem(), 0.01F)); + supplier.pool(getParrotLootPool(1, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.PARROT_BLUE).asItem(), 0.01F)); + supplier.pool(getParrotLootPool(2, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.PARROT_GREEN).asItem(), 0.01F)); + supplier.pool(getParrotLootPool(3, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.PARROT_CYAN).asItem(), 0.01F)); + supplier.pool(getParrotLootPool(4, SpectrumBlocks.getMobHead(SpectrumSkullBlock.SpectrumSkullBlockType.PARROT_GRAY).asItem(), 0.01F)); } - }); + })); } private static LootPool getLootPool(TreasureHunterDropDefinition treasureHunterDropDefinition) { Item dropItem = treasureHunterDropDefinition.skullItem; float chance = treasureHunterDropDefinition.treasureHunterMultiplier; - FabricLootPoolBuilder poolBuilder = FabricLootPoolBuilder.builder() + LootPool.Builder poolBuilder = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .withCondition(RandomChanceWithTreasureHunterLootCondition.builder(chance, dropItem).build()) - .withEntry(ItemEntry.builder(dropItem).build()); + .conditionally(RandomChanceWithTreasureHunterLootCondition.builder(chance, dropItem).build()) + .with(ItemEntry.builder(dropItem).build()); return poolBuilder.build(); } private static LootPool getFoxLootPool(FoxEntity.Type foxType, Item item, float chance) { - FabricLootPoolBuilder poolBuilder = FabricLootPoolBuilder.builder() + LootPool.Builder poolBuilder = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .withCondition(RandomChanceWithTreasureHunterLootCondition.builder(chance, item).build()) - .withCondition(FoxTypeLootCondition.builder(foxType).build()) - .withEntry(ItemEntry.builder(item).build()); + .conditionally(RandomChanceWithTreasureHunterLootCondition.builder(chance, item).build()) + .conditionally(FoxTypeLootCondition.builder(foxType).build()) + .with(ItemEntry.builder(item).build()); return poolBuilder.build(); } private static LootPool getMooshroomLootPool(MooshroomEntity.Type mooshroomType, Item item, float chance) { - FabricLootPoolBuilder poolBuilder = FabricLootPoolBuilder.builder() + LootPool.Builder poolBuilder = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .withCondition(RandomChanceWithTreasureHunterLootCondition.builder(chance, item).build()) - .withCondition(MooshroomTypeLootCondition.builder(mooshroomType).build()) - .withEntry(ItemEntry.builder(item).build()); + .conditionally(RandomChanceWithTreasureHunterLootCondition.builder(chance, item).build()) + .conditionally(MooshroomTypeLootCondition.builder(mooshroomType).build()) + .with(ItemEntry.builder(item).build()); return poolBuilder.build(); } private static LootPool getShulkerLootPool(DyeColor dyeColor, Item item, float chance) { - FabricLootPoolBuilder poolBuilder = FabricLootPoolBuilder.builder() + LootPool.Builder poolBuilder = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .withCondition(RandomChanceWithTreasureHunterLootCondition.builder(chance, item).build()) - .withCondition(ShulkerColorLootCondition.builder(dyeColor).build()) - .withEntry(ItemEntry.builder(item).build()); + .conditionally(RandomChanceWithTreasureHunterLootCondition.builder(chance, item).build()) + .conditionally(ShulkerColorLootCondition.builder(dyeColor).build()) + .with(ItemEntry.builder(item).build()); return poolBuilder.build(); } private static LootPool getAxolotlLootPool(AxolotlEntity.Variant variant, Item item, float chance) { - FabricLootPoolBuilder poolBuilder = FabricLootPoolBuilder.builder() + LootPool.Builder poolBuilder = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .withCondition(RandomChanceWithTreasureHunterLootCondition.builder(chance, item).build()) - .withCondition(AxolotlVariantLootCondition.builder(variant).build()) - .withEntry(ItemEntry.builder(item).build()); + .conditionally(RandomChanceWithTreasureHunterLootCondition.builder(chance, item).build()) + .conditionally(AxolotlVariantLootCondition.builder(variant).build()) + .with(ItemEntry.builder(item).build()); return poolBuilder.build(); } private static LootPool getParrotLootPool(int variant, Item item, float chance) { - FabricLootPoolBuilder poolBuilder = FabricLootPoolBuilder.builder() + LootPool.Builder poolBuilder = LootPool.builder() .rolls(ConstantLootNumberProvider.create(1)) - .withCondition(RandomChanceWithTreasureHunterLootCondition.builder(chance, item).build()) - .withCondition(ParrotVariantLootCondition.builder(variant).build()) - .withEntry(ItemEntry.builder(item).build()); + .conditionally(RandomChanceWithTreasureHunterLootCondition.builder(chance, item).build()) + .conditionally(ParrotVariantLootCondition.builder(variant).build()) + .with(ItemEntry.builder(item).build()); return poolBuilder.build(); } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/HorseBaseEntityMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/AbstractHorseEntityMixin.java similarity index 76% rename from src/main/java/de/dafuqs/spectrum/mixin/HorseBaseEntityMixin.java rename to src/main/java/de/dafuqs/spectrum/mixin/AbstractHorseEntityMixin.java index 776de0e6e5..fe738d9f70 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/HorseBaseEntityMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/AbstractHorseEntityMixin.java @@ -5,7 +5,7 @@ import de.dafuqs.spectrum.interfaces.PlayerOwned; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.passive.AbstractDonkeyEntity; -import net.minecraft.entity.passive.HorseBaseEntity; +import net.minecraft.entity.passive.AbstractHorseEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; @@ -17,39 +17,39 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(HorseBaseEntity.class) -public class HorseBaseEntityMixin { +@Mixin(AbstractHorseEntity.class) +public class AbstractHorseEntityMixin { @Shadow protected SimpleInventory items; @Inject(at = @At("HEAD"), method = "tick()V") public void tick(CallbackInfo callbackInfo) { - if ((Object) this instanceof AbstractDonkeyEntity thisEntity && thisEntity.world instanceof ServerWorld) { + if ((Object) this instanceof AbstractDonkeyEntity thisDonkey && thisDonkey.world instanceof ServerWorld) { - if (thisEntity.hasChest()) { + if (thisDonkey.hasChest()) { SimpleInventory var1 = this.items; double addedGravity = 0; for (int i = 0; i < var1.size(); i++) { ItemStack itemStack = var1.getStack(i); if (!itemStack.isEmpty() && (itemStack.getItem() instanceof GravitableItem)) { - addedGravity += ((GravitableItem) itemStack.getItem()).applyGravityEffect(itemStack, thisEntity.getEntityWorld(), thisEntity); + addedGravity += ((GravitableItem) itemStack.getItem()).applyGravityEffect(itemStack, thisDonkey.getEntityWorld(), thisDonkey); } } // about 3.1 stacks of paletur fragments will send an animal flying // => trigger a hidden advancement - if (addedGravity > 0.081 && thisEntity.world.getTime() % 20 == 0) { - PlayerEntity ownerPlayerEntity = PlayerOwned.getPlayerEntityIfOnline(thisEntity.getOwnerUuid()); + if (addedGravity > 0.081 && thisDonkey.world.getTime() % 20 == 0) { + PlayerEntity ownerPlayerEntity = PlayerOwned.getPlayerEntityIfOnline(thisDonkey.getOwnerUuid()); if (ownerPlayerEntity != null) { Support.grantAdvancementCriterion((ServerPlayerEntity) ownerPlayerEntity, "lategame/put_too_many_low_gravity_blocks_into_animal", "gravity"); } // take damage when at height heights // otherwise the animal would just be floating forever - if (thisEntity.getPos().y > thisEntity.getEntityWorld().getHeight() + 1000) { - thisEntity.damage(DamageSource.OUT_OF_WORLD, 10); + if (thisDonkey.getPos().y > thisDonkey.getEntityWorld().getHeight() + 1000) { + thisDonkey.damage(DamageSource.OUT_OF_WORLD, 10); } } } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/BuddingAmethystBlockMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/BuddingAmethystBlockMixin.java index 02eb836307..131f004931 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/BuddingAmethystBlockMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/BuddingAmethystBlockMixin.java @@ -14,12 +14,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; -import java.util.Random; +import net.minecraft.util.math.random.Random; @Mixin(BuddingAmethystBlock.class) public class BuddingAmethystBlockMixin { - @Inject(method = "randomTick(Lnet/minecraft/block/BlockState;Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/util/math/BlockPos;Ljava/util/Random;)V", + @Inject(method = "randomTick(Lnet/minecraft/block/BlockState;Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/random/Random;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/world/ServerWorld;setBlockState(Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;)Z", shift = At.Shift.AFTER), locals = LocalCapture.CAPTURE_FAILHARD) public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random, CallbackInfo ci, Direction direction, BlockPos offsetPos, BlockState originalOffsetState, Block blockToGrow, BlockState blockStateToGrow) { diff --git a/src/main/java/de/dafuqs/spectrum/mixin/ChunkNoiseSamplerMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/ChunkNoiseSamplerMixin.java index 24731e3a29..5672fdb23d 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/ChunkNoiseSamplerMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/ChunkNoiseSamplerMixin.java @@ -3,12 +3,10 @@ import com.google.common.collect.ImmutableList; import de.dafuqs.spectrum.deeper_down.DDOreVeinSampler; import net.minecraft.block.Blocks; -import net.minecraft.world.gen.chunk.AquiferSampler; -import net.minecraft.world.gen.chunk.Blender; -import net.minecraft.world.gen.chunk.ChunkGeneratorSettings; -import net.minecraft.world.gen.chunk.ChunkNoiseSampler; +import net.minecraft.world.gen.chunk.*; import net.minecraft.world.gen.densityfunction.DensityFunction; import net.minecraft.world.gen.densityfunction.DensityFunctionTypes; +import net.minecraft.world.gen.noise.NoiseConfig; import net.minecraft.world.gen.noise.NoiseRouter; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -20,14 +18,15 @@ @Mixin(ChunkNoiseSampler.class) public abstract class ChunkNoiseSamplerMixin { - @Shadow protected abstract DensityFunction method_40529(DensityFunction densityFunction); + @Shadow protected abstract DensityFunction getActualDensityFunction(DensityFunction densityFunction); - @Inject(method = "(IIILnet/minecraft/world/gen/noise/NoiseRouter;IILnet/minecraft/world/gen/densityfunction/DensityFunctionTypes$class_7050;Lnet/minecraft/world/gen/chunk/ChunkGeneratorSettings;Lnet/minecraft/world/gen/chunk/AquiferSampler$FluidLevelSampler;Lnet/minecraft/world/gen/chunk/Blender;)V", + @Inject(method = "(ILnet/minecraft/world/gen/noise/NoiseConfig;IILnet/minecraft/world/gen/chunk/GenerationShapeConfig;Lnet/minecraft/world/gen/densityfunction/DensityFunctionTypes$Beardifying;Lnet/minecraft/world/gen/chunk/ChunkGeneratorSettings;Lnet/minecraft/world/gen/chunk/AquiferSampler$FluidLevelSampler;Lnet/minecraft/world/gen/chunk/Blender;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/gen/chunk/ChunkGeneratorSettings;oreVeins()Z"), locals = LocalCapture.CAPTURE_FAILHARD) - public void randomTick(int horizontalSize, int height, int minimumY, NoiseRouter noiseRouter, int x, int z, DensityFunctionTypes.class_7050 noiseType, ChunkGeneratorSettings chunkGeneratorSettings, AquiferSampler.FluidLevelSampler fluidLevelSampler, Blender blender, CallbackInfo callbackInfo, ImmutableList.Builder builder) { + public void spectrum$init(int horizontalCellCount, NoiseConfig noiseConfig, int startX, int startZ, GenerationShapeConfig generationShapeConfig, DensityFunctionTypes.Beardifying beardifying, ChunkGeneratorSettings chunkGeneratorSettings, AquiferSampler.FluidLevelSampler fluidLevelSampler, Blender blender, CallbackInfo ci, ImmutableList.Builder builder) { if (chunkGeneratorSettings.defaultBlock() == Blocks.DEEPSLATE.getDefaultState()) { - builder.add(DDOreVeinSampler.create(noiseRouter.veinToggle().apply(this::method_40529), noiseRouter.veinRidged().apply(this::method_40529), noiseRouter.veinGap().apply(this::method_40529), noiseRouter.oreVeinsPositionalRandomFactory())); + NoiseRouter noiseRouter = noiseConfig.getNoiseRouter(); + builder.add(DDOreVeinSampler.create(noiseRouter.veinToggle(), noiseRouter.veinRidged(), noiseRouter.veinGap(), noiseConfig.getOreRandomDeriver())); } } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/EndermanEntityMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/EndermanEntityMixin.java index 0f11f0c8a9..c2366ae5a7 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/EndermanEntityMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/EndermanEntityMixin.java @@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.util.Random; +import net.minecraft.util.math.random.Random; @Mixin(EndermanEntity.class) public abstract class EndermanEntityMixin { diff --git a/src/main/java/de/dafuqs/spectrum/mixin/GeodesGenerateWithGemstoneOresMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/GeodesGenerateWithGemstoneOresMixin.java index b2f4924d26..921de53bd7 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/GeodesGenerateWithGemstoneOresMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/GeodesGenerateWithGemstoneOresMixin.java @@ -15,7 +15,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.util.Random; +import net.minecraft.util.math.random.Random; @Mixin(GeodeFeature.class) public class GeodesGenerateWithGemstoneOresMixin { diff --git a/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java index fb9836988f..b193eeedbc 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java @@ -57,7 +57,7 @@ public void tick(CallbackInfo ci) { // protect damage proof enchanted item stacks from the void by letting them float above it ItemEntity thisItemEntity = ((ItemEntity) (Object) this); if (!thisItemEntity.hasNoGravity() && thisItemEntity.world.getTime() % 8 == 0) { - int worldMinY = thisItemEntity.world.getDimension().getMinimumY(); + int worldMinY = thisItemEntity.world.getDimension().minY(); if (!thisItemEntity.isOnGround() && thisItemEntity.getPos().getY() < worldMinY + 2 && EnchantmentHelper.getLevel(SpectrumEnchantments.STEADFAST, thisItemEntity.getStack()) > 0) { diff --git a/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java index bb3cf09ded..7cbaa5fbfb 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java @@ -28,7 +28,6 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; -import net.minecraft.network.packet.s2c.play.MobSpawnS2CPacket; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundCategory; import net.minecraft.util.Pair; @@ -65,22 +64,8 @@ public abstract class LivingEntityMixin { @Shadow public abstract boolean blockedByShield(DamageSource source); - @Shadow @Final private AttributeContainer attributes; - - @Shadow @Nullable private LivingEntity attacker; - - @Shadow public abstract void readCustomDataFromNbt(NbtCompound nbt); - - @Shadow public abstract Vec3d applyMovementInput(Vec3d movementInput, float slipperiness); - - @Shadow public abstract void readFromPacket(MobSpawnS2CPacket packet); - @Shadow protected abstract void applyDamage(DamageSource source, float amount); - @Shadow public abstract boolean removeStatusEffect(StatusEffect type); - - @Shadow public abstract void setHealth(float health); - @Shadow public abstract ItemStack getMainHandStack(); @ModifyArg(method = "dropXp()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/ExperienceOrbEntity;spawn(Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/util/math/Vec3d;I)V"), index = 2) diff --git a/src/main/java/de/dafuqs/spectrum/mixin/accessors/StructureFeatureAccessor.java b/src/main/java/de/dafuqs/spectrum/mixin/accessors/StructureFeatureAccessor.java deleted file mode 100644 index eb887ded8e..0000000000 --- a/src/main/java/de/dafuqs/spectrum/mixin/accessors/StructureFeatureAccessor.java +++ /dev/null @@ -1,16 +0,0 @@ -package de.dafuqs.spectrum.mixin.accessors; - -import net.minecraft.world.gen.GenerationStep; -import net.minecraft.world.gen.feature.StructureFeature; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(StructureFeature.class) -public interface StructureFeatureAccessor { - - @Invoker - static > F callRegister(String name, F structureFeature, GenerationStep.Feature step) { - throw new UnsupportedOperationException(); - } - -} \ No newline at end of file diff --git a/src/main/java/de/dafuqs/spectrum/mixin/client/PotionItemClientMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/client/PotionItemClientMixin.java index c91661e68f..ac82306bc6 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/client/PotionItemClientMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/client/PotionItemClientMixin.java @@ -8,7 +8,6 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -24,7 +23,7 @@ public class PotionItemClientMixin { private void spectrum$makePotionUnidentifiable(ItemStack stack, World world, List tooltip, TooltipContext context, CallbackInfo ci) { NbtCompound nbtCompound = stack.getNbt(); if (nbtCompound != null && nbtCompound.contains("spectrum_unidentifiable", NbtElement.BYTE_TYPE) && nbtCompound.getBoolean("spectrum_unidentifiable")) { - tooltip.add(new TranslatableText("item.spectrum.potion.tooltip.unidentifiable")); + tooltip.add(Text.translatable("item.spectrum.potion.tooltip.unidentifiable")); ci.cancel(); } } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java index f7d301a713..c1c033db76 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java @@ -74,7 +74,7 @@ private void renderExtendedBlockOutline(MatrixStack matrices, float tickDelta, l HudRenderers.doNotRenderOverlay(); if (client.player != null && renderBlockOutline) { - for(ItemStack handStack : client.player.getItemsHand()) { + for(ItemStack handStack : client.player.getHandItems()) { Item handItem = handStack.getItem(); if (handItem instanceof PlacementStaffItem) { HitResult hitResult = this.client.crosshairTarget; diff --git a/src/main/java/de/dafuqs/spectrum/mixin/client/enchantment_descriptions/DescriptionManagerMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/client/enchantment_descriptions/DescriptionManagerMixin.java index 5641f71983..6b1bb1f2cf 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/client/enchantment_descriptions/DescriptionManagerMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/client/enchantment_descriptions/DescriptionManagerMixin.java @@ -18,7 +18,7 @@ public class DescriptionManagerMixin { private void spectrum$obfuscateEnchDescDescription(Enchantment ench, CallbackInfoReturnable cir) { if(ench instanceof SpectrumEnchantment spectrumEnchantment) { if(!spectrumEnchantment.canEntityUse(MinecraftClient.getInstance().player)) { - cir.setReturnValue(new LiteralText(spectrum$language.get(((TranslatableText) cir.getReturnValue()).getKey())).formatted(Formatting.OBFUSCATED).formatted(Formatting.DARK_GRAY)); + cir.setReturnValue(Text.literal(spectrum$language.get(((TranslatableText) cir.getReturnValue()).getKey())).formatted(Formatting.OBFUSCATED).formatted(Formatting.DARK_GRAY)); } } }*/ diff --git a/src/main/java/de/dafuqs/spectrum/networking/SpectrumS2CPacketReceiver.java b/src/main/java/de/dafuqs/spectrum/networking/SpectrumS2CPacketReceiver.java index cc0d5a8f6f..c53a31f04f 100644 --- a/src/main/java/de/dafuqs/spectrum/networking/SpectrumS2CPacketReceiver.java +++ b/src/main/java/de/dafuqs/spectrum/networking/SpectrumS2CPacketReceiver.java @@ -50,7 +50,7 @@ import java.util.HashMap; import java.util.Map; -import java.util.Random; +import net.minecraft.util.math.random.Random; import java.util.UUID; @Environment(EnvType.CLIENT) diff --git a/src/main/java/de/dafuqs/spectrum/particle/client/VoidFogParticle.java b/src/main/java/de/dafuqs/spectrum/particle/client/VoidFogParticle.java index a3882ac38f..ac3250d891 100644 --- a/src/main/java/de/dafuqs/spectrum/particle/client/VoidFogParticle.java +++ b/src/main/java/de/dafuqs/spectrum/particle/client/VoidFogParticle.java @@ -6,7 +6,7 @@ import net.minecraft.client.world.ClientWorld; import net.minecraft.particle.DefaultParticleType; -import java.util.Random; +import net.minecraft.util.math.random.Random; @Environment(EnvType.CLIENT) public class VoidFogParticle extends SpriteBillboardParticle { diff --git a/src/main/java/de/dafuqs/spectrum/particle/client/WindParticle.java b/src/main/java/de/dafuqs/spectrum/particle/client/WindParticle.java index 29d332f7fb..dc3847f153 100644 --- a/src/main/java/de/dafuqs/spectrum/particle/client/WindParticle.java +++ b/src/main/java/de/dafuqs/spectrum/particle/client/WindParticle.java @@ -8,7 +8,7 @@ import net.minecraft.particle.DefaultParticleType; import net.minecraft.util.math.Vec3d; -import java.util.Random; +import net.minecraft.util.math.random.Random; @Environment(EnvType.CLIENT) public class WindParticle extends SpriteBillboardParticle { diff --git a/src/main/java/de/dafuqs/spectrum/progression/UnlockToastManager.java b/src/main/java/de/dafuqs/spectrum/progression/UnlockToastManager.java index 7cf1aa69d8..c8fdaf0b6d 100644 --- a/src/main/java/de/dafuqs/spectrum/progression/UnlockToastManager.java +++ b/src/main/java/de/dafuqs/spectrum/progression/UnlockToastManager.java @@ -17,11 +17,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.recipe.RecipeType; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.Pair; import org.jetbrains.annotations.NotNull; +import net.minecraft.util.math.random.Random; import java.util.*; @Environment(EnvType.CLIENT) @@ -129,8 +130,8 @@ public static void processAdvancements(Set doneAdvancements) { private static void showGroupedRecipeUnlockToasts(List unlockedRecipes) { if (!unlockedRecipes.isEmpty()) { - TranslatableText singleText = unlockedRecipes.get(0).getSingleUnlockToastString(); - TranslatableText multipleText = unlockedRecipes.get(0).getMultipleUnlockToastString(); + Text singleText = unlockedRecipes.get(0).getSingleUnlockToastString(); + Text multipleText = unlockedRecipes.get(0).getMultipleUnlockToastString(); HashMap> groupedRecipes = new HashMap<>(); diff --git a/src/main/java/de/dafuqs/spectrum/progression/toast/MessageToast.java b/src/main/java/de/dafuqs/spectrum/progression/toast/MessageToast.java index f1b0f3ff10..c7c213ee85 100644 --- a/src/main/java/de/dafuqs/spectrum/progression/toast/MessageToast.java +++ b/src/main/java/de/dafuqs/spectrum/progression/toast/MessageToast.java @@ -15,7 +15,6 @@ import net.minecraft.sound.SoundEvent; import net.minecraft.text.OrderedText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; @@ -35,8 +34,8 @@ public class MessageToast implements Toast { public MessageToast(ItemStack itemStack, String text) { this.itemStack = itemStack; this.soundEvent = SpectrumSoundEvents.NEW_REVELATION; - this.titleText = new TranslatableText("spectrum.toast.message." + text + ".title"); - this.messageText = new TranslatableText("spectrum.toast.message." + text + ".text"); + this.titleText = Text.translatable("spectrum.toast.message." + text + ".title"); + this.messageText = Text.translatable("spectrum.toast.message." + text + ".text"); this.soundPlayed = false; } diff --git a/src/main/java/de/dafuqs/spectrum/progression/toast/RevelationToast.java b/src/main/java/de/dafuqs/spectrum/progression/toast/RevelationToast.java index fcef0bb7d3..2183062bee 100644 --- a/src/main/java/de/dafuqs/spectrum/progression/toast/RevelationToast.java +++ b/src/main/java/de/dafuqs/spectrum/progression/toast/RevelationToast.java @@ -14,7 +14,6 @@ import net.minecraft.sound.SoundEvent; import net.minecraft.text.OrderedText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; @@ -41,8 +40,8 @@ public static void showRevelationToast(MinecraftClient client, ItemStack itemSta @Override public Visibility draw(MatrixStack matrices, ToastManager manager, long startTime) { - Text title = new TranslatableText("spectrum.toast.revelation.title"); - Text text = new TranslatableText("spectrum.toast.revelation.text"); + Text title = Text.translatable("spectrum.toast.revelation.title"); + Text text = Text.translatable("spectrum.toast.revelation.text"); RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.setShaderTexture(0, TEXTURE); diff --git a/src/main/java/de/dafuqs/spectrum/progression/toast/UnlockedRecipeGroupToast.java b/src/main/java/de/dafuqs/spectrum/progression/toast/UnlockedRecipeGroupToast.java index 430f6ab965..5ad73f8177 100644 --- a/src/main/java/de/dafuqs/spectrum/progression/toast/UnlockedRecipeGroupToast.java +++ b/src/main/java/de/dafuqs/spectrum/progression/toast/UnlockedRecipeGroupToast.java @@ -19,7 +19,6 @@ import net.minecraft.potion.PotionUtil; import net.minecraft.sound.SoundEvent; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import org.jetbrains.annotations.NotNull; @@ -44,15 +43,15 @@ public UnlockedRecipeGroupToast(Text title, Text text, List itemStack this.soundPlayed = false; } - public static void showRecipeToast(@NotNull MinecraftClient client, ItemStack itemStack, TranslatableText title) { + public static void showRecipeToast(@NotNull MinecraftClient client, ItemStack itemStack, Text title) { Text text = getTextForItemStack(itemStack); client.getToastManager().add(new UnlockedRecipeGroupToast(title, text, new ArrayList<>() {{ add(itemStack); }})); } - public static void showRecipeGroupToast(@NotNull MinecraftClient client, String groupName, List itemStacks, TranslatableText title) { - Text text = new TranslatableText("recipeGroup.spectrum." + groupName); + public static void showRecipeGroupToast(@NotNull MinecraftClient client, String groupName, List itemStacks, Text title) { + Text text = Text.translatable("recipeGroup.spectrum." + groupName); client.getToastManager().add(new UnlockedRecipeGroupToast(title, text, itemStacks)); } @@ -64,14 +63,14 @@ public static Text getTextForItemStack(@NotNull ItemStack itemStack) { Map enchantments = EnchantmentHelper.get(itemStack); if (enchantments.size() > 0) { Map.Entry firstEnchantment = enchantments.entrySet().iterator().next(); - return new TranslatableText(firstEnchantment.getKey().getTranslationKey()); + return Text.translatable(firstEnchantment.getKey().getTranslationKey()); } } else if (itemStack.isOf(Items.POTION)) { // special handling for potions // use the name of the first custom potion effect List effects = PotionUtil.getCustomPotionEffects(itemStack); if (effects.size() > 0) { - return new TranslatableText(effects.get(0).getTranslationKey()).append(" ").append(new TranslatableText("item.minecraft.potion")); + return Text.translatable(effects.get(0).getTranslationKey()).append(" ").append(Text.translatable("item.minecraft.potion")); } } return itemStack.getName(); diff --git a/src/main/java/de/dafuqs/spectrum/recipe/DescriptiveGatedRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/DescriptiveGatedRecipe.java index 52511179ce..94c8cfe8dd 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/DescriptiveGatedRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/DescriptiveGatedRecipe.java @@ -3,11 +3,11 @@ import net.minecraft.inventory.Inventory; import net.minecraft.item.Item; import net.minecraft.recipe.Recipe; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; public interface DescriptiveGatedRecipe extends Recipe, GatedRecipe { - TranslatableText getDescription(); + Text getDescription(); Item getItem(); } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/GatedRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/GatedRecipe.java index 9cd0e13582..a0e08a672f 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/GatedRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/GatedRecipe.java @@ -8,7 +8,7 @@ import net.minecraft.inventory.Inventory; import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeType; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; public interface GatedRecipe extends Recipe { @@ -28,8 +28,8 @@ private void registerInToastManagerClient(RecipeType recipeType, GatedRecipe gat UnlockToastManager.registerGatedRecipe(recipeType, gatedRecipe); } - TranslatableText getSingleUnlockToastString(); + Text getSingleUnlockToastString(); - TranslatableText getMultipleUnlockToastString(); + Text getMultipleUnlockToastString(); } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/cinderhearth/CinderhearthRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/cinderhearth/CinderhearthRecipe.java index e28e0e9239..3125a45ce1 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/cinderhearth/CinderhearthRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/cinderhearth/CinderhearthRecipe.java @@ -13,7 +13,7 @@ import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.RecipeType; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.Pair; import net.minecraft.util.collection.DefaultedList; @@ -22,7 +22,7 @@ import java.util.ArrayList; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class CinderhearthRecipe implements Recipe, GatedRecipe { @@ -125,13 +125,13 @@ public Identifier getRequiredAdvancementIdentifier() { } @Override - public TranslatableText getSingleUnlockToastString() { - return new TranslatableText("spectrum.toast.cinderhearth_recipe_unlocked.title"); + public Text getSingleUnlockToastString() { + return Text.translatable("spectrum.toast.cinderhearth_recipe_unlocked.title"); } @Override - public TranslatableText getMultipleUnlockToastString() { - return new TranslatableText("spectrum.toast.cinderhearth_recipes_unlocked.title"); + public Text getMultipleUnlockToastString() { + return Text.translatable("spectrum.toast.cinderhearth_recipes_unlocked.title"); } public float getExperience() { diff --git a/src/main/java/de/dafuqs/spectrum/recipe/crystallarieum/CrystallarieumRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/crystallarieum/CrystallarieumRecipe.java index 944db81798..47c095fad0 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/crystallarieum/CrystallarieumRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/crystallarieum/CrystallarieumRecipe.java @@ -14,7 +14,7 @@ import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.RecipeType; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; @@ -162,13 +162,13 @@ public Identifier getRequiredAdvancementIdentifier() { } @Override - public TranslatableText getSingleUnlockToastString() { - return new TranslatableText("spectrum.toast.crystallarieum_recipe_unlocked.title"); + public Text getSingleUnlockToastString() { + return Text.translatable("spectrum.toast.crystallarieum_recipe_unlocked.title"); } @Override - public TranslatableText getMultipleUnlockToastString() { - return new TranslatableText("spectrum.toast.crystallarieum_recipes_unlocked.title"); + public Text getMultipleUnlockToastString() { + return Text.translatable("spectrum.toast.crystallarieum_recipes_unlocked.title"); } public Ingredient getIngredientStack() { diff --git a/src/main/java/de/dafuqs/spectrum/recipe/enchanter/EnchanterRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/enchanter/EnchanterRecipe.java index 76d1294bfa..077288dcc7 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/enchanter/EnchanterRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/enchanter/EnchanterRecipe.java @@ -13,7 +13,7 @@ import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.RecipeType; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; @@ -152,13 +152,13 @@ public boolean canPlayerCraft(PlayerEntity playerEntity) { } @Override - public TranslatableText getSingleUnlockToastString() { - return new TranslatableText("spectrum.toast.enchanter_recipe_unlocked.title"); + public Text getSingleUnlockToastString() { + return Text.translatable("spectrum.toast.enchanter_recipe_unlocked.title"); } @Override - public TranslatableText getMultipleUnlockToastString() { - return new TranslatableText("spectrum.toast.enchanter_recipes_unlocked.title"); + public Text getMultipleUnlockToastString() { + return Text.translatable("spectrum.toast.enchanter_recipes_unlocked.title"); } } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/enchantment_upgrade/EnchantmentUpgradeRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/enchantment_upgrade/EnchantmentUpgradeRecipe.java index 633d1d3dda..6b39aaccb1 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/enchantment_upgrade/EnchantmentUpgradeRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/enchantment_upgrade/EnchantmentUpgradeRecipe.java @@ -17,7 +17,7 @@ import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.RecipeType; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; @@ -190,13 +190,13 @@ public boolean canPlayerCraft(PlayerEntity playerEntity) { } @Override - public TranslatableText getSingleUnlockToastString() { - return new TranslatableText("spectrum.toast.enchanter_recipe_unlocked.title"); + public Text getSingleUnlockToastString() { + return Text.translatable("spectrum.toast.enchanter_recipe_unlocked.title"); } @Override - public TranslatableText getMultipleUnlockToastString() { - return new TranslatableText("spectrum.toast.enchanter_recipes_unlocked.title"); + public Text getMultipleUnlockToastString() { + return Text.translatable("spectrum.toast.enchanter_recipes_unlocked.title"); } } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/fusion_shrine/FusionShrineRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/fusion_shrine/FusionShrineRecipe.java index b02e0f9719..d12d3a51b1 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/fusion_shrine/FusionShrineRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/fusion_shrine/FusionShrineRecipe.java @@ -14,7 +14,6 @@ import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.RecipeType; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; @@ -252,13 +251,13 @@ public boolean canPlayerCraft(PlayerEntity playerEntity) { } @Override - public TranslatableText getSingleUnlockToastString() { - return new TranslatableText("spectrum.toast.fusion_shrine_recipe_unlocked.title"); + public Text getSingleUnlockToastString() { + return Text.translatable("spectrum.toast.fusion_shrine_recipe_unlocked.title"); } @Override - public TranslatableText getMultipleUnlockToastString() { - return new TranslatableText("spectrum.toast.fusion_shrine_recipes_unlocked.title"); + public Text getMultipleUnlockToastString() { + return Text.translatable("spectrum.toast.fusion_shrine_recipes_unlocked.title"); } } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/fusion_shrine/FusionShrineRecipeSerializer.java b/src/main/java/de/dafuqs/spectrum/recipe/fusion_shrine/FusionShrineRecipeSerializer.java index 46b2a6b2c5..f7ca9602bc 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/fusion_shrine/FusionShrineRecipeSerializer.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/fusion_shrine/FusionShrineRecipeSerializer.java @@ -11,12 +11,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.network.PacketByteBuf; import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.JsonHelper; import net.minecraft.util.registry.Registry; +import org.objectweb.asm.commons.TableSwitchGenerator; import java.util.ArrayList; import java.util.List; @@ -97,9 +96,9 @@ public FusionShrineRecipe read(Identifier identifier, JsonObject jsonObject) { } else { finishWorldEffect = FusionShrineRecipeWorldEffect.NOTHING; } - TranslatableText description; + Text description; if (JsonHelper.hasString(jsonObject, "description")) { - description = new TranslatableText(JsonHelper.getString(jsonObject, "description")); + description = Text.translatable(JsonHelper.getString(jsonObject, "description")); } else { description = null; } @@ -136,7 +135,7 @@ public void write(PacketByteBuf packetByteBuf, FusionShrineRecipe fusionShrineRe } packetByteBuf.writeInt(fusionShrineRecipe.finishWorldEffect.ordinal()); if (fusionShrineRecipe.getDescription().isEmpty()) { - packetByteBuf.writeText(new LiteralText("")); + packetByteBuf.writeText(Text.literal("")); } else { packetByteBuf.writeText(fusionShrineRecipe.getDescription().get()); } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/ink_converting/InkConvertingRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/ink_converting/InkConvertingRecipe.java index e4fc0c589e..26d5975fec 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/ink_converting/InkConvertingRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/ink_converting/InkConvertingRecipe.java @@ -14,7 +14,7 @@ import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.RecipeType; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; @@ -132,13 +132,13 @@ public long getInkAmount() { } @Override - public TranslatableText getSingleUnlockToastString() { - return new TranslatableText("spectrum.toast.ink_converting_recipe_unlocked.title"); + public Text getSingleUnlockToastString() { + return Text.translatable("spectrum.toast.ink_converting_recipe_unlocked.title"); } @Override - public TranslatableText getMultipleUnlockToastString() { - return new TranslatableText("spectrum.toast.ink_converting_recipes_unlocked.title"); + public Text getMultipleUnlockToastString() { + return Text.translatable("spectrum.toast.ink_converting_recipes_unlocked.title"); } } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/pedestal/PedestalCraftingRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/pedestal/PedestalCraftingRecipe.java index a40447634f..0bdaa13fc3 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/pedestal/PedestalCraftingRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/pedestal/PedestalCraftingRecipe.java @@ -21,7 +21,7 @@ import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.RecipeType; import net.minecraft.sound.SoundEvent; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; @@ -29,7 +29,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class PedestalCraftingRecipe implements Recipe, GatedRecipe { @@ -299,13 +299,13 @@ public boolean skipRecipeRemainders() { } @Override - public TranslatableText getSingleUnlockToastString() { - return new TranslatableText("spectrum.toast.pedestal_recipe_unlocked.title"); + public Text getSingleUnlockToastString() { + return Text.translatable("spectrum.toast.pedestal_recipe_unlocked.title"); } @Override - public TranslatableText getMultipleUnlockToastString() { - return new TranslatableText("spectrum.toast.pedestal_recipes_unlocked.title"); + public Text getMultipleUnlockToastString() { + return Text.translatable("spectrum.toast.pedestal_recipes_unlocked.title"); } } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopBrewingRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopBrewingRecipe.java index e17c8b6cc3..c4ff2a644f 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopBrewingRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopBrewingRecipe.java @@ -15,7 +15,7 @@ import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.RecipeType; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.Pair; import net.minecraft.util.collection.DefaultedList; @@ -24,7 +24,7 @@ import java.util.ArrayList; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class PotionWorkshopBrewingRecipe extends PotionWorkshopRecipe { @@ -190,12 +190,12 @@ public ItemStack brewRandomPotion(PotionMod potionMod, StatusEffect lastBrewedSt if (potionMod.makeSplashing) { if (potionMod.makeLingering) { - itemStack.setCustomName(new TranslatableText("item.spectrum.lingering_potion")); + itemStack.setCustomName(Text.translatable("item.spectrum.lingering_potion")); } else { - itemStack.setCustomName(new TranslatableText("item.spectrum.splash_potion")); + itemStack.setCustomName(Text.translatable("item.spectrum.splash_potion")); } } else { - itemStack.setCustomName(new TranslatableText("item.spectrum.potion")); + itemStack.setCustomName(Text.translatable("item.spectrum.potion")); } if (potionMod.fastDrinkable) { NbtCompound compound = itemStack.getOrCreateNbt(); @@ -230,7 +230,7 @@ public ItemStack getTippedArrows(PotionMod potionMod, StatusEffect lastBrewedSta PotionUtil.setCustomPotionEffects(itemStack, effects); } - itemStack.setCustomName(new TranslatableText("item.spectrum.tipped_arrow")); + itemStack.setCustomName(Text.translatable("item.spectrum.tipped_arrow")); setColor(itemStack, potionMod, effects); return itemStack; diff --git a/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopReactingRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopReactingRecipe.java index d0e9e53faa..917f32c5c2 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopReactingRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopReactingRecipe.java @@ -12,7 +12,7 @@ import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.RecipeType; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.registry.Registry; @@ -22,7 +22,7 @@ import java.util.HashMap; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class PotionWorkshopReactingRecipe implements Recipe, DescriptiveGatedRecipe { @@ -107,13 +107,13 @@ public Identifier getRequiredAdvancementIdentifier() { } @Override - public TranslatableText getSingleUnlockToastString() { - return new TranslatableText("spectrum.toast.potion_reagent_unlocked.title"); + public Text getSingleUnlockToastString() { + return Text.translatable("spectrum.toast.potion_reagent_unlocked.title"); } @Override - public TranslatableText getMultipleUnlockToastString() { - return new TranslatableText("spectrum.toast.potion_reagents_unlocked.title"); + public Text getMultipleUnlockToastString() { + return Text.translatable("spectrum.toast.potion_reagents_unlocked.title"); } @Override @@ -125,9 +125,9 @@ public static boolean isReagent(Item item) { return reagents.containsKey(item); } - public TranslatableText getDescription() { + public Text getDescription() { Identifier identifier = Registry.ITEM.getId(this.item); - return new TranslatableText("spectrum.rei.potion_workshop_reacting." + identifier.getNamespace() + "." + identifier.getPath()); + return Text.translatable("spectrum.rei.potion_workshop_reacting." + identifier.getNamespace() + "." + identifier.getPath()); } public Item getItem() { diff --git a/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopRecipe.java index f1750b0b5f..22cd462221 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopRecipe.java @@ -13,7 +13,7 @@ import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.RecipeType; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.world.World; import org.jetbrains.annotations.NotNull; @@ -178,13 +178,13 @@ public int getColor() { } @Override - public TranslatableText getSingleUnlockToastString() { - return new TranslatableText("spectrum.toast.potion_workshop_recipe_unlocked.title"); + public Text getSingleUnlockToastString() { + return Text.translatable("spectrum.toast.potion_workshop_recipe_unlocked.title"); } @Override - public TranslatableText getMultipleUnlockToastString() { - return new TranslatableText("spectrum.toast.potion_workshop_recipes_unlocked.title"); + public Text getMultipleUnlockToastString() { + return Text.translatable("spectrum.toast.potion_workshop_recipes_unlocked.title"); } } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/ISpiritInstillerRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/ISpiritInstillerRecipe.java index 22cadfc368..fc3b16a161 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/ISpiritInstillerRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/ISpiritInstillerRecipe.java @@ -14,7 +14,7 @@ import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeType; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; @@ -106,13 +106,13 @@ default String getGroup() { boolean canCraftWithStacks(ItemStack instillerStack, ItemStack leftBowlStack, ItemStack rightBowlStack); @Override - default TranslatableText getSingleUnlockToastString() { - return new TranslatableText("spectrum.toast.spirit_instiller_recipe_unlocked.title"); + default Text getSingleUnlockToastString() { + return Text.translatable("spectrum.toast.spirit_instiller_recipe_unlocked.title"); } @Override - default TranslatableText getMultipleUnlockToastString() { - return new TranslatableText("spectrum.toast.spirit_instiller_recipes_unlocked.title"); + default Text getMultipleUnlockToastString() { + return Text.translatable("spectrum.toast.spirit_instiller_recipes_unlocked.title"); } } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerChangeRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerChangeRecipe.java index 876c20047d..2e8edbfd6a 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerChangeRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerChangeRecipe.java @@ -20,7 +20,7 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; @@ -164,6 +164,6 @@ public boolean canCraftWithStacks(ItemStack instillerStack, ItemStack leftBowlSt @Override public abstract RecipeSerializer getSerializer(); - public abstract TranslatableText getOutputLoreText(); + public abstract Text getOutputLoreText(); } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerCreatureChangeRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerCreatureChangeRecipe.java index 94e7ad08a6..87158efcdc 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerCreatureChangeRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerCreatureChangeRecipe.java @@ -9,7 +9,7 @@ import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.SpecialRecipeSerializer; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; @@ -63,8 +63,8 @@ public RecipeSerializer getSerializer() { } @Override - public TranslatableText getOutputLoreText() { - return new TranslatableText("recipe.spectrum.spawner.lore.changed_creature"); + public Text getOutputLoreText() { + return Text.translatable("recipe.spectrum.spawner.lore.changed_creature"); } public NbtCompound getSpawnerResultNbt(NbtCompound spawnerBlockEntityNbt, ItemStack firstBowlStack, ItemStack secondBowlStack) { diff --git a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerMaxNearbyEntitiesChangeRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerMaxNearbyEntitiesChangeRecipe.java index d673867bf7..7f14bd4414 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerMaxNearbyEntitiesChangeRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerMaxNearbyEntitiesChangeRecipe.java @@ -8,7 +8,7 @@ import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.SpecialRecipeSerializer; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; public class SpawnerMaxNearbyEntitiesChangeRecipe extends SpawnerChangeRecipe { @@ -38,8 +38,8 @@ public RecipeSerializer getSerializer() { } @Override - public TranslatableText getOutputLoreText() { - return new TranslatableText("recipe.spectrum.spawner.lore.increased_max_nearby_entities"); + public Text getOutputLoreText() { + return Text.translatable("recipe.spectrum.spawner.lore.increased_max_nearby_entities"); } public NbtCompound getSpawnerResultNbt(NbtCompound spawnerBlockEntityNbt, ItemStack firstBowlStack, ItemStack secondBowlStack) { diff --git a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerRequiredPlayerRangeChangeRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerRequiredPlayerRangeChangeRecipe.java index b33287dec3..8ce336ca97 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerRequiredPlayerRangeChangeRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerRequiredPlayerRangeChangeRecipe.java @@ -8,7 +8,7 @@ import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.SpecialRecipeSerializer; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; public class SpawnerRequiredPlayerRangeChangeRecipe extends SpawnerChangeRecipe { @@ -38,8 +38,8 @@ public RecipeSerializer getSerializer() { } @Override - public TranslatableText getOutputLoreText() { - return new TranslatableText("recipe.spectrum.spawner.lore.increased_required_player_range"); + public Text getOutputLoreText() { + return Text.translatable("recipe.spectrum.spawner.lore.increased_required_player_range"); } public NbtCompound getSpawnerResultNbt(NbtCompound spawnerBlockEntityNbt, ItemStack firstBowlStack, ItemStack secondBowlStack) { diff --git a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerSpawnCountChangeRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerSpawnCountChangeRecipe.java index 680ec0ebcb..25bc721779 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerSpawnCountChangeRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerSpawnCountChangeRecipe.java @@ -8,7 +8,7 @@ import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.SpecialRecipeSerializer; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; public class SpawnerSpawnCountChangeRecipe extends SpawnerChangeRecipe { @@ -38,8 +38,8 @@ public RecipeSerializer getSerializer() { } @Override - public TranslatableText getOutputLoreText() { - return new TranslatableText("recipe.spectrum.spawner.lore.increased_spawn_count"); + public Text getOutputLoreText() { + return Text.translatable("recipe.spectrum.spawner.lore.increased_spawn_count"); } public NbtCompound getSpawnerResultNbt(NbtCompound spawnerBlockEntityNbt, ItemStack firstBowlStack, ItemStack secondBowlStack) { diff --git a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerSpawnDelayChangeRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerSpawnDelayChangeRecipe.java index 509eb69ff9..dfeb8536c5 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerSpawnDelayChangeRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/spirit_instiller/spawner/SpawnerSpawnDelayChangeRecipe.java @@ -8,7 +8,7 @@ import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.SpecialRecipeSerializer; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; public class SpawnerSpawnDelayChangeRecipe extends SpawnerChangeRecipe { @@ -38,8 +38,8 @@ public RecipeSerializer getSerializer() { } @Override - public TranslatableText getOutputLoreText() { - return new TranslatableText("recipe.spectrum.spawner.lore.decreased_spawn_delay"); + public Text getOutputLoreText() { + return Text.translatable("recipe.spectrum.spawner.lore.decreased_spawn_delay"); } public NbtCompound getSpawnerResultNbt(NbtCompound spawnerBlockEntityNbt, ItemStack firstBowlStack, ItemStack secondBowlStack) { diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java index 385b45ebf3..61e3c9cf83 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java @@ -95,7 +95,7 @@ import net.minecraft.sound.BlockSoundGroup; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.DyeColor; import net.minecraft.util.Rarity; import net.minecraft.util.math.BlockPos; @@ -162,7 +162,7 @@ public class SpectrumBlocks { public static final Block MOONSTONE_BLOCK = new SpectrumGemstoneBlock(FabricBlockSettings.of(Material.AMETHYST, MapColor.WHITE).hardness(1.5F).sounds(SpectrumBlockSoundGroups.MOONSTONE_BLOCK).requiresTool(), SpectrumSoundEvents.BLOCK_MOONSTONE_BLOCK_HIT, SpectrumSoundEvents.BLOCK_MOONSTONE_BLOCK_CHIME); public static final Block SPECTRAL_SHARD_BLOCK = new SpectrumGemstoneBlock(FabricBlockSettings.of(Material.AMETHYST, MapColor.DIAMOND_BLUE).hardness(1.5F).sounds(SpectrumBlockSoundGroups.SPECTRAL_BLOCK).requiresTool(), SpectrumSoundEvents.SPECTRAL_BLOCK_HIT, SpectrumSoundEvents.SPECTRAL_BLOCK_CHIME); - public static final Block BEDROCK_STORAGE_BLOCK = new BlockWithTooltip(FabricBlockSettings.of(Material.METAL, MapColor.GRAY).requiresTool().strength(100.0F, 3600.0F), new TranslatableText("spectrum.tooltip.dragon_and_wither_immune")); + public static final Block BEDROCK_STORAGE_BLOCK = new BlockWithTooltip(FabricBlockSettings.of(Material.METAL, MapColor.GRAY).requiresTool().strength(100.0F, 3600.0F), Text.translatable("spectrum.tooltip.dragon_and_wither_immune")); public static final Block BISMUTH_CLUSTER = new BismuthClusterBlock(9, 3, null, FabricBlockSettings.of(Material.AMETHYST).mapColor(MapColor.DARK_AQUA).hardness(1.5F).nonOpaque().requiresTool().sounds(BlockSoundGroup.CHAIN)); public static final Block LARGE_BISMUTH_BUD = new BismuthClusterBlock(5, 3, BISMUTH_CLUSTER.getDefaultState(), FabricBlockSettings.copyOf(TOPAZ_CLUSTER).mapColor(MapColor.DARK_AQUA).sounds(BlockSoundGroup.CHAIN)); diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumCommands.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumCommands.java index 4fd30035d0..f60f721db6 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumCommands.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumCommands.java @@ -2,12 +2,12 @@ import de.dafuqs.spectrum.commands.ProgressionSanityCommand; import de.dafuqs.spectrum.commands.ShootingStarCommand; -import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback; +import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; public class SpectrumCommands { public static void register() { - CommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> { + CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> { ShootingStarCommand.register(dispatcher); ProgressionSanityCommand.register(dispatcher); }); diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumMultiblocks.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumMultiblocks.java index 61d78583ab..8241455ad1 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumMultiblocks.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumMultiblocks.java @@ -2,7 +2,7 @@ import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.enums.PedestalRecipeTier; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -297,16 +297,16 @@ private static void registerPedestal() { return null; } - public static @Nullable TranslatableText getPedestalStructureText(@NotNull PedestalRecipeTier pedestalRecipeTier) { + public static @Nullable Text getPedestalStructureText(@NotNull PedestalRecipeTier pedestalRecipeTier) { switch (pedestalRecipeTier) { case COMPLEX -> { - return new TranslatableText("multiblock.spectrum.pedestal.complex_structure"); + return Text.translatable("multiblock.spectrum.pedestal.complex_structure"); } case ADVANCED -> { - return new TranslatableText("multiblock.spectrum.pedestal.advanced_structure"); + return Text.translatable("multiblock.spectrum.pedestal.advanced_structure"); } case SIMPLE -> { - return new TranslatableText("multiblock.spectrum.pedestal.simple_structure"); + return Text.translatable("multiblock.spectrum.pedestal.simple_structure"); } } return null; diff --git a/src/main/java/de/dafuqs/spectrum/registries/client/SpectrumItemPredicates.java b/src/main/java/de/dafuqs/spectrum/registries/client/SpectrumItemPredicates.java index fd80409f0e..63d5bf9eba 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/client/SpectrumItemPredicates.java +++ b/src/main/java/de/dafuqs/spectrum/registries/client/SpectrumItemPredicates.java @@ -80,7 +80,7 @@ private static void registerMoonPhasePredicates(Item item) { if (clientWorld == null) { return 0.0F; - } else if (!clientWorld.getDimension().isNatural()) { + } else if (!clientWorld.getDimension().natural()) { return 1.0F; } else { return clientWorld.getMoonPhase() / 8F; diff --git a/src/main/java/de/dafuqs/spectrum/render/HudRenderers.java b/src/main/java/de/dafuqs/spectrum/render/HudRenderers.java index 3b1f1ba913..ab2507ff3b 100644 --- a/src/main/java/de/dafuqs/spectrum/render/HudRenderers.java +++ b/src/main/java/de/dafuqs/spectrum/render/HudRenderers.java @@ -13,7 +13,7 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.math.MathHelper; import vazkii.patchouli.client.RenderHelper; @@ -22,8 +22,8 @@ @Environment(EnvType.CLIENT) public class HudRenderers { - private static final TranslatableText missingInkText = new TranslatableText("item.spectrum.placement_staff.tooltip.missing_ink"); - private static final TranslatableText noneText = new TranslatableText("item.spectrum.placement_staff.tooltip.none_in_inventory"); + private static final Text missingInkText = Text.translatable("item.spectrum.placement_staff.tooltip.missing_ink"); + private static final Text noneText = Text.translatable("item.spectrum.placement_staff.tooltip.none_in_inventory"); private static ItemStack itemStackToRender; private static int amount; diff --git a/src/main/java/de/dafuqs/spectrum/sound/EnderSpliceChargingSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/EnderSpliceChargingSoundInstance.java index 66df1db027..3ea24b037e 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/EnderSpliceChargingSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/EnderSpliceChargingSoundInstance.java @@ -11,7 +11,7 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -import java.util.Random; +import net.minecraft.util.math.random.Random; @Environment(EnvType.CLIENT) public class EnderSpliceChargingSoundInstance extends AbstractSoundInstance implements TickableSoundInstance { diff --git a/src/main/java/de/dafuqs/spectrum/sound/TakeOffBeltSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/TakeOffBeltSoundInstance.java index e967b94b37..8062b438e6 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/TakeOffBeltSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/TakeOffBeltSoundInstance.java @@ -14,7 +14,7 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -import java.util.Random; +import net.minecraft.util.math.random.Random; @Environment(EnvType.CLIENT) public class TakeOffBeltSoundInstance extends AbstractSoundInstance implements TickableSoundInstance { diff --git a/src/main/java/de/dafuqs/spectrum/spells/InkSpellEffects.java b/src/main/java/de/dafuqs/spectrum/spells/InkSpellEffects.java index cbb83876e8..d82a055721 100644 --- a/src/main/java/de/dafuqs/spectrum/spells/InkSpellEffects.java +++ b/src/main/java/de/dafuqs/spectrum/spells/InkSpellEffects.java @@ -23,7 +23,7 @@ import java.util.HashMap; import java.util.Map; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class InkSpellEffects { diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/ColoredSaplingGenerator.java b/src/main/java/de/dafuqs/spectrum/worldgen/ColoredSaplingGenerator.java index 6ed547d350..ec6aae35f6 100644 --- a/src/main/java/de/dafuqs/spectrum/worldgen/ColoredSaplingGenerator.java +++ b/src/main/java/de/dafuqs/spectrum/worldgen/ColoredSaplingGenerator.java @@ -6,7 +6,7 @@ import net.minecraft.world.gen.feature.ConfiguredFeature; import org.jetbrains.annotations.Nullable; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class ColoredSaplingGenerator extends SaplingGenerator { diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/OminousSaplingGenerator.java b/src/main/java/de/dafuqs/spectrum/worldgen/OminousSaplingGenerator.java index d47be2169c..e33af650cc 100644 --- a/src/main/java/de/dafuqs/spectrum/worldgen/OminousSaplingGenerator.java +++ b/src/main/java/de/dafuqs/spectrum/worldgen/OminousSaplingGenerator.java @@ -4,7 +4,7 @@ import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.gen.feature.ConfiguredFeature; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class OminousSaplingGenerator extends SaplingGenerator { diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/features/RandomBudsFeature.java b/src/main/java/de/dafuqs/spectrum/worldgen/features/RandomBudsFeature.java index e03877474c..f18d2ae1d4 100644 --- a/src/main/java/de/dafuqs/spectrum/worldgen/features/RandomBudsFeature.java +++ b/src/main/java/de/dafuqs/spectrum/worldgen/features/RandomBudsFeature.java @@ -7,6 +7,7 @@ import net.minecraft.state.property.Properties; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; +import net.minecraft.util.math.random.Random; import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.gen.feature.Feature; import net.minecraft.world.gen.feature.util.FeatureContext; @@ -14,7 +15,6 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; -import java.util.Random; import java.util.stream.Collectors; public class RandomBudsFeature extends Feature { diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/features/WeightedRandomFeature.java b/src/main/java/de/dafuqs/spectrum/worldgen/features/WeightedRandomFeature.java index a6b7e23bb4..d304cdb348 100644 --- a/src/main/java/de/dafuqs/spectrum/worldgen/features/WeightedRandomFeature.java +++ b/src/main/java/de/dafuqs/spectrum/worldgen/features/WeightedRandomFeature.java @@ -7,7 +7,7 @@ import net.minecraft.world.gen.feature.PlacedFeature; import net.minecraft.world.gen.feature.util.FeatureContext; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class WeightedRandomFeature extends Feature { diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/features/WeightedRandomFeatureConfig.java b/src/main/java/de/dafuqs/spectrum/worldgen/features/WeightedRandomFeatureConfig.java index 9de413b360..6228925e85 100644 --- a/src/main/java/de/dafuqs/spectrum/worldgen/features/WeightedRandomFeatureConfig.java +++ b/src/main/java/de/dafuqs/spectrum/worldgen/features/WeightedRandomFeatureConfig.java @@ -7,7 +7,7 @@ import net.minecraft.world.gen.feature.PlacedFeature; import java.util.List; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class WeightedRandomFeatureConfig implements FeatureConfig { diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/features/WeightedRandomFeaturePatch.java b/src/main/java/de/dafuqs/spectrum/worldgen/features/WeightedRandomFeaturePatch.java index 609f4ed23d..f06ae21a0a 100644 --- a/src/main/java/de/dafuqs/spectrum/worldgen/features/WeightedRandomFeaturePatch.java +++ b/src/main/java/de/dafuqs/spectrum/worldgen/features/WeightedRandomFeaturePatch.java @@ -6,7 +6,7 @@ import net.minecraft.world.gen.feature.Feature; import net.minecraft.world.gen.feature.util.FeatureContext; -import java.util.Random; +import net.minecraft.util.math.random.Random; public class WeightedRandomFeaturePatch extends Feature { diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumStructureFeatures.java b/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumStructureFeatures.java index 1e84c90fc4..8f793a544f 100644 --- a/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumStructureFeatures.java +++ b/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumStructureFeatures.java @@ -1,16 +1,15 @@ package de.dafuqs.spectrum.worldgen.structure_features; import de.dafuqs.spectrum.SpectrumCommon; -import de.dafuqs.spectrum.mixin.accessors.StructureFeatureAccessor; -import net.minecraft.world.gen.GenerationStep; -import net.minecraft.world.gen.feature.StructureFeature; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.gen.structure.StructureType; public class SpectrumStructureFeatures { - public static StructureFeature UNDERGROUND_STRUCTURES = new SpectrumUndergroundStructures(); + public static StructureType UNDERGROUND_STRUCTURES; public static void register() { - StructureFeatureAccessor.callRegister(SpectrumCommon.MOD_ID + ":underground_structures", UNDERGROUND_STRUCTURES, GenerationStep.Feature.UNDERGROUND_STRUCTURES); + UNDERGROUND_STRUCTURES = Registry.register(Registry.STRUCTURE_TYPE, SpectrumCommon.locate("underground_structures"), () -> SpectrumUndergroundStructures.CODEC); } } diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumStructurePoolBasedGenerator.java b/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumStructurePoolBasedGenerator.java deleted file mode 100644 index c9465434df..0000000000 --- a/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumStructurePoolBasedGenerator.java +++ /dev/null @@ -1,324 +0,0 @@ -package de.dafuqs.spectrum.worldgen.structure_features; - -import com.google.common.collect.Lists; -import com.google.common.collect.Queues; -import com.mojang.logging.LogUtils; -import net.minecraft.block.JigsawBlock; -import net.minecraft.structure.JigsawJunction; -import net.minecraft.structure.PoolStructurePiece; -import net.minecraft.structure.Structure.StructureBlockInfo; -import net.minecraft.structure.StructureGeneratorFactory.Context; -import net.minecraft.structure.StructureManager; -import net.minecraft.structure.StructurePiecesGenerator; -import net.minecraft.structure.pool.EmptyPoolElement; -import net.minecraft.structure.pool.StructurePool; -import net.minecraft.structure.pool.StructurePool.Projection; -import net.minecraft.structure.pool.StructurePoolElement; -import net.minecraft.structure.pool.StructurePools; -import net.minecraft.util.BlockRotation; -import net.minecraft.util.Identifier; -import net.minecraft.util.function.BooleanBiFunction; -import net.minecraft.util.math.BlockBox; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; -import net.minecraft.util.math.Direction; -import net.minecraft.util.registry.DynamicRegistryManager; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.RegistryEntry; -import net.minecraft.util.shape.VoxelShape; -import net.minecraft.util.shape.VoxelShapes; -import net.minecraft.world.HeightLimitView; -import net.minecraft.world.Heightmap.Type; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.biome.source.BiomeCoords; -import net.minecraft.world.gen.chunk.ChunkGenerator; -import net.minecraft.world.gen.feature.StructureFeature; -import net.minecraft.world.gen.feature.StructurePoolFeatureConfig; -import net.minecraft.world.gen.random.AtomicSimpleRandom; -import net.minecraft.world.gen.random.ChunkRandom; -import org.apache.commons.lang3.mutable.MutableObject; -import org.slf4j.Logger; - -import java.util.*; -import java.util.function.Predicate; - -public class SpectrumStructurePoolBasedGenerator { - - static final Logger LOGGER = LogUtils.getLogger(); - - public SpectrumStructurePoolBasedGenerator() { - } - - public static Optional> generate(Context context, SpectrumStructurePoolBasedGenerator.PieceFactory pieceFactory, BlockPos pos, boolean bl, boolean bl2) { - ChunkRandom chunkRandom = new ChunkRandom(new AtomicSimpleRandom(0L)); - chunkRandom.setCarverSeed(context.seed(), context.chunkPos().x, context.chunkPos().z); - DynamicRegistryManager dynamicRegistryManager = context.registryManager(); - StructurePoolFeatureConfig structurePoolFeatureConfig = context.config(); - ChunkGenerator chunkGenerator = context.chunkGenerator(); - StructureManager structureManager = context.structureManager(); - HeightLimitView heightLimitView = context.world(); - Predicate> predicate = context.validBiome(); - StructureFeature.init(); - Registry registry = dynamicRegistryManager.get(Registry.STRUCTURE_POOL_KEY); - BlockRotation blockRotation = BlockRotation.random(chunkRandom); - StructurePool structurePool = structurePoolFeatureConfig.getStartPool().value(); - StructurePoolElement structurePoolElement = structurePool.getRandomElement(chunkRandom); - if (structurePoolElement == EmptyPoolElement.INSTANCE) { - return Optional.empty(); - } else { - PoolStructurePiece poolStructurePiece = pieceFactory.create(structureManager, structurePoolElement, pos, structurePoolElement.getGroundLevelDelta(), blockRotation, structurePoolElement.getBoundingBox(structureManager, pos, blockRotation)); - BlockBox blockBox = poolStructurePiece.getBoundingBox(); - int i = (blockBox.getMaxX() + blockBox.getMinX()) / 2; - int j = (blockBox.getMaxZ() + blockBox.getMinZ()) / 2; - int k; - if (bl2) { - k = pos.getY() + chunkGenerator.getHeightOnGround(i, j, Type.WORLD_SURFACE_WG, heightLimitView); - } else { - k = pos.getY(); - } - - if (!predicate.test(chunkGenerator.getBiomeForNoiseGen(BiomeCoords.fromBlock(i), BiomeCoords.fromBlock(k), BiomeCoords.fromBlock(j)))) { - return Optional.empty(); - } else { - int l = blockBox.getMinY() + poolStructurePiece.getGroundLevelDelta(); - poolStructurePiece.translate(0, k - l, 0); - return Optional.of((structurePiecesCollector, contextx) -> { - List list = Lists.newArrayList(); - list.add(poolStructurePiece); - if (structurePoolFeatureConfig.getSize() > 0) { - Box box = new Box((i - 80), (k - 80), (j - 80), (i + 80 + 1), (k + 80 + 1), (j + 80 + 1)); - SpectrumStructurePoolBasedGenerator.StructurePoolGenerator structurePoolGenerator = new SpectrumStructurePoolBasedGenerator.StructurePoolGenerator(registry, structurePoolFeatureConfig.getSize(), pieceFactory, chunkGenerator, structureManager, list, chunkRandom); - structurePoolGenerator.structurePieces.addLast(new SpectrumStructurePoolBasedGenerator.ShapedPoolStructurePiece(poolStructurePiece, new MutableObject(VoxelShapes.combineAndSimplify(VoxelShapes.cuboid(box), VoxelShapes.cuboid(Box.from(blockBox)), BooleanBiFunction.ONLY_FIRST)), 0)); - - while (!structurePoolGenerator.structurePieces.isEmpty()) { - SpectrumStructurePoolBasedGenerator.ShapedPoolStructurePiece shapedPoolStructurePiece = structurePoolGenerator.structurePieces.removeFirst(); - structurePoolGenerator.generatePiece(shapedPoolStructurePiece.piece, shapedPoolStructurePiece.pieceShape, shapedPoolStructurePiece.currentSize, bl, heightLimitView); - } - - Objects.requireNonNull(structurePiecesCollector); - list.forEach(structurePiecesCollector::addPiece); - } - }); - } - } - } - - public static void generate(DynamicRegistryManager registryManager, PoolStructurePiece piece, int maxDepth, SpectrumStructurePoolBasedGenerator.PieceFactory pieceFactory, ChunkGenerator chunkGenerator, StructureManager structureManager, List results, Random random, HeightLimitView world) { - Registry registry = registryManager.get(Registry.STRUCTURE_POOL_KEY); - SpectrumStructurePoolBasedGenerator.StructurePoolGenerator structurePoolGenerator = new SpectrumStructurePoolBasedGenerator.StructurePoolGenerator(registry, maxDepth, pieceFactory, chunkGenerator, structureManager, results, random); - structurePoolGenerator.structurePieces.addLast(new SpectrumStructurePoolBasedGenerator.ShapedPoolStructurePiece(piece, new MutableObject(VoxelShapes.UNBOUNDED), 0)); - - while (!structurePoolGenerator.structurePieces.isEmpty()) { - SpectrumStructurePoolBasedGenerator.ShapedPoolStructurePiece shapedPoolStructurePiece = structurePoolGenerator.structurePieces.removeFirst(); - structurePoolGenerator.generatePiece(shapedPoolStructurePiece.piece, shapedPoolStructurePiece.pieceShape, shapedPoolStructurePiece.currentSize, false, world); - } - } - - public interface PieceFactory { - PoolStructurePiece create(StructureManager structureManager, StructurePoolElement poolElement, BlockPos pos, int groundLevelDelta, BlockRotation rotation, BlockBox elementBounds); - } - - static final class StructurePoolGenerator { - final Deque structurePieces = Queues.newArrayDeque(); - private final Registry registry; - private final int maxSize; - private final SpectrumStructurePoolBasedGenerator.PieceFactory pieceFactory; - private final ChunkGenerator chunkGenerator; - private final StructureManager structureManager; - private final List children; - private final Random random; - - StructurePoolGenerator(Registry registry, int maxSize, SpectrumStructurePoolBasedGenerator.PieceFactory pieceFactory, ChunkGenerator chunkGenerator, StructureManager structureManager, List children, Random random) { - this.registry = registry; - this.maxSize = maxSize; - this.pieceFactory = pieceFactory; - this.chunkGenerator = chunkGenerator; - this.structureManager = structureManager; - this.children = children; - this.random = random; - } - - void generatePiece(PoolStructurePiece piece, MutableObject pieceShape, int minY, boolean modifyBoundingBox, HeightLimitView world) { - StructurePoolElement structurePoolElement = piece.getPoolElement(); - BlockPos blockPos = piece.getPos(); - BlockRotation blockRotation = piece.getRotation(); - Projection projection = structurePoolElement.getProjection(); - boolean bl = projection == Projection.RIGID; - MutableObject mutableObject = new MutableObject(); - BlockBox blockBox = piece.getBoundingBox(); - int i = blockBox.getMinY(); - Iterator var14 = structurePoolElement.getStructureBlockInfos(this.structureManager, blockPos, blockRotation, this.random).iterator(); - - while (true) { - while (true) { - while (true) { - label93: - while (var14.hasNext()) { - StructureBlockInfo structureBlockInfo = (StructureBlockInfo) var14.next(); - Direction direction = JigsawBlock.getFacing(structureBlockInfo.state); - BlockPos blockPos2 = structureBlockInfo.pos; - BlockPos blockPos3 = blockPos2.offset(direction); - int j = blockPos2.getY() - i; - int k = -1; - Identifier identifier = new Identifier(structureBlockInfo.nbt.getString("pool")); - Optional optional = this.registry.getOrEmpty(identifier); - if (optional.isPresent() && ((optional.get()).getElementCount() != 0 || Objects.equals(identifier, StructurePools.EMPTY.getValue()))) { - Identifier identifier2 = (optional.get()).getTerminatorsId(); - Optional optional2 = this.registry.getOrEmpty(identifier2); - if (optional2.isPresent() && ((optional2.get()).getElementCount() != 0 || Objects.equals(identifier2, StructurePools.EMPTY.getValue()))) { - boolean bl2 = blockBox.contains(blockPos3); - MutableObject mutableObject2; - if (bl2) { - mutableObject2 = mutableObject; - if (mutableObject.getValue() == null) { - mutableObject.setValue(VoxelShapes.cuboid(Box.from(blockBox))); - } - } else { - mutableObject2 = pieceShape; - } - - List list = Lists.newArrayList(); - if (minY != this.maxSize) { - list.addAll((optional.get()).getElementIndicesInRandomOrder(this.random)); - } - - list.addAll((optional2.get()).getElementIndicesInRandomOrder(this.random)); - Iterator var28 = list.iterator(); - - while (var28.hasNext()) { - StructurePoolElement structurePoolElement2 = (StructurePoolElement) var28.next(); - if (structurePoolElement2 == EmptyPoolElement.INSTANCE) { - break; - } - - Iterator var30 = BlockRotation.randomRotationOrder(this.random).iterator(); - - label133: - while (var30.hasNext()) { - BlockRotation blockRotation2 = (BlockRotation) var30.next(); - List list2 = structurePoolElement2.getStructureBlockInfos(this.structureManager, BlockPos.ORIGIN, blockRotation2, this.random); - BlockBox blockBox2 = structurePoolElement2.getBoundingBox(this.structureManager, BlockPos.ORIGIN, blockRotation2); - int l; - if (modifyBoundingBox && blockBox2.getBlockCountY() <= 16) { - l = list2.stream().mapToInt((structureBlockInfox) -> { - if (!blockBox2.contains(structureBlockInfox.pos.offset(JigsawBlock.getFacing(structureBlockInfox.state)))) { - return 0; - } else { - Identifier id = new Identifier(structureBlockInfox.nbt.getString("pool")); - Optional optionalZ = this.registry.getOrEmpty(identifier); - Optional optional2Z = optional.flatMap((pool) -> this.registry.getOrEmpty(pool.getTerminatorsId())); - int iZ = optionalZ.map((pool) -> pool.getHighestY(this.structureManager)).orElse(0); - int jZ = optional2Z.map((pool) -> pool.getHighestY(this.structureManager)).orElse(0); - return Math.max(iZ, jZ); - } - }).max().orElse(0); - } else { - l = 0; - } - - Iterator var35 = list2.iterator(); - - Projection projection2; - boolean bl3; - int n; - int o; - int p; - BlockBox blockBox4; - BlockPos blockPos6; - int r; - do { - StructureBlockInfo structureBlockInfo2; - do { - if (!var35.hasNext()) { - continue label133; - } - - structureBlockInfo2 = var35.next(); - } while (!JigsawBlock.attachmentMatches(structureBlockInfo, structureBlockInfo2)); - - BlockPos blockPos4 = structureBlockInfo2.pos; - BlockPos blockPos5 = blockPos3.subtract(blockPos4); - BlockBox blockBox3 = structurePoolElement2.getBoundingBox(this.structureManager, blockPos5, blockRotation2); - int m = blockBox3.getMinY(); - projection2 = structurePoolElement2.getProjection(); - bl3 = projection2 == Projection.RIGID; - n = blockPos4.getY(); - o = j - n + JigsawBlock.getFacing(structureBlockInfo.state).getOffsetY(); - if (bl && bl3) { - p = i + o; - } else { - if (k == -1) { - k = this.chunkGenerator.getHeightOnGround(blockPos2.getX(), blockPos2.getZ(), Type.WORLD_SURFACE_WG, world); - } - - p = k - n; - } - - int q = p - m; - blockBox4 = blockBox3.offset(0, q, 0); - blockPos6 = blockPos5.add(0, q, 0); - if (l > 0) { - r = Math.max(l + 1, blockBox4.getMaxY() - blockBox4.getMinY()); - blockBox4.encompass(new BlockPos(blockBox4.getMinX(), blockBox4.getMinY() + r, blockBox4.getMinZ())); - } - } while (VoxelShapes.matchesAnywhere((VoxelShape) mutableObject2.getValue(), VoxelShapes.cuboid(Box.from(blockBox4).contract(0.25D)), BooleanBiFunction.ONLY_SECOND)); - - mutableObject2.setValue(VoxelShapes.combine((VoxelShape) mutableObject2.getValue(), VoxelShapes.cuboid(Box.from(blockBox4)), BooleanBiFunction.ONLY_FIRST)); - r = piece.getGroundLevelDelta(); - int s; - if (bl3) { - s = r - o; - } else { - s = structurePoolElement2.getGroundLevelDelta(); - } - - PoolStructurePiece poolStructurePiece = this.pieceFactory.create(this.structureManager, structurePoolElement2, blockPos6, s, blockRotation2, blockBox4); - int t; - if (bl) { - t = i + j; - } else if (bl3) { - t = p + n; - } else { - if (k == -1) { - k = this.chunkGenerator.getHeightOnGround(blockPos2.getX(), blockPos2.getZ(), Type.WORLD_SURFACE_WG, world); - } - - t = k + o / 2; - } - - piece.addJunction(new JigsawJunction(blockPos3.getX(), t - j + r, blockPos3.getZ(), o, projection2)); - poolStructurePiece.addJunction(new JigsawJunction(blockPos2.getX(), t - n + s, blockPos2.getZ(), -o, projection)); - this.children.add(poolStructurePiece); - if (minY + 1 <= this.maxSize) { - this.structurePieces.addLast(new SpectrumStructurePoolBasedGenerator.ShapedPoolStructurePiece(poolStructurePiece, mutableObject2, minY + 1)); - } - continue label93; - } - } - } else { - SpectrumStructurePoolBasedGenerator.LOGGER.warn("Empty or non-existent fallback pool: {}", identifier2); - } - } else { - SpectrumStructurePoolBasedGenerator.LOGGER.warn("Empty or non-existent pool: {}", identifier); - } - } - - return; - } - } - } - } - } - - private static final class ShapedPoolStructurePiece { - final PoolStructurePiece piece; - final MutableObject pieceShape; - final int currentSize; - - ShapedPoolStructurePiece(PoolStructurePiece piece, MutableObject pieceShape, int currentSize) { - this.piece = piece; - this.pieceShape = pieceShape; - this.currentSize = currentSize; - } - } -} diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumUndergroundStructurePoolFeatureConfig.java b/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumUndergroundStructurePoolFeatureConfig.java deleted file mode 100644 index 9fb2798771..0000000000 --- a/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumUndergroundStructurePoolFeatureConfig.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.dafuqs.spectrum.worldgen.structure_features; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.structure.pool.StructurePool; -import net.minecraft.util.registry.RegistryEntry; -import net.minecraft.world.gen.feature.StructurePoolFeatureConfig; - -public class SpectrumUndergroundStructurePoolFeatureConfig extends StructurePoolFeatureConfig { - - public static final Codec CODEC = RecordCodecBuilder.create( - (instance) -> instance.group(StructurePool.REGISTRY_CODEC - .fieldOf("start_pool").forGetter(SpectrumUndergroundStructurePoolFeatureConfig::getStartPool), - Codec.intRange(0, 7).fieldOf("size").forGetter(SpectrumUndergroundStructurePoolFeatureConfig::getSize), - Codec.INT.fieldOf("min_y").forGetter(SpectrumUndergroundStructurePoolFeatureConfig::getMinY), - Codec.INT.fieldOf("max_y").forGetter(SpectrumUndergroundStructurePoolFeatureConfig::getMaxY) - ).apply(instance, SpectrumUndergroundStructurePoolFeatureConfig::new) - ); - public int minY; - public int maxY; - - public SpectrumUndergroundStructurePoolFeatureConfig(RegistryEntry startPool, int size, int minY, int maxY) { - super(startPool, size); - this.minY = minY; - this.maxY = maxY; - } - - public int getMinY() { - return minY; - } - - public int getMaxY() { - return maxY; - } - -} diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumUndergroundStructures.java b/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumUndergroundStructures.java index 3f99028b76..86965f8833 100644 --- a/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumUndergroundStructures.java +++ b/src/main/java/de/dafuqs/spectrum/worldgen/structure_features/SpectrumUndergroundStructures.java @@ -1,23 +1,59 @@ package de.dafuqs.spectrum.worldgen.structure_features; -import net.minecraft.structure.PoolStructurePiece; -import net.minecraft.structure.PostPlacementProcessor; -import net.minecraft.structure.StructureGeneratorFactory; -import net.minecraft.structure.StructurePiecesGenerator; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.structure.pool.StructurePool; +import net.minecraft.structure.pool.StructurePoolBasedGenerator; +import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.HeightLimitView; +import net.minecraft.util.math.ChunkPos; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.Heightmap; -import net.minecraft.world.gen.feature.StructureFeature; +import net.minecraft.world.gen.HeightContext; +import net.minecraft.world.gen.heightprovider.HeightProvider; +import net.minecraft.world.gen.structure.Structure; +import net.minecraft.world.gen.structure.StructureType; import java.util.Optional; -import java.util.Random; // thank you, @TelepathicGrunt -// source: https://github.com/TelepathicGrunt/StructureTutorialMod/blob/1.18.2-Fabric-Jigsaw/src/main/java/com/telepathicgrunt/structure_tutorial/structures/SkyStructures.java -public class SpectrumUndergroundStructures extends StructureFeature { +// source: https://github.com/TelepathicGrunt/StructureTutorialMod/blob/1.19.0-Fabric-Jigsaw/src/main/java/com/telepathicgrunt/structure_tutorial/structures/SkyStructures.java +public class SpectrumUndergroundStructures extends Structure { - public SpectrumUndergroundStructures() { - super(SpectrumUndergroundStructurePoolFeatureConfig.CODEC, SpectrumUndergroundStructures::createPiecesGenerator, PostPlacementProcessor.EMPTY); + // A custom codec that changes the size limit for our code_structure_sky_fan.json's config to not be capped at 7. + // With this, we can have a structure with a size limit up to 30 if we want to have extremely long branches of pieces in the structure. + public static final Codec CODEC = RecordCodecBuilder.mapCodec(instance -> + instance.group(SpectrumUndergroundStructures.configCodecBuilder(instance), + StructurePool.REGISTRY_CODEC.fieldOf("start_pool").forGetter(structure -> structure.startPool), + Identifier.CODEC.optionalFieldOf("start_jigsaw_name").forGetter(structure -> structure.startJigsawName), + Codec.intRange(0, 30).fieldOf("size").forGetter(structure -> structure.size), + HeightProvider.CODEC.fieldOf("start_height").forGetter(structure -> structure.startHeight), + Heightmap.Type.CODEC.optionalFieldOf("project_start_to_heightmap").forGetter(structure -> structure.projectStartToHeightmap), + Codec.intRange(1, 128).fieldOf("max_distance_from_center").forGetter(structure -> structure.maxDistanceFromCenter) + ).apply(instance, SpectrumUndergroundStructures::new)).codec(); + + private final RegistryEntry startPool; + private final Optional startJigsawName; + private final int size; + private final HeightProvider startHeight; + private final Optional projectStartToHeightmap; + private final int maxDistanceFromCenter; + + public SpectrumUndergroundStructures(Structure.Config config, + RegistryEntry startPool, + Optional startJigsawName, + int size, + HeightProvider startHeight, + Optional projectStartToHeightmap, + int maxDistanceFromCenter) { + + super(config); + this.startPool = startPool; + this.startJigsawName = startJigsawName; + this.size = size; + this.startHeight = startHeight; + this.projectStartToHeightmap = projectStartToHeightmap; + this.maxDistanceFromCenter = maxDistanceFromCenter; } /* @@ -46,47 +82,65 @@ public SpectrumUndergroundStructures() { * Use the biome tags for where to spawn the structure and users can datapack * it to spawn in specific biomes that aren't in the dimension they don't like if they wish. */ - private static boolean isFeatureChunk(StructureGeneratorFactory.Context context) { - // Checks to make sure our structure does not spawn within 10 chunks of an Ocean Monument + private static boolean extraSpawningChecks(Structure.Context context) { + // Grabs the chunk position we are at + ChunkPos chunkpos = context.chunkPos(); + + // Checks to make sure our structure does not spawn above land that's higher than y = 150 // to demonstrate how this method is good for checking extra conditions for spawning - return true; + return context.chunkGenerator().getHeightInGround( + chunkpos.getStartX(), + chunkpos.getStartZ(), + Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, + context.world(), + context.noiseConfig()) < 150; } - public static Optional> createPiecesGenerator(StructureGeneratorFactory.Context context) { + @Override + public Optional getStructurePosition(Structure.Context context) { + // Check if the spot is valid for our structure. This is just as another method for cleanness. // Returning an empty optional tells the game to skip this spot as it will not generate the structure. - if (!isFeatureChunk(context)) { + if (!SpectrumUndergroundStructures.extraSpawningChecks(context)) { return Optional.empty(); } - // Turns the chunk coordinates into actual coordinates we can use. (Gets center of that chunk) - BlockPos blockpos = context.chunkPos().getCenterAtY(0); + // Set's our spawning blockpos's y offset to be 60 blocks up. + // Since we are going to have heightmap/terrain height spawning set to true further down, this will make it so we spawn 60 blocks above terrain. + // If we wanted to spawn on ocean floor, we would set heightmap/terrain height spawning to false and the grab the y value of the terrain with OCEAN_FLOOR_WG heightmap. + int startY = this.startHeight.get(context.random(), new HeightContext(context.chunkGenerator(), context.world())); - // Find the top Y value of the land and then offset our structure to 60 blocks above that. - // WORLD_SURFACE_WG will stop at top water, so we don't accidentally put our structure into the ocean if it is a super deep ocean. - int topLandY = context.chunkGenerator().getHeightOnGround(blockpos.getX(), blockpos.getZ(), Heightmap.Type.WORLD_SURFACE_WG, context.world()); + // Turns the chunk coordinates into actual coordinates we can use. (Gets corner of that chunk) + ChunkPos chunkPos = context.chunkPos(); + BlockPos blockPos = new BlockPos(chunkPos.getStartX(), startY, chunkPos.getStartZ()); - // calculate a random height like specified in the config - Random random = new Random(context.seed()); - int height = (int) (context.config().minY + context.config().maxY * random.nextFloat()); - HeightLimitView world = context.world(); - if (height < world.getBottomY() + 16 || height > topLandY - 16) { - return Optional.empty(); - } - - blockpos = blockpos.withY(height); + Optional structurePiecesGenerator = + StructurePoolBasedGenerator.generate( + context, // Used for StructurePoolBasedGenerator to get all the proper behaviors done. + this.startPool, // The starting pool to use to create the structure layout from + this.startJigsawName, // Can be used to only spawn from one Jigsaw block. But we don't need to worry about this. + this.size, // How deep a branch of pieces can go away from center piece. (5 means branches cannot be longer than 5 pieces from center piece) + blockPos, // Where to spawn the structure. + false, // "useExpansionHack" This is for legacy villages to generate properly. You should keep this false always. + this.projectStartToHeightmap, // Adds the terrain height's y value to the passed in blockpos's y value. (This uses WORLD_SURFACE_WG heightmap which stops at top water too) + // Here, blockpos's y value is 60 which means the structure spawn 60 blocks above terrain height. + // Set this to false for structure to be place only at the passed in blockpos's Y value instead. + // Definitely keep this false when placing structures in the nether as otherwise, heightmap placing will put the structure on the Bedrock roof. + this.maxDistanceFromCenter); // Maximum limit for how far pieces can spawn from center. You cannot set this bigger than 128 or else pieces gets cutoff. - StructureGeneratorFactory.Context c = context; + /* + * Note, you are always free to make your own StructurePoolBasedGenerator class and implementation of how the structure + * should generate. It is tricky but extremely powerful if you are doing something that vanilla's jigsaw system cannot do. + * Such as for example, forcing 3 pieces to always spawn every time, limiting how often a piece spawns, or remove the intersection limitation of pieces. + */ // Return the pieces generator that is now set up so that the game runs it when it needs to create the layout of structure pieces. - return SpectrumStructurePoolBasedGenerator.generate( - c, // Used for JigsawPlacement to get all the proper behaviors done. - PoolStructurePiece::new, // Needed in order to create a list of jigsaw pieces when making the structure's layout. - blockpos, // Position of the structure. Y value is ignored if last parameter is set to true. - false, // Special boundary adjustments for villages. It's... hard to explain. Keep this false and make your pieces not be partially intersecting. - // Either not intersecting or fully contained will make children pieces spawn just fine. It's easier that way. - false // Place at heightmap (top land). Set this to false for structure to be place at the passed in blockpos's Y value instead. - // Definitely keep this false when placing structures in the nether as otherwise, heightmap placing will put the structure on the Bedrock roof. - ); + return structurePiecesGenerator; } + + @Override + public StructureType getType() { + return SpectrumStructureFeatures.UNDERGROUND_STRUCTURES; // Helps the game know how to turn this structure back to json to save to chunks + } + } \ No newline at end of file diff --git a/src/main/resources/spectrum.mixins.json b/src/main/resources/spectrum.mixins.json index a923744bb0..19efa2dc05 100644 --- a/src/main/resources/spectrum.mixins.json +++ b/src/main/resources/spectrum.mixins.json @@ -20,7 +20,7 @@ "FishingBobberEntityRendererMixin", "GeodesGenerateWithGemstoneOresMixin", "GlassBottleItemMixin", - "HorseBaseEntityMixin", + "AbstractHorseEntityMixin", "InfestedBlockMixin", "ItemEntityMixin", "ItemFrameEntityMixin", @@ -50,7 +50,6 @@ "accessors.RecipeManagerAccessor", "accessors.ShapedRecipeAccessor", "accessors.SlimeEntityAccessor", - "accessors.StructureFeatureAccessor" ], "client": [ "client.BlockOverlayRendererMixin", From cbf21415073b7ef79a1e30039f8e2bbf668d2ba1 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Sun, 14 Aug 2022 15:50:26 +0200 Subject: [PATCH 0005/1051] more porting work --- .../spectrum/blocks/chests/PrivateChestBlockEntity.java | 2 +- .../spectrum/blocks/ender/EnderDropperBlockEntity.java | 2 +- .../spectrum/blocks/ender/EnderHopperBlockEntity.java | 2 +- .../blocks/energy/CrystalApothecaryBlockEntity.java | 2 +- .../blocks/redstone/PlayerDetectorBlockEntity.java | 2 +- .../de/dafuqs/spectrum/compat/patchouli/PageHint.java | 8 ++++---- .../de/dafuqs/spectrum/items/ExperienceStorageItem.java | 6 +++--- .../spectrum/items/magic_items/EnderSpliceItem.java | 2 +- src/main/java/de/dafuqs/spectrum/recipe/RecipeUtils.java | 3 ++- 9 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/blocks/chests/PrivateChestBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/chests/PrivateChestBlockEntity.java index 3edce1b66f..1e62efff14 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/chests/PrivateChestBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/chests/PrivateChestBlockEntity.java @@ -130,7 +130,7 @@ public String getOwnerName() { @Override public void setOwner(PlayerEntity playerEntity) { this.ownerUUID = playerEntity.getUuid(); - this.ownerName = playerEntity.getName().asString(); + this.ownerName = playerEntity.getName().getString(); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderDropperBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderDropperBlockEntity.java index 70fc7a8c3d..430b510614 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderDropperBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderDropperBlockEntity.java @@ -83,7 +83,7 @@ public String getOwnerName() { @Override public void setOwner(PlayerEntity playerEntity) { this.ownerUUID = playerEntity.getUuid(); - this.ownerName = playerEntity.getName().asString(); + this.ownerName = playerEntity.getName().getString(); } public void readNbt(NbtCompound nbt) { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderHopperBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderHopperBlockEntity.java index f7fbb095ee..5e5265dcbb 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderHopperBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/ender/EnderHopperBlockEntity.java @@ -219,7 +219,7 @@ public String getOwnerName() { @Override public void setOwner(PlayerEntity playerEntity) { this.ownerUUID = playerEntity.getUuid(); - this.ownerName = playerEntity.getName().asString(); + this.ownerName = playerEntity.getName().getString(); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java index 7447f95f20..a9f1cca551 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java @@ -308,7 +308,7 @@ public String getOwnerName() { @Override public void setOwner(PlayerEntity playerEntity) { this.ownerUUID = playerEntity.getUuid(); - this.ownerName = playerEntity.getName().asString(); + this.ownerName = playerEntity.getName().getString(); } public void harvestExistingClusters() { diff --git a/src/main/java/de/dafuqs/spectrum/blocks/redstone/PlayerDetectorBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/redstone/PlayerDetectorBlockEntity.java index 450b725676..14c48fa90f 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/redstone/PlayerDetectorBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/redstone/PlayerDetectorBlockEntity.java @@ -58,7 +58,7 @@ public String getOwnerName() { @Override public void setOwner(PlayerEntity playerEntity) { this.ownerUUID = playerEntity.getUuid(); - this.ownerName = playerEntity.getName().asString(); + this.ownerName = playerEntity.getName().getString(); } } diff --git a/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageHint.java b/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageHint.java index 921425e003..7f7f03de17 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageHint.java +++ b/src/main/java/de/dafuqs/spectrum/compat/patchouli/PageHint.java @@ -83,15 +83,15 @@ private Text calculateTextToRender(Text text) { } // Show a new letter each tick - Text calculatedText = Text.literal(text.asString().substring(0, (int) revealProgress) + "$(obf)" + text.asString().substring((int) revealProgress)); + Text calculatedText = Text.literal(text.getString().substring(0, (int) revealProgress) + "$(obf)" + text.getString().substring((int) revealProgress)); long currentTime = MinecraftClient.getInstance().world.getTime(); if (currentTime != lastRevealTick) { lastRevealTick = currentTime; revealProgress++; - revealProgress = Math.min(text.asString().length(), revealProgress); - if (text.asString().length() < revealProgress) { + revealProgress = Math.min(text.getString().length(), revealProgress); + if (text.getString().length() < revealProgress) { revealProgress = 0; return text; } @@ -112,7 +112,7 @@ protected void paymentButtonClicked(ButtonWidget button) { PersistentData.save(); entry.markReadStateDirty(); - SpectrumClient.minecraftClient.getSoundManager().play(new HintRevelationSoundInstance(mc.player, rawText.asString().length())); + SpectrumClient.minecraftClient.getSoundManager().play(new HintRevelationSoundInstance(mc.player, rawText.getString().length())); SpectrumC2SPacketSender.sendGuidebookHintBoughtPaket(ingredient); revealProgress = 1; diff --git a/src/main/java/de/dafuqs/spectrum/items/ExperienceStorageItem.java b/src/main/java/de/dafuqs/spectrum/items/ExperienceStorageItem.java index e02712ed85..37b72409cf 100644 --- a/src/main/java/de/dafuqs/spectrum/items/ExperienceStorageItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/ExperienceStorageItem.java @@ -59,7 +59,7 @@ static int addStoredExperience(ItemStack itemStack, float amount, Random random) } } } else { - SpectrumCommon.logError("Tried to add stored Experience to a non-ExperienceStorageItem item: " + itemStack.getItem().getName().asString()); + SpectrumCommon.logError("Tried to add stored Experience to a non-ExperienceStorageItem item: " + itemStack.getItem().getName().getString()); return 0; } } @@ -96,7 +96,7 @@ static int addStoredExperience(ItemStack itemStack, int amount) { } } } else { - SpectrumCommon.logError("Tried to add stored Experience to a non-ExperienceStorageItem item: " + itemStack.getItem().getName().asString()); + SpectrumCommon.logError("Tried to add stored Experience to a non-ExperienceStorageItem item: " + itemStack.getItem().getName().getString()); return 0; } } @@ -125,7 +125,7 @@ static boolean removeStoredExperience(ItemStack itemStack, int amount) { } } } else { - SpectrumCommon.logError("Tried to remove stored Experience from a non-ExperienceStorageItem: " + itemStack.getItem().getName().asString()); + SpectrumCommon.logError("Tried to remove stored Experience from a non-ExperienceStorageItem: " + itemStack.getItem().getName().getString()); return false; } } diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java index 90d9feb66f..bd783c2197 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java @@ -92,7 +92,7 @@ public static void setTeleportTargetPlayer(@NotNull ItemStack itemStack, ServerP } // Add player - nbtCompound.putString("TargetPlayerName", player.getName().asString()); + nbtCompound.putString("TargetPlayerName", player.getName().getString()); nbtCompound.putUuid("TargetPlayerUUID", player.getUuid()); itemStack.setNbt(nbtCompound); } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/RecipeUtils.java b/src/main/java/de/dafuqs/spectrum/recipe/RecipeUtils.java index efb6a99245..0a90eb3fd1 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/RecipeUtils.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/RecipeUtils.java @@ -16,6 +16,7 @@ import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.ShapedRecipe; import net.minecraft.util.JsonHelper; +import net.minecraft.util.registry.Registry; import java.util.ArrayList; import java.util.List; @@ -72,7 +73,7 @@ public static IngredientStack ingredientStackFromJson(JsonObject json) { } public static BlockState blockStateFromString(String string) throws CommandSyntaxException { - return new BlockArgumentParser(new StringReader(string), true).parse(false).getBlockState(); + return BlockArgumentParser.block(Registry.BLOCK, new StringReader(string), true).blockState(); } public static String blockStateToString(BlockState state) { From f98f12dabad8edcab5792d905ce000355adfe15b Mon Sep 17 00:00:00 2001 From: sudo-CuriousLad Date: Sun, 14 Aug 2022 20:28:10 +0530 Subject: [PATCH 0006/1051] Big commit time, few changes, might have done some major fuck ups so please watch out+ --- .../blocks/conditional/CloakedOreBlock.java | 6 ++---- .../CrystallarieumBlockEntity.java | 3 ++- .../blocks/gemstone/SpectrumBuddingBlock.java | 3 ++- .../blocks/mob_blocks/FeedingMobBlock.java | 2 +- .../redstone/RedstoneWirelessBlockEntity.java | 2 +- .../LiminalDimensionReverb.java | 2 +- .../dafuqs/spectrum/deeper_down/DDBiome.java | 1 - .../entity/entity/ShootingStarEntity.java | 6 +++--- .../listeners/BlockPosEventListener.java | 10 +++++++--- .../spectrum/events/listeners/EventQueue.java | 19 +++---------------- .../ExperienceOrbEntityListener.java | 5 +++-- .../ItemAndExperienceEventQueue.java | 5 +++-- .../listeners/ItemEntityEventQueue.java | 10 +++++++++- .../events/listeners/ItemEntityListener.java | 5 +++-- .../WirelessRedstoneSignalListener.java | 5 +++-- .../dafuqs/spectrum/helpers/RenderHelper.java | 6 ++---- .../spectrum/items/SpectrumMusicDiscItem.java | 7 ++++--- .../items/magic_items/NaturesStaffItem.java | 1 - .../mixin/BuddingAmethystBlockMixin.java | 3 ++- .../client/BlockOverlayRendererMixin.java | 3 +-- .../mixin/client/ClientWorldReverbMixin.java | 2 +- .../client/BlockPosEventTransferParticle.java | 4 ++-- .../client/ExperienceTransferParticle.java | 4 ++-- .../particle/client/ItemTransferParticle.java | 4 ++-- .../particle/client/TransphereParticle.java | 4 ++-- .../WirelessRedstoneTransmissionParticle.java | 4 ++-- .../spectrum/registries/SpectrumBlocks.java | 4 ++-- .../spectrum/registries/SpectrumItems.java | 4 ++-- .../sound/CraftingBlockSoundInstance.java | 2 +- .../EnderSpliceChargingSoundInstance.java | 2 +- .../sound/HintRevelationSoundInstance.java | 2 +- .../sound/InkProjectileSoundInstance.java | 2 +- .../sound/NaturesStaffUseSoundInstance.java | 2 +- .../sound/TakeOffBeltSoundInstance.java | 2 +- .../worldgen/SpectrumConfiguredFeatures.java | 18 ++++-------------- 35 files changed, 77 insertions(+), 87 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/blocks/conditional/CloakedOreBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/conditional/CloakedOreBlock.java index cfc63c33b1..5b11f32a52 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/conditional/CloakedOreBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/conditional/CloakedOreBlock.java @@ -56,12 +56,10 @@ public List getDroppedStacks(BlockState state, LootContext.Builder bu return super.getDroppedStacks(state, builder); } - + @Override public void onStacksDropped(BlockState state, ServerWorld world, BlockPos pos, ItemStack stack) { - if (dropXP) { - super.onStacksDropped(state, world, pos, stack); - } + super.onStacksDropped(state, world, pos, stack, dropXP); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java index 6b4dce1547..6696a19e2b 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java @@ -35,6 +35,7 @@ import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.event.GameEvent; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -139,7 +140,7 @@ public static void serverTick(@NotNull World world, BlockPos blockPos, BlockStat BlockState targetState = it.next(); world.setBlockState(topPos, targetState); if (targetState.isIn(SpectrumBlockTags.CRYSTAL_APOTHECARY_HARVESTABLE)) { - world.emitGameEvent(SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, topPos); + world.emitGameEvent(SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, topPos, GameEvent.Emitter.of(blockState)); } // if the stone on top can not grow any further: pause diff --git a/src/main/java/de/dafuqs/spectrum/blocks/gemstone/SpectrumBuddingBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/gemstone/SpectrumBuddingBlock.java index 4878212860..ffa84f75c5 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/gemstone/SpectrumBuddingBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/gemstone/SpectrumBuddingBlock.java @@ -13,6 +13,7 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.math.random.Random; +import net.minecraft.world.event.GameEvent; public class SpectrumBuddingBlock extends BuddingAmethystBlock { @@ -57,7 +58,7 @@ public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random BlockState blockState2 = (block.getDefaultState().with(AmethystClusterBlock.FACING, direction)).with(AmethystClusterBlock.WATERLOGGED, blockState.getFluidState().getFluid() == Fluids.WATER); world.setBlockState(blockPos, blockState2); if (blockState2.isIn(SpectrumBlockTags.CRYSTAL_APOTHECARY_HARVESTABLE)) { - world.emitGameEvent(SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, blockPos); + world.emitGameEvent(SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, blockPos, GameEvent.Emitter.of(state)); } } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FeedingMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FeedingMobBlock.java index 86c598b258..f51270d110 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FeedingMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FeedingMobBlock.java @@ -66,7 +66,7 @@ public boolean trigger(ServerWorld world, BlockPos blockPos, BlockState state, @ stack.decrement(1); int i = animalEntity.getBreedingAge(); animalEntity.growUp((int) ((float) (-i / 20) * 0.1F), true); - animalEntity.emitGameEvent(GameEvent.MOB_INTERACT, animalEntity.getCameraBlockPos()); + animalEntity.emitGameEvent(GameEvent.ENTITY_INTERACT, animalEntity); } } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlockEntity.java index 21503a08a4..a32e2e2c04 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlockEntity.java @@ -42,7 +42,7 @@ public static void serverTick(@NotNull World world, BlockPos pos, BlockState sta if (isSender(world, pos)) { if (blockEntity.currentSignal != blockEntity.cachedSignal) { blockEntity.currentSignal = blockEntity.cachedSignal; - blockEntity.world.emitGameEvent(SpectrumGameEvents.WIRELESS_REDSTONE_SIGNALS.get(state.get(RedstoneWirelessBlock.CHANNEL)).get(blockEntity.currentSignal), blockEntity.getPos()); + blockEntity.world.emitGameEvent(SpectrumGameEvents.WIRELESS_REDSTONE_SIGNALS.get(state.get(RedstoneWirelessBlock.CHANNEL)).get(blockEntity.currentSignal), blockEntity.getPos(), GameEvent.Emitter.of(state)); } } else { blockEntity.listener.tick(world); diff --git a/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java b/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java index cd4f4b6a4d..d56c380dbb 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java +++ b/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java @@ -14,7 +14,7 @@ public class LiminalDimensionReverb { public static void setReverbForClientDimension(ClientWorld clientWorld) { LiminalEffects liminalEffects = new LiminalEffects(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.of(new ReverbSettings().setEnabled(true).setDecayTime(8).setDensity(0.5F))); - ((DimensionEffectsAccess) clientWorld.getDimension()).setLiminalEffects(liminalEffects); + ((DimensionEffectsAccess) clientWorld.getDimension().effects()).setLiminalEffects(liminalEffects); } } diff --git a/src/main/java/de/dafuqs/spectrum/deeper_down/DDBiome.java b/src/main/java/de/dafuqs/spectrum/deeper_down/DDBiome.java index 8164c47006..7208b4cf79 100644 --- a/src/main/java/de/dafuqs/spectrum/deeper_down/DDBiome.java +++ b/src/main/java/de/dafuqs/spectrum/deeper_down/DDBiome.java @@ -14,7 +14,6 @@ public class DDBiome { .generationSettings(new GenerationSettings.Builder().build()) .precipitation(Biome.Precipitation.NONE) .temperature(0.2F).downfall(0.2F) - .category(Biome.Category.NONE) .temperatureModifier(Biome.TemperatureModifier.NONE) .effects(new BiomeEffects.Builder() .waterColor(0xd3cbb1) diff --git a/src/main/java/de/dafuqs/spectrum/entity/entity/ShootingStarEntity.java b/src/main/java/de/dafuqs/spectrum/entity/entity/ShootingStarEntity.java index ef327ff1f2..a0efb0e74f 100644 --- a/src/main/java/de/dafuqs/spectrum/entity/entity/ShootingStarEntity.java +++ b/src/main/java/de/dafuqs/spectrum/entity/entity/ShootingStarEntity.java @@ -184,7 +184,7 @@ protected void initDataTracker() { public void tick() { super.tick(); - this.tickNetherPortal(); + this.tickPortal(); boolean wasOnGround = this.onGround; double previousXVelocity = this.getVelocity().getX(); @@ -315,7 +315,7 @@ public void tick() { this.updateWaterState(); } } - + @Override public void onPlayerCollision(PlayerEntity player) { // if the shooting star is still falling from the sky, and it hits a player: @@ -431,7 +431,7 @@ public boolean handleAttack(Entity attacker) { return true; } else { - this.emitGameEvent(GameEvent.ENTITY_DAMAGED, attacker); + this.emitGameEvent(GameEvent.ENTITY_DAMAGE, attacker); } } diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventListener.java b/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventListener.java index 6e33d27980..1daea4e5d3 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventListener.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventListener.java @@ -6,6 +6,7 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; import net.minecraft.world.event.PositionSource; @@ -54,11 +55,11 @@ public boolean listen(World world, GameEvent event, @Nullable Entity entity, Blo if (!this.shouldActivate(event, entity)) { return false; } else { - Optional optional = this.positionSource.getPos(world); + Optional optional = this.positionSource.getPos(world); if (optional.isEmpty()) { return false; } else { - BlockPos blockPos = optional.get(); + Vec3d blockPos = optional.get(); this.eventSourceBlockPos = new BlockPos(pos.getX(), pos.getY(), pos.getZ()); // copy if (!this.callback.accepts(world, this, pos, event, entity)) { return false; @@ -69,7 +70,10 @@ public boolean listen(World world, GameEvent event, @Nullable Entity entity, Blo } } } - + + private void listen(World world, GameEvent event, BlockPos pos, Vec3d blockPos) { + } + boolean shouldActivate(GameEvent event, @Nullable Entity entity) { return true; } diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/EventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/EventQueue.java index 16141b8351..5a683e4436 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/EventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/EventQueue.java @@ -2,6 +2,7 @@ import net.minecraft.entity.Entity; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; import net.minecraft.world.event.PositionSource; @@ -48,28 +49,14 @@ public PositionSource getPositionSource() { public int getRange() { return this.range; } - - @Override - public boolean listen(World world, GameEvent event, @Nullable Entity entity, BlockPos pos) { - Optional positionSourcePosOptional = this.positionSource.getPos(world); - if (positionSourcePosOptional.isEmpty()) { - return false; - } else { - if (!this.callback.canAcceptEvent(world, this, pos, event, entity, positionSourcePosOptional.get())) { - return false; - } else { - this.acceptEvent(world, pos, event, entity, positionSourcePosOptional.get()); - return true; - } - } - } + protected abstract void acceptEvent(World world, BlockPos pos, GameEvent event, @Nullable Entity entity, BlockPos sourcePos); protected void schedule(D object, int delay) { this.eventQueue.put(object, delay); } - + public interface Callback { /** * Returns whether the callback wants to accept this event. diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEntityListener.java b/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEntityListener.java index 733dba6940..ce534b080c 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEntityListener.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEntityListener.java @@ -8,6 +8,7 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; import net.minecraft.world.event.PositionSource; @@ -54,12 +55,12 @@ public boolean listen(World world, GameEvent event, @Nullable Entity entity, Blo if (!this.shouldActivate(event, entity)) { return false; } else { - Optional optional = this.positionSource.getPos(world); + Optional optional = this.positionSource.getPos(world); if (!optional.isPresent()) { return false; } else { experienceOrbEntity = (ExperienceOrbEntity) entity; - BlockPos blockPos = optional.get(); + Vec3d blockPos = optional.get(); if (!this.callback.accepts(world, this, pos, event, entity)) { return false; } else { diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemAndExperienceEventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemAndExperienceEventQueue.java index 59fec9dacf..79e57e3308 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemAndExperienceEventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemAndExperienceEventQueue.java @@ -4,6 +4,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.ExperienceOrbEntity; import net.minecraft.entity.ItemEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; @@ -39,8 +40,8 @@ public int getRange() { } @Override - public boolean listen(World world, GameEvent event, @Nullable Entity entity, BlockPos pos) { - if (event != SpectrumGameEvents.ENTITY_SPAWNED) { + public boolean listen(ServerWorld world, GameEvent.Message event, @Nullable Entity entity, BlockPos pos) { + if (event.getEvent() != SpectrumGameEvents.ENTITY_SPAWNED) { return false; } if (entity instanceof ItemEntity && itemQueue.listen(world, event, entity, pos)) { diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java index d7554c25e7..99a84ae712 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java @@ -11,6 +11,8 @@ import net.minecraft.world.event.GameEvent; import net.minecraft.world.event.PositionSource; +import javax.annotation.Nullable; + public class ItemEntityEventQueue extends EventQueue { public ItemEntityEventQueue(PositionSource positionSource, int range, Callback listener) { @@ -26,7 +28,13 @@ public void acceptEvent(World world, BlockPos pos, GameEvent event, Entity entit SpectrumS2CPacketSender.sendItemTransferPacket((ServerWorld) world, new ItemTransfer(pos, this.positionSource, delay)); } } - + + @Override + public boolean listen(ServerWorld world, GameEvent.Message event, @Nullable Entity entity, BlockPos pos) { + //TODO Need to implement this + return false; + } + public static class EventEntry { public GameEvent gameEvent; public ItemEntity itemEntity; diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityListener.java b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityListener.java index 476688593f..c0e085f9c8 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityListener.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityListener.java @@ -8,6 +8,7 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; import net.minecraft.world.event.PositionSource; @@ -54,12 +55,12 @@ public boolean listen(World world, GameEvent event, @Nullable Entity entity, Blo if (!this.shouldActivate(event, entity)) { return false; } else { - Optional optional = this.positionSource.getPos(world); + Optional optional = this.positionSource.getPos(world); if (!optional.isPresent()) { return false; } else { itemEntity = (ItemEntity) entity; - BlockPos blockPos = optional.get(); + Vec3d blockPos = optional.get(); if (!this.callback.accepts(world, this, pos, event, entity)) { return false; } else { diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalListener.java b/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalListener.java index 18710594c1..5c90a0660b 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalListener.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalListener.java @@ -8,6 +8,7 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; import net.minecraft.world.event.PositionSource; @@ -54,11 +55,11 @@ public boolean listen(World world, GameEvent event, @Nullable Entity entity, Blo if (!this.shouldActivate(event, entity)) { return false; } else { - Optional optional = this.positionSource.getPos(world); + Optional optional = this.positionSource.getPos(world); if (optional.isEmpty()) { return false; } else { - BlockPos blockPos = optional.get(); + Vec3d blockPos = optional.get(); if (!this.callback.accepts(world, this, pos, event, entity)) { return false; } else { diff --git a/src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java b/src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java index 77e14f3beb..c1af090936 100644 --- a/src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java +++ b/src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java @@ -29,8 +29,7 @@ public static void fillTriangle(MatrixStack matrices, int p1x, int p1y, int p2x, builder.vertex(matrix, p1x, p1y, 0F).color(red, green, blue, alpha).next(); builder.vertex(matrix, p2x, p2y, 0F).color(red, green, blue, alpha).next(); builder.vertex(matrix, p3x, p3y, 0F).color(red, green, blue, alpha).next(); - builder.end(); - BufferRenderer.draw(builder); + BufferRenderer.drawWithShader(builder.end()); RenderSystem.enableTexture(); RenderSystem.disableBlend(); } @@ -54,8 +53,7 @@ public static void fillQuad(MatrixStack matrices, int x, int y, int height, int builder.vertex(matrix, x, y+height, 0F).color(red, green, blue, alpha).next(); builder.vertex(matrix, x+width, y+height, 0F).color(red, green, blue, alpha).next(); builder.vertex(matrix, x+width, y, 0F).color(red, green, blue, alpha).next(); - builder.end(); - BufferRenderer.draw(builder); + BufferRenderer.drawWithShader(builder.end()); RenderSystem.enableTexture(); RenderSystem.disableBlend(); } diff --git a/src/main/java/de/dafuqs/spectrum/items/SpectrumMusicDiscItem.java b/src/main/java/de/dafuqs/spectrum/items/SpectrumMusicDiscItem.java index 6e5ff5b4ad..dea33e1e9f 100644 --- a/src/main/java/de/dafuqs/spectrum/items/SpectrumMusicDiscItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/SpectrumMusicDiscItem.java @@ -1,12 +1,13 @@ package de.dafuqs.spectrum.items; import net.minecraft.item.MusicDiscItem; +import net.minecraft.sound.MusicSound; import net.minecraft.sound.SoundEvent; public class SpectrumMusicDiscItem extends MusicDiscItem { - - public SpectrumMusicDiscItem(int comparatorOutput, SoundEvent sound, Settings settings) { - super(comparatorOutput, sound, settings); + + public SpectrumMusicDiscItem(int comparatorOutput, SoundEvent sound, Settings settings, Integer length) { + super(comparatorOutput, sound, settings, length); } } \ No newline at end of file diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java index a0d2905aba..cf0efa355c 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java @@ -219,7 +219,6 @@ public void usageTickClient() { if (MinecraftClient.getInstance().crosshairTarget.getType() == HitResult.Type.BLOCK) { MinecraftClient.getInstance().interactionManager.interactBlock( MinecraftClient.getInstance().player, - MinecraftClient.getInstance().world, MinecraftClient.getInstance().player.getActiveHand(), (BlockHitResult) MinecraftClient.getInstance().crosshairTarget ); diff --git a/src/main/java/de/dafuqs/spectrum/mixin/BuddingAmethystBlockMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/BuddingAmethystBlockMixin.java index 131f004931..7bf3e8eebb 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/BuddingAmethystBlockMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/BuddingAmethystBlockMixin.java @@ -8,6 +8,7 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; +import net.minecraft.world.event.GameEvent; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -24,7 +25,7 @@ public class BuddingAmethystBlockMixin { locals = LocalCapture.CAPTURE_FAILHARD) public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random, CallbackInfo ci, Direction direction, BlockPos offsetPos, BlockState originalOffsetState, Block blockToGrow, BlockState blockStateToGrow) { if (blockStateToGrow.isIn(SpectrumBlockTags.CRYSTAL_APOTHECARY_HARVESTABLE)) { - world.emitGameEvent(SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, offsetPos); + world.emitGameEvent(SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, offsetPos, GameEvent.Emitter.of(blockStateToGrow)); } } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/client/BlockOverlayRendererMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/client/BlockOverlayRendererMixin.java index 215484b07c..941d7db082 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/client/BlockOverlayRendererMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/client/BlockOverlayRendererMixin.java @@ -55,8 +55,7 @@ private static void renderOverlay(MinecraftClient client, MatrixStack matrixStac bufferBuilder.vertex(matrix4f, 1.0F, -1.0F, -0.5F).texture(0.0F + m, 4.0F + n).next(); bufferBuilder.vertex(matrix4f, 1.0F, 1.0F, -0.5F).texture(0.0F + m, 0.0F + n).next(); bufferBuilder.vertex(matrix4f, -1.0F, 1.0F, -0.5F).texture(4.0F + m, 0.0F + n).next(); - bufferBuilder.end(); - BufferRenderer.draw(bufferBuilder); + BufferRenderer.drawWithShader(bufferBuilder.end()); RenderSystem.disableBlend(); } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/client/ClientWorldReverbMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/client/ClientWorldReverbMixin.java index a076cd7c5a..25b7ddb975 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/client/ClientWorldReverbMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/client/ClientWorldReverbMixin.java @@ -21,7 +21,7 @@ public class ClientWorldReverbMixin { @Inject(method = "", at = @At("TAIL")) private void spectrum$init(ClientPlayNetworkHandler netHandler, ClientWorld.Properties properties, RegistryKey registryRef, RegistryEntry registryEntry, int loadDistance, int simulationDistance, Supplier profiler, WorldRenderer worldRenderer, boolean debugWorld, long seed, CallbackInfo ci) { ClientWorld clientWorld = (ClientWorld) (Object) this; - if(clientWorld.getDimension().getEffects().equals(SpectrumCommon.locate("deeper_down")) && FabricLoader.getInstance().isModLoaded("limlib")) { + if(clientWorld.getDimension().effects().equals(SpectrumCommon.locate("deeper_down")) && FabricLoader.getInstance().isModLoaded("limlib")) { LiminalDimensionReverb.setReverbForClientDimension(clientWorld); } } diff --git a/src/main/java/de/dafuqs/spectrum/particle/client/BlockPosEventTransferParticle.java b/src/main/java/de/dafuqs/spectrum/particle/client/BlockPosEventTransferParticle.java index 7fe8fc8e20..d0ff43a17b 100644 --- a/src/main/java/de/dafuqs/spectrum/particle/client/BlockPosEventTransferParticle.java +++ b/src/main/java/de/dafuqs/spectrum/particle/client/BlockPosEventTransferParticle.java @@ -85,13 +85,13 @@ public ParticleTextureSheet getType() { public void tick() { super.tick(); - Optional optional = this.blockPosEventTransfer.getDestination().getPos(this.world); + Optional optional = this.blockPosEventTransfer.getDestination().getPos(this.world); if (!optional.isPresent()) { this.markDead(); } else { double d = (double) this.age / (double) this.maxAge; BlockPos blockPos = this.blockPosEventTransfer.getOrigin(); - BlockPos blockPos2 = optional.get(); + Vec3d blockPos2 = optional.get(); this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, (double) blockPos2.getX() + 0.5D); this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, (double) blockPos2.getY() + 0.5D); this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, (double) blockPos2.getZ() + 0.5D); diff --git a/src/main/java/de/dafuqs/spectrum/particle/client/ExperienceTransferParticle.java b/src/main/java/de/dafuqs/spectrum/particle/client/ExperienceTransferParticle.java index 0161bc7794..f48b15203f 100644 --- a/src/main/java/de/dafuqs/spectrum/particle/client/ExperienceTransferParticle.java +++ b/src/main/java/de/dafuqs/spectrum/particle/client/ExperienceTransferParticle.java @@ -85,13 +85,13 @@ public ParticleTextureSheet getType() { public void tick() { super.tick(); - Optional optional = this.experienceTransfer.getDestination().getPos(this.world); + Optional optional = this.experienceTransfer.getDestination().getPos(this.world); if (!optional.isPresent()) { this.markDead(); } else { double d = (double) this.age / (double) this.maxAge; BlockPos blockPos = this.experienceTransfer.getOrigin(); - BlockPos blockPos2 = optional.get(); + Vec3d blockPos2 = optional.get(); this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, (double) blockPos2.getX() + 0.5D); this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, (double) blockPos2.getY() + 0.5D); this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, (double) blockPos2.getZ() + 0.5D); diff --git a/src/main/java/de/dafuqs/spectrum/particle/client/ItemTransferParticle.java b/src/main/java/de/dafuqs/spectrum/particle/client/ItemTransferParticle.java index 6ca250ac47..f0af30a3f3 100644 --- a/src/main/java/de/dafuqs/spectrum/particle/client/ItemTransferParticle.java +++ b/src/main/java/de/dafuqs/spectrum/particle/client/ItemTransferParticle.java @@ -85,13 +85,13 @@ public ParticleTextureSheet getType() { public void tick() { super.tick(); - Optional optional = this.itemTransfer.getDestination().getPos(this.world); + Optional optional = this.itemTransfer.getDestination().getPos(this.world); if (!optional.isPresent()) { this.markDead(); } else { double d = (double) this.age / (double) this.maxAge; BlockPos blockPos = this.itemTransfer.getOrigin(); - BlockPos blockPos2 = optional.get(); + Vec3d blockPos2 = optional.get(); this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, (double) blockPos2.getX() + 0.5D); this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, (double) blockPos2.getY() + 0.5D); this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, (double) blockPos2.getZ() + 0.5D); diff --git a/src/main/java/de/dafuqs/spectrum/particle/client/TransphereParticle.java b/src/main/java/de/dafuqs/spectrum/particle/client/TransphereParticle.java index 49a6d718e9..206856b881 100644 --- a/src/main/java/de/dafuqs/spectrum/particle/client/TransphereParticle.java +++ b/src/main/java/de/dafuqs/spectrum/particle/client/TransphereParticle.java @@ -97,13 +97,13 @@ public ParticleTextureSheet getType() { public void tick() { super.tick(); - Optional optional = this.transphere.getDestination().getPos(this.world); + Optional optional = this.transphere.getDestination().getPos(this.world); if (optional.isEmpty()) { this.markDead(); } else { double d = (double) this.age / (double) this.maxAge; BlockPos blockPos = this.transphere.getOrigin(); - BlockPos blockPos2 = optional.get(); + Vec3d blockPos2 = optional.get(); this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, (double) blockPos2.getX() + 0.5D); this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, (double) blockPos2.getY() + 0.5D); this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, (double) blockPos2.getZ() + 0.5D); diff --git a/src/main/java/de/dafuqs/spectrum/particle/client/WirelessRedstoneTransmissionParticle.java b/src/main/java/de/dafuqs/spectrum/particle/client/WirelessRedstoneTransmissionParticle.java index f9e93903a6..4850295436 100644 --- a/src/main/java/de/dafuqs/spectrum/particle/client/WirelessRedstoneTransmissionParticle.java +++ b/src/main/java/de/dafuqs/spectrum/particle/client/WirelessRedstoneTransmissionParticle.java @@ -85,13 +85,13 @@ public ParticleTextureSheet getType() { public void tick() { super.tick(); - Optional optional = this.wirelessRedstoneTransmission.getDestination().getPos(this.world); + Optional optional = this.wirelessRedstoneTransmission.getDestination().getPos(this.world); if (!optional.isPresent()) { this.markDead(); } else { double d = (double) this.age / (double) this.maxAge; BlockPos blockPos = this.wirelessRedstoneTransmission.getOrigin(); - BlockPos blockPos2 = optional.get(); + Vec3d blockPos2 = optional.get(); this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, (double) blockPos2.getX() + 0.5D); this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, (double) blockPos2.getY() + 0.5D); this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, (double) blockPos2.getZ() + 0.5D); diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java index 61e3c9cf83..bf3caf197d 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java @@ -749,14 +749,14 @@ public class SpectrumBlocks { public static final Block GLOBETTE_END_CLUSTER = new CrystallarieumGrowableBlock(FabricBlockSettings.copyOf(SMALL_GLOBETTE_END_BUD), CrystallarieumGrowableBlock.GrowthStage.CLUSTER); // STRUCTURE BLOCKS - private static final FabricBlockSettings preservationBlockSettings = FabricBlockSettings.of(Material.STONE).strength(-1.0F, 3600000.0F).dropsNothing().allowsSpawning(SpectrumBlocks::never); + private static final FabricBlockSettings preservationBlockSettings = (FabricBlockSettings) FabricBlockSettings.of(Material.STONE).strength(-1.0F, 3600000.0F).dropsNothing().allowsSpawning(SpectrumBlocks::never); public static final Block PRESERVATION_STONE = new Block(preservationBlockSettings); public static final Block DIKE_CHISELED_PRESERVATION_STONE = new Block(FabricBlockSettings.copyOf(PRESERVATION_STONE).luminance(6)); public static final Block DIKE_GATE_FOUNTAIN = new SpectrumFacingBlock(preservationBlockSettings); public static final Block PRESERVATION_BRICKS = new Block(preservationBlockSettings); public static final Block SHIMMERING_PRESERVATION_BRICKS = new Block(FabricBlockSettings.copyOf(preservationBlockSettings).luminance(5)); public static final Block COURIER_STATUE = new StatueBlock(preservationBlockSettings); - private static final FabricBlockSettings preservationGlassBlockSettings = FabricBlockSettings.of(Material.GLASS).strength(-1.0F, 3600000.0F).dropsNothing().sounds(BlockSoundGroup.GLASS).nonOpaque().allowsSpawning(SpectrumBlocks::never).solidBlock(SpectrumBlocks::never).suffocates(SpectrumBlocks::never).blockVision(SpectrumBlocks::never); + private static final FabricBlockSettings preservationGlassBlockSettings = (FabricBlockSettings) FabricBlockSettings.of(Material.GLASS).strength(-1.0F, 3600000.0F).dropsNothing().sounds(BlockSoundGroup.GLASS).nonOpaque().allowsSpawning(SpectrumBlocks::never).solidBlock(SpectrumBlocks::never).suffocates(SpectrumBlocks::never).blockVision(SpectrumBlocks::never); public static final Block PRESERVATION_GLASS = new GlassBlock(preservationGlassBlockSettings); public static final Block TINTED_PRESERVATION_GLASS = new GlassBlock(FabricBlockSettings.copyOf(PRESERVATION_GLASS).luminance(12).strength(Float.MAX_VALUE, 3600000.0F)); diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java index 7dc6b94b68..9ac3f812d4 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java @@ -302,8 +302,8 @@ public Map getDefaultEnchantments() { public static final Item LUCID_WHITE_CATKIN = new CatkinItem(BuiltinGemstoneColor.WHITE, true, resourcesUncommonItemSettings); // Misc - public static final Item MUSIC_DISC_SPECTRUM_THEME = new SpectrumMusicDiscItem(1, SpectrumSoundEvents.SPECTRUM_THEME, toolRareItemSettingsSingle); - public static final Item MUSIC_DISC_DIMENSION_THEME = new SpectrumMusicDiscItem(2, SpectrumSoundEvents.BOSS_THEME, toolRareItemSettingsSingle); + public static final Item MUSIC_DISC_SPECTRUM_THEME = new SpectrumMusicDiscItem(1, SpectrumSoundEvents.SPECTRUM_THEME, toolRareItemSettingsSingle, 100); + public static final Item MUSIC_DISC_DIMENSION_THEME = new SpectrumMusicDiscItem(2, SpectrumSoundEvents.BOSS_THEME, toolRareItemSettingsSingle, 100); public static final Item SPAWNER = new SpectrumMobSpawnerItem(generalEpicItemSettingsSingle); public static final Item GLISTERING_MELON_SEEDS = new AliasedBlockItem(SpectrumBlocks.GLISTERING_MELON_STEM, toolItemSettings); public static final Item INVISIBLE_ITEM_FRAME = new InvisibleItemFrameItem(SpectrumEntityTypes.INVISIBLE_ITEM_FRAME, toolItemSettings); diff --git a/src/main/java/de/dafuqs/spectrum/sound/CraftingBlockSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/CraftingBlockSoundInstance.java index 79079b1c34..cd85678b34 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/CraftingBlockSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/CraftingBlockSoundInstance.java @@ -35,7 +35,7 @@ public class CraftingBlockSoundInstance extends AbstractSoundInstance implements private boolean done; protected CraftingBlockSoundInstance(SoundEvent soundEvent, RegistryKey worldKey, BlockPos sourceBlockPos, Block sourceBlock, int maxDurationTicks) { - super(soundEvent, SoundCategory.BLOCKS); + super(soundEvent, SoundCategory.BLOCKS, new Random()); this.worldKey = worldKey; this.sourceBlockPos = sourceBlockPos; diff --git a/src/main/java/de/dafuqs/spectrum/sound/EnderSpliceChargingSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/EnderSpliceChargingSoundInstance.java index 3ea24b037e..f15d9679a5 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/EnderSpliceChargingSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/EnderSpliceChargingSoundInstance.java @@ -21,7 +21,7 @@ public class EnderSpliceChargingSoundInstance extends AbstractSoundInstance impl private boolean done; public EnderSpliceChargingSoundInstance(PlayerEntity player) { - super(SpectrumSoundEvents.ENDER_SPLICE_CHARGES, SoundCategory.NEUTRAL); + super(SpectrumSoundEvents.ENDER_SPLICE_CHARGES, SoundCategory.NEUTRAL, new Random()); this.repeat = true; this.repeatDelay = 0; this.volume = 0.6F; diff --git a/src/main/java/de/dafuqs/spectrum/sound/HintRevelationSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/HintRevelationSoundInstance.java index c36ef72f8a..0d42f72816 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/HintRevelationSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/HintRevelationSoundInstance.java @@ -18,7 +18,7 @@ public class HintRevelationSoundInstance extends AbstractSoundInstance implement private int playtime; public HintRevelationSoundInstance(PlayerEntity player, int duration) { - super(SpectrumSoundEvents.TEXT_REVEALED, SoundCategory.PLAYERS); + super(SpectrumSoundEvents.TEXT_REVEALED, SoundCategory.PLAYERS, new Random()); this.repeat = true; this.repeatDelay = 0; this.volume = 1.0F; diff --git a/src/main/java/de/dafuqs/spectrum/sound/InkProjectileSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/InkProjectileSoundInstance.java index 3f717bec33..36cd12fecf 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/InkProjectileSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/InkProjectileSoundInstance.java @@ -27,7 +27,7 @@ public class InkProjectileSoundInstance extends AbstractSoundInstance implements private boolean done; protected InkProjectileSoundInstance(SoundEvent soundEvent, RegistryKey worldKey, InkProjectileEntity inkProjectile) { - super(soundEvent, SoundCategory.NEUTRAL); + super(soundEvent, SoundCategory.NEUTRAL, new Random()); this.worldKey = worldKey; this.inkProjectile = inkProjectile; diff --git a/src/main/java/de/dafuqs/spectrum/sound/NaturesStaffUseSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/NaturesStaffUseSoundInstance.java index 33fee21373..b5279f417f 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/NaturesStaffUseSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/NaturesStaffUseSoundInstance.java @@ -17,7 +17,7 @@ public class NaturesStaffUseSoundInstance extends AbstractSoundInstance implemen private boolean done; public NaturesStaffUseSoundInstance(PlayerEntity player) { - super(SpectrumSoundEvents.NATURES_STAFF_USE, SoundCategory.PLAYERS); + super(SpectrumSoundEvents.NATURES_STAFF_USE, SoundCategory.PLAYERS, new Random()); this.repeat = true; this.repeatDelay = 0; this.volume = 0.3F; diff --git a/src/main/java/de/dafuqs/spectrum/sound/TakeOffBeltSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/TakeOffBeltSoundInstance.java index 8062b438e6..120d003ed2 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/TakeOffBeltSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/TakeOffBeltSoundInstance.java @@ -24,7 +24,7 @@ public class TakeOffBeltSoundInstance extends AbstractSoundInstance implements T private boolean done; public TakeOffBeltSoundInstance() { - super(SpectrumSoundEvents.AIR_LAUNCH_BELT_CHARGING, SoundCategory.PLAYERS); + super(SpectrumSoundEvents.AIR_LAUNCH_BELT_CHARGING, SoundCategory.PLAYERS, new Random()); PlayerEntity player = MinecraftClient.getInstance().player; this.repeat = false; this.repeatDelay = 0; diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/SpectrumConfiguredFeatures.java b/src/main/java/de/dafuqs/spectrum/worldgen/SpectrumConfiguredFeatures.java index e1ef73b4ca..1754d4d402 100644 --- a/src/main/java/de/dafuqs/spectrum/worldgen/SpectrumConfiguredFeatures.java +++ b/src/main/java/de/dafuqs/spectrum/worldgen/SpectrumConfiguredFeatures.java @@ -28,6 +28,7 @@ import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.Heightmap; import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.BiomeKeys; import net.minecraft.world.gen.GenerationStep; import net.minecraft.world.gen.YOffset; import net.minecraft.world.gen.blockpredicate.BlockPredicate; @@ -195,18 +196,7 @@ private static void registerColoredTrees() { BiomePlacementModifier.of() ); - Predicate treeBiomes = BiomeSelectors.categories( - Biome.Category.PLAINS, - Biome.Category.EXTREME_HILLS, - Biome.Category.JUNGLE, - Biome.Category.FOREST, - Biome.Category.SWAMP, - Biome.Category.MESA, - Biome.Category.MOUNTAIN, - Biome.Category.DESERT, - Biome.Category.ICY, - Biome.Category.SAVANNA, - Biome.Category.TAIGA); + Predicate treeBiomes = BiomeSelectors.foundInOverworld(); BiomeModifications.addFeature(treeBiomes, GenerationStep.Feature.VEGETAL_DECORATION, RegistryKey.of(Registry.PLACED_FEATURE_KEY, randomColoredTreesFeatureIdentifier)); } @@ -301,7 +291,7 @@ private static void registerPlants() { BlockFilterPlacementModifier.of(BlockPredicate.allOf(BlockPredicate.wouldSurvive(SpectrumBlocks.MERMAIDS_BRUSH.getDefaultState(), BlockPos.ORIGIN))) ); - BiomeModifications.addFeature(BiomeSelectors.categories(Biome.Category.OCEAN), GenerationStep.Feature.VEGETAL_DECORATION, RegistryKey.of(Registry.PLACED_FEATURE_KEY, mermaidsBrushIdentifier)); + BiomeModifications.addFeature(BiomeSelectors.includeByKey(BiomeKeys.OCEAN), GenerationStep.Feature.VEGETAL_DECORATION, RegistryKey.of(Registry.PLACED_FEATURE_KEY, mermaidsBrushIdentifier)); // QUITOXIC REED Identifier quitoxicReedsIdentifier = SpectrumCommon.locate("quitoxic_reeds"); @@ -336,7 +326,7 @@ private static void registerPlants() { PlacedFeatures.WORLD_SURFACE_WG_HEIGHTMAP, BiomePlacementModifier.of() ); - BiomeModifications.addFeature(BiomeSelectors.categories(Biome.Category.PLAINS), GenerationStep.Feature.VEGETAL_DECORATION, RegistryKey.of(Registry.PLACED_FEATURE_KEY, cloversIdentifier)); + BiomeModifications.addFeature(BiomeSelectors.includeByKey(BiomeKeys.PLAINS), GenerationStep.Feature.VEGETAL_DECORATION, RegistryKey.of(Registry.PLACED_FEATURE_KEY, cloversIdentifier)); } public static final class Rules { From e43c594a9078002601de88e75d5c1b2cdba46df5 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Sun, 14 Aug 2022 20:43:13 +0200 Subject: [PATCH 0007/1051] more porting work --- .../blocks/conditional/CloakedOreBlock.java | 6 ++---- .../conditional/QuitoxicReedsBlock.java | 8 ++----- .../blocks/decoration/CloverBlock.java | 4 ---- .../energy/CrystalApothecaryBlockEntity.java | 2 +- .../JadeVineRootsBlockEntityRenderer.java | 2 +- .../blocks/mob_blocks/FeedingMobBlock.java | 2 +- .../redstone/RedstoneWirelessBlock.java | 5 +++-- .../LiminalDimensionReverb.java | 2 +- .../dafuqs/spectrum/deeper_down/DDBiome.java | 1 - .../entity/entity/ShootingStarEntity.java | 8 +++++-- .../render/InkProjectileEntityRenderer.java | 2 +- .../render/ShootingStarEntityRenderer.java | 2 +- .../events/listeners/BlockPosEventQueue.java | 3 ++- .../spectrum/events/listeners/EventQueue.java | 7 ++++--- .../listeners/ExperienceOrbEventQueue.java | 3 ++- .../listeners/ItemEntityEventQueue.java | 3 ++- .../WirelessRedstoneSignalEventQueue.java | 3 ++- .../spectrum/items/SpectrumMusicDiscItem.java | 4 ++-- .../items/magic_items/EnderSpliceItem.java | 4 ++-- .../items/magic_items/NaturesStaffItem.java | 1 - .../spectrum/mixin/InfestedBlockMixin.java | 4 ++-- .../client/BlockPosEventTransferParticle.java | 6 +++--- .../PotionWorkshopBrewingRecipe.java | 2 +- .../spectrum/registries/SpectrumBlocks.java | 14 ++++++------- .../spectrum/registries/SpectrumItems.java | 4 ++-- .../sound/CraftingBlockSoundInstance.java | 3 ++- .../EnderSpliceChargingSoundInstance.java | 3 ++- .../sound/HintRevelationSoundInstance.java | 3 ++- .../sound/InkProjectileSoundInstance.java | 3 ++- .../sound/NaturesStaffUseSoundInstance.java | 3 ++- .../sound/TakeOffBeltSoundInstance.java | 3 ++- .../worldgen/SpectrumConfiguredFeatures.java | 21 +++++-------------- .../worldgen/features/RandomBudsFeature.java | 15 +++++-------- 33 files changed, 72 insertions(+), 84 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/blocks/conditional/CloakedOreBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/conditional/CloakedOreBlock.java index cfc63c33b1..125c96a81e 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/conditional/CloakedOreBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/conditional/CloakedOreBlock.java @@ -58,10 +58,8 @@ public List getDroppedStacks(BlockState state, LootContext.Builder bu } @Override - public void onStacksDropped(BlockState state, ServerWorld world, BlockPos pos, ItemStack stack) { - if (dropXP) { - super.onStacksDropped(state, world, pos, stack); - } + public void onStacksDropped(BlockState state, ServerWorld world, BlockPos pos, ItemStack stack, boolean dropExperience) { + super.onStacksDropped(state, world, pos, stack, dropExperience && dropXP); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/conditional/QuitoxicReedsBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/conditional/QuitoxicReedsBlock.java index 5bdc4b3dad..4116571b59 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/conditional/QuitoxicReedsBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/conditional/QuitoxicReedsBlock.java @@ -28,6 +28,7 @@ import net.minecraft.tag.FluidTags; import net.minecraft.util.Identifier; import net.minecraft.util.Pair; +import net.minecraft.util.Util; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.shape.VoxelShape; @@ -188,8 +189,7 @@ public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random } private Optional searchClayPos(World world, @NotNull BlockPos searchPos, BlockState searchBlockState, Random random) { - List directions = new ArrayList<>(List.of(Direction.values())); - Collections.shuffle(directions, random); + List directions = Util.copyShuffled(Direction.values(), random); int i = 0; int range = 8; @@ -258,8 +258,4 @@ public float getMaxHorizontalModelOffset() { return 0.15F; } - @Override - public OffsetType getOffsetType() { - return OffsetType.XYZ; - } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/decoration/CloverBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/decoration/CloverBlock.java index 12843806db..50c44209ca 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/decoration/CloverBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/decoration/CloverBlock.java @@ -23,10 +23,6 @@ public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos po return SHAPE; } - public AbstractBlock.OffsetType getOffsetType() { - return OffsetType.XZ; - } - @Override public boolean isFertilizable(BlockView world, BlockPos pos, BlockState state, boolean isClient) { return super.isFertilizable(world, pos, state, isClient); diff --git a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java index a9f1cca551..ae0f0f21f5 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java @@ -315,7 +315,7 @@ public void harvestExistingClusters() { if (world instanceof ServerWorld) { for (BlockPos currPos : BlockPos.iterateOutwards(this.pos, RANGE, RANGE, RANGE)) { if (world.getBlockState(currPos).isIn(SpectrumBlockTags.CRYSTAL_APOTHECARY_HARVESTABLE)) { - this.blockPosEventTransferListener.acceptEvent(world, currPos, SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, null, this.pos); + this.blockPosEventTransferListener.acceptEvent(world, currPos, SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, null, Vec3d.ofCenter(this.pos)); } } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineRootsBlockEntityRenderer.java b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineRootsBlockEntityRenderer.java index 3c4d1953d6..a9151f1877 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineRootsBlockEntityRenderer.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/jade_vines/JadeVineRootsBlockEntityRenderer.java @@ -37,7 +37,7 @@ public void render(JadeVineRootsBlockEntity entity, float tickDelta, MatrixStack matrixStack, vertexConsumerProvider.getBuffer(RenderLayers.getMovingBlockLayer(fenceBlockState)), true, - new Random(), + entity.getWorld().random, fenceBlockState.getRenderingSeed(entity.getPos()), OverlayTexture.DEFAULT_UV ); diff --git a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FeedingMobBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FeedingMobBlock.java index 86c598b258..15095650ca 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FeedingMobBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/mob_blocks/FeedingMobBlock.java @@ -66,7 +66,7 @@ public boolean trigger(ServerWorld world, BlockPos blockPos, BlockState state, @ stack.decrement(1); int i = animalEntity.getBreedingAge(); animalEntity.growUp((int) ((float) (-i / 20) * 0.1F), true); - animalEntity.emitGameEvent(GameEvent.MOB_INTERACT, animalEntity.getCameraBlockPos()); + animalEntity.emitGameEvent(GameEvent.ENTITY_INTERACT); } } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlock.java index 6233e08093..9ca0a2576d 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlock.java @@ -13,6 +13,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.particle.DustParticleEffect; +import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.state.StateManager; @@ -101,9 +102,9 @@ protected void appendProperties(StateManager.@NotNull Builder builder.add(FACING, POWERED, SENDER, CHANNEL); } - @Override @Nullable - public GameEventListener getGameEventListener(World world, T blockEntity) { + @Override + public GameEventListener getGameEventListener(ServerWorld world, T blockEntity) { return blockEntity instanceof RedstoneWirelessBlockEntity ? ((RedstoneWirelessBlockEntity) blockEntity).getEventListener() : null; } diff --git a/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java b/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java index cd4f4b6a4d..d56c380dbb 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java +++ b/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java @@ -14,7 +14,7 @@ public class LiminalDimensionReverb { public static void setReverbForClientDimension(ClientWorld clientWorld) { LiminalEffects liminalEffects = new LiminalEffects(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.of(new ReverbSettings().setEnabled(true).setDecayTime(8).setDensity(0.5F))); - ((DimensionEffectsAccess) clientWorld.getDimension()).setLiminalEffects(liminalEffects); + ((DimensionEffectsAccess) clientWorld.getDimension().effects()).setLiminalEffects(liminalEffects); } } diff --git a/src/main/java/de/dafuqs/spectrum/deeper_down/DDBiome.java b/src/main/java/de/dafuqs/spectrum/deeper_down/DDBiome.java index 8164c47006..7208b4cf79 100644 --- a/src/main/java/de/dafuqs/spectrum/deeper_down/DDBiome.java +++ b/src/main/java/de/dafuqs/spectrum/deeper_down/DDBiome.java @@ -14,7 +14,6 @@ public class DDBiome { .generationSettings(new GenerationSettings.Builder().build()) .precipitation(Biome.Precipitation.NONE) .temperature(0.2F).downfall(0.2F) - .category(Biome.Category.NONE) .temperatureModifier(Biome.TemperatureModifier.NONE) .effects(new BiomeEffects.Builder() .waterColor(0xd3cbb1) diff --git a/src/main/java/de/dafuqs/spectrum/entity/entity/ShootingStarEntity.java b/src/main/java/de/dafuqs/spectrum/entity/entity/ShootingStarEntity.java index ef327ff1f2..69d41a7f1f 100644 --- a/src/main/java/de/dafuqs/spectrum/entity/entity/ShootingStarEntity.java +++ b/src/main/java/de/dafuqs/spectrum/entity/entity/ShootingStarEntity.java @@ -97,6 +97,10 @@ private ShootingStarEntity(@NotNull ShootingStarEntity entity) { this.lastCollisionCount = entity.lastCollisionCount; } + public Random getRandom() { + return this.random; + } + public static void doShootingStarSpawns(@NotNull ServerWorld serverWorld) { if (SpectrumCommon.CONFIG.ShootingStarWorlds.contains(serverWorld.getRegistryKey().getValue().toString())) { if (serverWorld.getTime() % 100 == 0) { @@ -184,7 +188,7 @@ protected void initDataTracker() { public void tick() { super.tick(); - this.tickNetherPortal(); + this.tickPortal(); boolean wasOnGround = this.onGround; double previousXVelocity = this.getVelocity().getX(); @@ -431,7 +435,7 @@ public boolean handleAttack(Entity attacker) { return true; } else { - this.emitGameEvent(GameEvent.ENTITY_DAMAGED, attacker); + this.emitGameEvent(GameEvent.ENTITY_DAMAGE, attacker); } } diff --git a/src/main/java/de/dafuqs/spectrum/entity/render/InkProjectileEntityRenderer.java b/src/main/java/de/dafuqs/spectrum/entity/render/InkProjectileEntityRenderer.java index 9519e0e14d..daffdaa534 100644 --- a/src/main/java/de/dafuqs/spectrum/entity/render/InkProjectileEntityRenderer.java +++ b/src/main/java/de/dafuqs/spectrum/entity/render/InkProjectileEntityRenderer.java @@ -32,7 +32,7 @@ public void render(InkProjectileEntity tEntity, float yaw, float tickDelta, Matr matrixStack.push(); Vec3f starColor = InkColor.of(DyeColor.byId(tEntity.getColor())).getColor(); - double time = (tEntity.world.getTime() % 24000) + tickDelta + new Random(tEntity.getId()).nextInt(200); + double time = (tEntity.world.getTime() % 24000) + tickDelta + Random.create(tEntity.getId()).nextInt(200); float scale = 0.75F + 0.1F * (float) Math.sin(time / 10); matrixStack.scale(scale, scale, scale); diff --git a/src/main/java/de/dafuqs/spectrum/entity/render/ShootingStarEntityRenderer.java b/src/main/java/de/dafuqs/spectrum/entity/render/ShootingStarEntityRenderer.java index 71fa351cd2..5193688851 100644 --- a/src/main/java/de/dafuqs/spectrum/entity/render/ShootingStarEntityRenderer.java +++ b/src/main/java/de/dafuqs/spectrum/entity/render/ShootingStarEntityRenderer.java @@ -41,7 +41,7 @@ public void render(ShootingStarEntity shootingStarEntity, float yaw, float tickD BlockPos blockpos = new BlockPos(shootingStarEntity.getX(), shootingStarEntity.getBoundingBox().maxY, shootingStarEntity.getZ()); matrixStack.translate(-0.5, 0.0, -0.5); BlockRenderManager blockRenderManager = MinecraftClient.getInstance().getBlockRenderManager(); - blockRenderManager.getModelRenderer().render(world, blockRenderManager.getModel(blockState), blockState, blockpos, matrixStack, vertexConsumerProvider.getBuffer(RenderLayers.getMovingBlockLayer(blockState)), false, new Random(), blockState.getRenderingSeed(shootingStarEntity.getBlockPos()), OverlayTexture.DEFAULT_UV); + blockRenderManager.getModelRenderer().render(world, blockRenderManager.getModel(blockState), blockState, blockpos, matrixStack, vertexConsumerProvider.getBuffer(RenderLayers.getMovingBlockLayer(blockState)), false, shootingStarEntity.getRandom(), blockState.getRenderingSeed(shootingStarEntity.getBlockPos()), OverlayTexture.DEFAULT_UV); matrixStack.pop(); super.render(shootingStarEntity, yaw, tickDelta, matrixStack, vertexConsumerProvider, light); } diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventQueue.java index 24fb2ec97f..92cbe8152a 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventQueue.java @@ -6,6 +6,7 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; import net.minecraft.world.event.PositionSource; @@ -17,7 +18,7 @@ public BlockPosEventQueue(PositionSource positionSource, int range, Callback lis } @Override - public void acceptEvent(World world, BlockPos pos, GameEvent event, Entity entity, BlockPos sourcePos) { + public void acceptEvent(World world, BlockPos pos, GameEvent event, Entity entity, Vec3d sourcePos) { if (world instanceof ServerWorld) { EventEntry eventEntry = new EventEntry(event, new BlockPos(pos.getX(), pos.getY(), pos.getZ()), MathHelper.floor(Math.sqrt(pos.getSquaredDistance(sourcePos)))); // copy int delay = eventEntry.distance * 2; diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/EventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/EventQueue.java index 16141b8351..131e253e80 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/EventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/EventQueue.java @@ -2,6 +2,7 @@ import net.minecraft.entity.Entity; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; import net.minecraft.world.event.PositionSource; @@ -51,7 +52,7 @@ public int getRange() { @Override public boolean listen(World world, GameEvent event, @Nullable Entity entity, BlockPos pos) { - Optional positionSourcePosOptional = this.positionSource.getPos(world); + Optional positionSourcePosOptional = this.positionSource.getPos(world); if (positionSourcePosOptional.isEmpty()) { return false; } else { @@ -64,7 +65,7 @@ public boolean listen(World world, GameEvent event, @Nullable Entity entity, Blo } } - protected abstract void acceptEvent(World world, BlockPos pos, GameEvent event, @Nullable Entity entity, BlockPos sourcePos); + protected abstract void acceptEvent(World world, BlockPos pos, GameEvent event, @Nullable Entity entity, Vec3d sourcePos); protected void schedule(D object, int delay) { this.eventQueue.put(object, delay); @@ -74,7 +75,7 @@ public interface Callback { /** * Returns whether the callback wants to accept this event. */ - boolean canAcceptEvent(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity, BlockPos sourcePos); + boolean canAcceptEvent(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity, Vec3d sourcePos); /** * Accepts a game event after delay. diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEventQueue.java index a66d47baa6..6a543738c4 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEventQueue.java @@ -7,6 +7,7 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; import net.minecraft.world.event.PositionSource; @@ -18,7 +19,7 @@ public ExperienceOrbEventQueue(PositionSource positionSource, int range, Callbac } @Override - public void acceptEvent(World world, BlockPos pos, GameEvent event, Entity entity, BlockPos sourcePos) { + public void acceptEvent(World world, BlockPos pos, GameEvent event, Entity entity, Vec3d sourcePos) { if (world instanceof ServerWorld && entity instanceof ExperienceOrbEntity experienceOrbEntity) { EventEntry eventEntry = new EventEntry(event, experienceOrbEntity, MathHelper.floor(Math.sqrt(pos.getSquaredDistance(sourcePos)))); // copy int delay = eventEntry.distance * 2; diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java index d7554c25e7..a501ebf89b 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java @@ -7,6 +7,7 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; import net.minecraft.world.event.PositionSource; @@ -18,7 +19,7 @@ public ItemEntityEventQueue(PositionSource positionSource, int range, Callback l } @Override - public void acceptEvent(World world, BlockPos pos, GameEvent event, Entity entity, BlockPos sourcePos) { + public void acceptEvent(World world, BlockPos pos, GameEvent event, Entity entity, Vec3d sourcePos) { if (world instanceof ServerWorld && entity instanceof ItemEntity itemEntity) { EventEntry eventEntry = new EventEntry(event, itemEntity, MathHelper.floor(Math.sqrt(pos.getSquaredDistance(sourcePos)))); int delay = eventEntry.distance * 2; diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalEventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalEventQueue.java index 18d3747168..ca7e6826fe 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalEventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalEventQueue.java @@ -7,6 +7,7 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; import net.minecraft.world.event.PositionSource; @@ -18,7 +19,7 @@ public WirelessRedstoneSignalEventQueue(PositionSource positionSource, int range } @Override - public void acceptEvent(World world, BlockPos pos, GameEvent event, Entity entity, BlockPos sourcePos) { + public void acceptEvent(World world, BlockPos pos, GameEvent event, Entity entity, Vec3d sourcePos) { if (world instanceof ServerWorld && event instanceof RedstoneTransferGameEvent redstoneTransferEvent) { WirelessRedstoneSignalEventQueue.EventEntry eventEntry = new WirelessRedstoneSignalEventQueue.EventEntry(redstoneTransferEvent, MathHelper.floor(Math.sqrt(pos.getSquaredDistance(sourcePos)))); // copy int delay = eventEntry.distance * 2; diff --git a/src/main/java/de/dafuqs/spectrum/items/SpectrumMusicDiscItem.java b/src/main/java/de/dafuqs/spectrum/items/SpectrumMusicDiscItem.java index 6e5ff5b4ad..7340c50313 100644 --- a/src/main/java/de/dafuqs/spectrum/items/SpectrumMusicDiscItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/SpectrumMusicDiscItem.java @@ -5,8 +5,8 @@ public class SpectrumMusicDiscItem extends MusicDiscItem { - public SpectrumMusicDiscItem(int comparatorOutput, SoundEvent sound, Settings settings) { - super(comparatorOutput, sound, settings); + public SpectrumMusicDiscItem(int comparatorOutput, SoundEvent sound, Settings settings, int lengthInSeconds) { + super(comparatorOutput, sound, settings, lengthInSeconds); } } \ No newline at end of file diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java index bd783c2197..893569c099 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java @@ -175,8 +175,8 @@ private void teleportPlayerToPos(World world, LivingEntity user, PlayerEntity pl // make sure the sound plays even when the player currently teleports if (playerEntity instanceof ServerPlayerEntity) { - ((ServerPlayerEntity) playerEntity).networkHandler.sendPacket(new PlaySoundIdS2CPacket(SpectrumSoundEvents.PLAYER_TELEPORTS.getId(), SoundCategory.PLAYERS, playerEntity.getPos(), 1.0F, 1.0F)); - ((ServerPlayerEntity) playerEntity).networkHandler.sendPacket(new PlaySoundIdS2CPacket(SoundEvents.BLOCK_GLASS_BREAK.getId(), SoundCategory.PLAYERS, playerEntity.getPos(), 1.0F, 1.0F)); + world.playSound(null, playerEntity.getBlockPos(), SpectrumSoundEvents.PLAYER_TELEPORTS, SoundCategory.PLAYERS, 1.0F, 1.0F); // TODO: test + world.playSound(null, playerEntity.getBlockPos(), SoundEvents.BLOCK_GLASS_BREAK, SoundCategory.PLAYERS, 1.0F, 1.0F); // TODO: test } } } diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java index a0d2905aba..cf0efa355c 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java @@ -219,7 +219,6 @@ public void usageTickClient() { if (MinecraftClient.getInstance().crosshairTarget.getType() == HitResult.Type.BLOCK) { MinecraftClient.getInstance().interactionManager.interactBlock( MinecraftClient.getInstance().player, - MinecraftClient.getInstance().world, MinecraftClient.getInstance().player.getActiveHand(), (BlockHitResult) MinecraftClient.getInstance().crosshairTarget ); diff --git a/src/main/java/de/dafuqs/spectrum/mixin/InfestedBlockMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/InfestedBlockMixin.java index e5c782a600..97a6b0cbc3 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/InfestedBlockMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/InfestedBlockMixin.java @@ -20,8 +20,8 @@ public class InfestedBlockMixin { /* * Do not spawn silverfish when block is broken with Resonance Tool */ - @Inject(at = @At("HEAD"), method = "onStacksDropped(Lnet/minecraft/block/BlockState;Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/item/ItemStack;)V", cancellable = true) - public void onStacksDropped(BlockState state, ServerWorld world, BlockPos pos, ItemStack stack, CallbackInfo ci) { + @Inject(at = @At("HEAD"), method = "onStacksDropped(Lnet/minecraft/block/BlockState;Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/item/ItemStack;Z)V", cancellable = true) + public void onStacksDropped(BlockState state, ServerWorld world, BlockPos pos, ItemStack stack, boolean dropExperience, CallbackInfo ci) { if (EnchantmentHelper.getLevel(SpectrumEnchantments.RESONANCE, stack) > 0) { ci.cancel(); } else if (EnchantmentHelper.getLevel(SpectrumEnchantments.PEST_CONTROL, stack) > 0) { diff --git a/src/main/java/de/dafuqs/spectrum/particle/client/BlockPosEventTransferParticle.java b/src/main/java/de/dafuqs/spectrum/particle/client/BlockPosEventTransferParticle.java index 7fe8fc8e20..606846feb5 100644 --- a/src/main/java/de/dafuqs/spectrum/particle/client/BlockPosEventTransferParticle.java +++ b/src/main/java/de/dafuqs/spectrum/particle/client/BlockPosEventTransferParticle.java @@ -85,13 +85,13 @@ public ParticleTextureSheet getType() { public void tick() { super.tick(); - Optional optional = this.blockPosEventTransfer.getDestination().getPos(this.world); - if (!optional.isPresent()) { + Optional optional = this.blockPosEventTransfer.getDestination().getPos(this.world); + if (optional.isEmpty()) { this.markDead(); } else { double d = (double) this.age / (double) this.maxAge; BlockPos blockPos = this.blockPosEventTransfer.getOrigin(); - BlockPos blockPos2 = optional.get(); + Vec3d blockPos2 = optional.get(); this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, (double) blockPos2.getX() + 0.5D); this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, (double) blockPos2.getY() + 0.5D); this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, (double) blockPos2.getZ() + 0.5D); diff --git a/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopBrewingRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopBrewingRecipe.java index c4ff2a644f..a56a9e5002 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopBrewingRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/potion_workshop/PotionWorkshopBrewingRecipe.java @@ -137,7 +137,7 @@ public DefaultedList getIngredients() { @Override public ItemStack getOutput() { if (this.cachedOutput == null) { - this.cachedOutput = brewRandomPotion(new PotionMod(), null, new Random()); + this.cachedOutput = brewRandomPotion(new PotionMod(), null, Random.create()); } return this.cachedOutput; } diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java index 61e3c9cf83..4a4b624d26 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java @@ -421,8 +421,8 @@ public class SpectrumBlocks { public static final Block YELLOW_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.YELLOW); public static final Block YELLOW_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.YELLOW); - public static final Block PRESERVATION_CONTROLLER = new PreservationControllerBlock(FabricBlockSettings.of(Material.STONE).strength(-1.0F).dropsNothing().luminance(1).emissiveLighting(SpectrumBlocks::always).postProcess(SpectrumBlocks::always)); - public static final Block DIKE_GATE = new DikeGateBlock(FabricBlockSettings.of(Material.GLASS).strength(-1.0F).dropsNothing().luminance(3).sounds(BlockSoundGroup.GLASS).nonOpaque().allowsSpawning(SpectrumBlocks::never).solidBlock(SpectrumBlocks::never).suffocates(SpectrumBlocks::never).blockVision(SpectrumBlocks::never)); + public static final Block PRESERVATION_CONTROLLER = new PreservationControllerBlock(FabricBlockSettings.of(Material.STONE).strength(-1.0F).dropsNothing().luminance(value -> 1).emissiveLighting(SpectrumBlocks::always).postProcess(SpectrumBlocks::always)); + public static final Block DIKE_GATE = new DikeGateBlock(FabricBlockSettings.of(Material.GLASS).strength(-1.0F).dropsNothing().luminance(value -> 3).sounds(BlockSoundGroup.GLASS).nonOpaque().allowsSpawning(SpectrumBlocks::never).solidBlock(SpectrumBlocks::never).suffocates(SpectrumBlocks::never).blockVision(SpectrumBlocks::never)); public static final Block TREASURE_CHEST = new TreasureChestBlock(FabricBlockSettings.copyOf(Blocks.CHEST).hardness(-1.0F)); // JADE VINES @@ -469,7 +469,7 @@ public class SpectrumBlocks { public static final Block BLAZING_CRYSTAL = new Block(FabricBlockSettings.copyOf(Blocks.GLOWSTONE)); public static final Block RESONANT_LILY = new FlowerBlock(StatusEffects.INSTANT_HEALTH, 5, FabricBlockSettings.copyOf(Blocks.POPPY)); - public static final Block QUITOXIC_REEDS = new QuitoxicReedsBlock(FabricBlockSettings.of(Material.PLANT).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.GRASS).ticksRandomly()); + public static final Block QUITOXIC_REEDS = new QuitoxicReedsBlock(FabricBlockSettings.of(Material.PLANT).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.GRASS).offsetType(AbstractBlock.OffsetType.XYZ).ticksRandomly()); public static final Block MERMAIDS_BRUSH = new MermaidsBrushBlock(FabricBlockSettings.of(Material.REPLACEABLE_UNDERWATER_PLANT).noCollision().breakInstantly().sounds(BlockSoundGroup.WET_GRASS).ticksRandomly().luminance(value -> 3)); public static final Block ENDER_TREASURE = new EnderTreasureBlock(FabricBlockSettings.copyOf(Blocks.EMERALD_BLOCK)); public static final Block CRACKED_END_PORTAL_FRAME = new CrackedEndPortalFrameBlock(FabricBlockSettings.copyOf(Blocks.END_PORTAL_FRAME)); @@ -523,8 +523,8 @@ public class SpectrumBlocks { .allowsSpawning((state, world, pos, entityType) -> state.get(RedstoneTransparencyBlock.TRANSPARENCY_STATE) == RedstoneTransparencyBlock.TransparencyState.SOLID) .solidBlock(SpectrumBlocks::never).suffocates((state, world, pos) -> state.get(RedstoneTransparencyBlock.TRANSPARENCY_STATE) == RedstoneTransparencyBlock.TransparencyState.SOLID) .blockVision((state, world, pos) -> state.get(RedstoneTransparencyBlock.TRANSPARENCY_STATE) == RedstoneTransparencyBlock.TransparencyState.SOLID)); - public static final Block CLOVER = new CloverBlock(FabricBlockSettings.copyOf(Blocks.GRASS)); - public static final Block FOUR_LEAF_CLOVER = new FourLeafCloverBlock(FabricBlockSettings.copyOf(Blocks.GRASS)); + public static final Block CLOVER = new CloverBlock(FabricBlockSettings.copyOf(Blocks.GRASS).offsetType(AbstractBlock.OffsetType.XZ)); + public static final Block FOUR_LEAF_CLOVER = new FourLeafCloverBlock(FabricBlockSettings.copyOf(Blocks.GRASS).offsetType(AbstractBlock.OffsetType.XZ)); private static final FabricBlockSettings FUSION_SHINE_BLOCK_SETTINGS = FabricBlockSettings.of(Material.STONE).strength(5.0F, 20.0F).requiresTool().nonOpaque().luminance(value -> value.get(FusionShrineBlock.LIGHT_LEVEL)); public static final Block FUSION_SHRINE_BASALT = new FusionShrineBlock(FUSION_SHINE_BLOCK_SETTINGS); public static final Block FUSION_SHRINE_CALCITE = new FusionShrineBlock(FUSION_SHINE_BLOCK_SETTINGS); @@ -749,14 +749,14 @@ public class SpectrumBlocks { public static final Block GLOBETTE_END_CLUSTER = new CrystallarieumGrowableBlock(FabricBlockSettings.copyOf(SMALL_GLOBETTE_END_BUD), CrystallarieumGrowableBlock.GrowthStage.CLUSTER); // STRUCTURE BLOCKS - private static final FabricBlockSettings preservationBlockSettings = FabricBlockSettings.of(Material.STONE).strength(-1.0F, 3600000.0F).dropsNothing().allowsSpawning(SpectrumBlocks::never); + private static final AbstractBlock.Settings preservationBlockSettings = FabricBlockSettings.of(Material.STONE).strength(-1.0F, 3600000.0F).dropsNothing().allowsSpawning(SpectrumBlocks::never); public static final Block PRESERVATION_STONE = new Block(preservationBlockSettings); public static final Block DIKE_CHISELED_PRESERVATION_STONE = new Block(FabricBlockSettings.copyOf(PRESERVATION_STONE).luminance(6)); public static final Block DIKE_GATE_FOUNTAIN = new SpectrumFacingBlock(preservationBlockSettings); public static final Block PRESERVATION_BRICKS = new Block(preservationBlockSettings); public static final Block SHIMMERING_PRESERVATION_BRICKS = new Block(FabricBlockSettings.copyOf(preservationBlockSettings).luminance(5)); public static final Block COURIER_STATUE = new StatueBlock(preservationBlockSettings); - private static final FabricBlockSettings preservationGlassBlockSettings = FabricBlockSettings.of(Material.GLASS).strength(-1.0F, 3600000.0F).dropsNothing().sounds(BlockSoundGroup.GLASS).nonOpaque().allowsSpawning(SpectrumBlocks::never).solidBlock(SpectrumBlocks::never).suffocates(SpectrumBlocks::never).blockVision(SpectrumBlocks::never); + private static final AbstractBlock.Settings preservationGlassBlockSettings = FabricBlockSettings.of(Material.GLASS).strength(-1.0F, 3600000.0F).dropsNothing().sounds(BlockSoundGroup.GLASS).nonOpaque().allowsSpawning(SpectrumBlocks::never).solidBlock(SpectrumBlocks::never).suffocates(SpectrumBlocks::never).blockVision(SpectrumBlocks::never); public static final Block PRESERVATION_GLASS = new GlassBlock(preservationGlassBlockSettings); public static final Block TINTED_PRESERVATION_GLASS = new GlassBlock(FabricBlockSettings.copyOf(PRESERVATION_GLASS).luminance(12).strength(Float.MAX_VALUE, 3600000.0F)); diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java index 7dc6b94b68..00d83942b5 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java @@ -302,8 +302,8 @@ public Map getDefaultEnchantments() { public static final Item LUCID_WHITE_CATKIN = new CatkinItem(BuiltinGemstoneColor.WHITE, true, resourcesUncommonItemSettings); // Misc - public static final Item MUSIC_DISC_SPECTRUM_THEME = new SpectrumMusicDiscItem(1, SpectrumSoundEvents.SPECTRUM_THEME, toolRareItemSettingsSingle); - public static final Item MUSIC_DISC_DIMENSION_THEME = new SpectrumMusicDiscItem(2, SpectrumSoundEvents.BOSS_THEME, toolRareItemSettingsSingle); + public static final Item MUSIC_DISC_SPECTRUM_THEME = new SpectrumMusicDiscItem(1, SpectrumSoundEvents.SPECTRUM_THEME, toolRareItemSettingsSingle, 120); + public static final Item MUSIC_DISC_DIMENSION_THEME = new SpectrumMusicDiscItem(2, SpectrumSoundEvents.BOSS_THEME, toolRareItemSettingsSingle, 265); public static final Item SPAWNER = new SpectrumMobSpawnerItem(generalEpicItemSettingsSingle); public static final Item GLISTERING_MELON_SEEDS = new AliasedBlockItem(SpectrumBlocks.GLISTERING_MELON_STEM, toolItemSettings); public static final Item INVISIBLE_ITEM_FRAME = new InvisibleItemFrameItem(SpectrumEntityTypes.INVISIBLE_ITEM_FRAME, toolItemSettings); diff --git a/src/main/java/de/dafuqs/spectrum/sound/CraftingBlockSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/CraftingBlockSoundInstance.java index 79079b1c34..c0d4a3b092 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/CraftingBlockSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/CraftingBlockSoundInstance.java @@ -8,6 +8,7 @@ import net.minecraft.block.BlockState; import net.minecraft.client.MinecraftClient; import net.minecraft.client.sound.AbstractSoundInstance; +import net.minecraft.client.sound.SoundInstance; import net.minecraft.client.sound.TickableSoundInstance; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvent; @@ -35,7 +36,7 @@ public class CraftingBlockSoundInstance extends AbstractSoundInstance implements private boolean done; protected CraftingBlockSoundInstance(SoundEvent soundEvent, RegistryKey worldKey, BlockPos sourceBlockPos, Block sourceBlock, int maxDurationTicks) { - super(soundEvent, SoundCategory.BLOCKS); + super(soundEvent, SoundCategory.BLOCKS, SoundInstance.createRandom()); this.worldKey = worldKey; this.sourceBlockPos = sourceBlockPos; diff --git a/src/main/java/de/dafuqs/spectrum/sound/EnderSpliceChargingSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/EnderSpliceChargingSoundInstance.java index 3ea24b037e..8d2d713e10 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/EnderSpliceChargingSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/EnderSpliceChargingSoundInstance.java @@ -4,6 +4,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.sound.AbstractSoundInstance; +import net.minecraft.client.sound.SoundInstance; import net.minecraft.client.sound.TickableSoundInstance; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.particle.ParticleTypes; @@ -21,7 +22,7 @@ public class EnderSpliceChargingSoundInstance extends AbstractSoundInstance impl private boolean done; public EnderSpliceChargingSoundInstance(PlayerEntity player) { - super(SpectrumSoundEvents.ENDER_SPLICE_CHARGES, SoundCategory.NEUTRAL); + super(SpectrumSoundEvents.ENDER_SPLICE_CHARGES, SoundCategory.NEUTRAL, SoundInstance.createRandom()); this.repeat = true; this.repeatDelay = 0; this.volume = 0.6F; diff --git a/src/main/java/de/dafuqs/spectrum/sound/HintRevelationSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/HintRevelationSoundInstance.java index c36ef72f8a..8b30b77656 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/HintRevelationSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/HintRevelationSoundInstance.java @@ -5,6 +5,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.sound.AbstractSoundInstance; +import net.minecraft.client.sound.SoundInstance; import net.minecraft.client.sound.TickableSoundInstance; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.sound.SoundCategory; @@ -18,7 +19,7 @@ public class HintRevelationSoundInstance extends AbstractSoundInstance implement private int playtime; public HintRevelationSoundInstance(PlayerEntity player, int duration) { - super(SpectrumSoundEvents.TEXT_REVEALED, SoundCategory.PLAYERS); + super(SpectrumSoundEvents.TEXT_REVEALED, SoundCategory.PLAYERS, SoundInstance.createRandom()); this.repeat = true; this.repeatDelay = 0; this.volume = 1.0F; diff --git a/src/main/java/de/dafuqs/spectrum/sound/InkProjectileSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/InkProjectileSoundInstance.java index 3f717bec33..96d6b69cac 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/InkProjectileSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/InkProjectileSoundInstance.java @@ -6,6 +6,7 @@ import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; import net.minecraft.client.sound.AbstractSoundInstance; +import net.minecraft.client.sound.SoundInstance; import net.minecraft.client.sound.TickableSoundInstance; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvent; @@ -27,7 +28,7 @@ public class InkProjectileSoundInstance extends AbstractSoundInstance implements private boolean done; protected InkProjectileSoundInstance(SoundEvent soundEvent, RegistryKey worldKey, InkProjectileEntity inkProjectile) { - super(soundEvent, SoundCategory.NEUTRAL); + super(soundEvent, SoundCategory.NEUTRAL, SoundInstance.createRandom()); this.worldKey = worldKey; this.inkProjectile = inkProjectile; diff --git a/src/main/java/de/dafuqs/spectrum/sound/NaturesStaffUseSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/NaturesStaffUseSoundInstance.java index 33fee21373..e8f5907b59 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/NaturesStaffUseSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/NaturesStaffUseSoundInstance.java @@ -4,6 +4,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.sound.AbstractSoundInstance; +import net.minecraft.client.sound.SoundInstance; import net.minecraft.client.sound.TickableSoundInstance; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.sound.SoundCategory; @@ -17,7 +18,7 @@ public class NaturesStaffUseSoundInstance extends AbstractSoundInstance implemen private boolean done; public NaturesStaffUseSoundInstance(PlayerEntity player) { - super(SpectrumSoundEvents.NATURES_STAFF_USE, SoundCategory.PLAYERS); + super(SpectrumSoundEvents.NATURES_STAFF_USE, SoundCategory.PLAYERS, SoundInstance.createRandom()); this.repeat = true; this.repeatDelay = 0; this.volume = 0.3F; diff --git a/src/main/java/de/dafuqs/spectrum/sound/TakeOffBeltSoundInstance.java b/src/main/java/de/dafuqs/spectrum/sound/TakeOffBeltSoundInstance.java index 8062b438e6..eaec1ad8f5 100644 --- a/src/main/java/de/dafuqs/spectrum/sound/TakeOffBeltSoundInstance.java +++ b/src/main/java/de/dafuqs/spectrum/sound/TakeOffBeltSoundInstance.java @@ -8,6 +8,7 @@ import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; import net.minecraft.client.sound.AbstractSoundInstance; +import net.minecraft.client.sound.SoundInstance; import net.minecraft.client.sound.TickableSoundInstance; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.sound.SoundCategory; @@ -24,7 +25,7 @@ public class TakeOffBeltSoundInstance extends AbstractSoundInstance implements T private boolean done; public TakeOffBeltSoundInstance() { - super(SpectrumSoundEvents.AIR_LAUNCH_BELT_CHARGING, SoundCategory.PLAYERS); + super(SpectrumSoundEvents.AIR_LAUNCH_BELT_CHARGING, SoundCategory.PLAYERS, SoundInstance.createRandom()); PlayerEntity player = MinecraftClient.getInstance().player; this.repeat = false; this.repeatDelay = 0; diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/SpectrumConfiguredFeatures.java b/src/main/java/de/dafuqs/spectrum/worldgen/SpectrumConfiguredFeatures.java index e1ef73b4ca..8c57ab7c2b 100644 --- a/src/main/java/de/dafuqs/spectrum/worldgen/SpectrumConfiguredFeatures.java +++ b/src/main/java/de/dafuqs/spectrum/worldgen/SpectrumConfiguredFeatures.java @@ -15,6 +15,7 @@ import net.minecraft.block.Blocks; import net.minecraft.structure.rule.BlockMatchRuleTest; import net.minecraft.structure.rule.RuleTest; +import net.minecraft.tag.BiomeTags; import net.minecraft.tag.BlockTags; import net.minecraft.util.DyeColor; import net.minecraft.util.Identifier; @@ -28,6 +29,7 @@ import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.Heightmap; import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.BiomeKeys; import net.minecraft.world.gen.GenerationStep; import net.minecraft.world.gen.YOffset; import net.minecraft.world.gen.blockpredicate.BlockPredicate; @@ -195,20 +197,7 @@ private static void registerColoredTrees() { BiomePlacementModifier.of() ); - Predicate treeBiomes = BiomeSelectors.categories( - Biome.Category.PLAINS, - Biome.Category.EXTREME_HILLS, - Biome.Category.JUNGLE, - Biome.Category.FOREST, - Biome.Category.SWAMP, - Biome.Category.MESA, - Biome.Category.MOUNTAIN, - Biome.Category.DESERT, - Biome.Category.ICY, - Biome.Category.SAVANNA, - Biome.Category.TAIGA); - - BiomeModifications.addFeature(treeBiomes, GenerationStep.Feature.VEGETAL_DECORATION, RegistryKey.of(Registry.PLACED_FEATURE_KEY, randomColoredTreesFeatureIdentifier)); + BiomeModifications.addFeature(BiomeSelectors.excludeByKey(BiomeKeys.MUSHROOM_FIELDS), GenerationStep.Feature.VEGETAL_DECORATION, RegistryKey.of(Registry.PLACED_FEATURE_KEY, randomColoredTreesFeatureIdentifier)); } private static void registerGeodes() { @@ -301,7 +290,7 @@ private static void registerPlants() { BlockFilterPlacementModifier.of(BlockPredicate.allOf(BlockPredicate.wouldSurvive(SpectrumBlocks.MERMAIDS_BRUSH.getDefaultState(), BlockPos.ORIGIN))) ); - BiomeModifications.addFeature(BiomeSelectors.categories(Biome.Category.OCEAN), GenerationStep.Feature.VEGETAL_DECORATION, RegistryKey.of(Registry.PLACED_FEATURE_KEY, mermaidsBrushIdentifier)); + BiomeModifications.addFeature(BiomeSelectors.tag(BiomeTags.IS_OCEAN), GenerationStep.Feature.VEGETAL_DECORATION, RegistryKey.of(Registry.PLACED_FEATURE_KEY, mermaidsBrushIdentifier)); // QUITOXIC REED Identifier quitoxicReedsIdentifier = SpectrumCommon.locate("quitoxic_reeds"); @@ -336,7 +325,7 @@ private static void registerPlants() { PlacedFeatures.WORLD_SURFACE_WG_HEIGHTMAP, BiomePlacementModifier.of() ); - BiomeModifications.addFeature(BiomeSelectors.categories(Biome.Category.PLAINS), GenerationStep.Feature.VEGETAL_DECORATION, RegistryKey.of(Registry.PLACED_FEATURE_KEY, cloversIdentifier)); + BiomeModifications.addFeature(BiomeSelectors.tag(BiomeTags.VILLAGE_PLAINS_HAS_STRUCTURE), GenerationStep.Feature.VEGETAL_DECORATION, RegistryKey.of(Registry.PLACED_FEATURE_KEY, cloversIdentifier)); } public static final class Rules { diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/features/RandomBudsFeature.java b/src/main/java/de/dafuqs/spectrum/worldgen/features/RandomBudsFeature.java index f18d2ae1d4..cc78f8ee8a 100644 --- a/src/main/java/de/dafuqs/spectrum/worldgen/features/RandomBudsFeature.java +++ b/src/main/java/de/dafuqs/spectrum/worldgen/features/RandomBudsFeature.java @@ -5,6 +5,7 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.state.property.Properties; +import net.minecraft.util.Util; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.math.random.Random; @@ -37,14 +38,12 @@ public boolean generate(FeatureContext context) { return true; } else { BlockPos.Mutable mutable = blockPos.mutableCopy(); - Iterator var8 = directions.iterator(); - while(var8.hasNext()) { - Direction direction = (Direction)var8.next(); + for (Direction direction : directions) { mutable.set(blockPos); List list2 = shuffleDirections(randomBudsFeaturesConfig, random, direction.getOpposite()); - for(int i = 0; i < randomBudsFeaturesConfig.searchRange; ++i) { + for (int i = 0; i < randomBudsFeaturesConfig.searchRange; ++i) { mutable.set(blockPos, direction); BlockState blockState = structureWorldAccess.getBlockState(mutable); if (!isAirOrWater(blockState) && !blockState.isOf(Blocks.GLOW_LICHEN)) { @@ -91,15 +90,11 @@ private static boolean isAirOrWater(BlockState state) { } public static List shuffleDirections(RandomBudsFeaturesConfig config, Random random) { - List list = Lists.newArrayList(config.directions); - Collections.shuffle(list, random); - return list; + return Util.copyShuffled(config.directions.stream(), random); } public static List shuffleDirections(RandomBudsFeaturesConfig config, Random random, Direction excluded) { - List list = config.directions.stream().filter((direction) -> direction != excluded).collect(Collectors.toList()); - Collections.shuffle(list, random); - return list; + return Util.copyShuffled(config.directions.stream().filter((direction) -> direction != excluded), random); } } From f5973064e2ed127bfd7ca5bef815496113a46378 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Sun, 14 Aug 2022 21:34:36 +0200 Subject: [PATCH 0008/1051] more porting work --- .../CrystallarieumBlockEntity.java | 3 +- .../blocks/gemstone/SpectrumBuddingBlock.java | 3 +- .../listeners/BlockPosEventListener.java | 102 ----------------- .../ExperienceOrbEntityListener.java | 107 ------------------ .../events/listeners/ItemEntityListener.java | 107 ------------------ .../WirelessRedstoneSignalListener.java | 97 ---------------- .../dafuqs/spectrum/helpers/RenderHelper.java | 4 +- .../items/magic_items/EnderSpliceItem.java | 2 +- .../mixin/BuddingAmethystBlockMixin.java | 3 +- .../client/BlockOverlayRendererMixin.java | 2 +- .../mixin/client/ClientWorldReverbMixin.java | 2 +- .../client/ExperienceTransferParticle.java | 14 +-- .../particle/client/ItemTransferParticle.java | 14 +-- .../particle/client/TransphereParticle.java | 12 +- .../WirelessRedstoneTransmissionParticle.java | 14 +-- 15 files changed, 38 insertions(+), 448 deletions(-) delete mode 100644 src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventListener.java delete mode 100644 src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEntityListener.java delete mode 100644 src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityListener.java delete mode 100644 src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalListener.java diff --git a/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java index 6b4dce1547..2f7aaa2c2e 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java @@ -35,6 +35,7 @@ import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.event.GameEvent; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -139,7 +140,7 @@ public static void serverTick(@NotNull World world, BlockPos blockPos, BlockStat BlockState targetState = it.next(); world.setBlockState(topPos, targetState); if (targetState.isIn(SpectrumBlockTags.CRYSTAL_APOTHECARY_HARVESTABLE)) { - world.emitGameEvent(SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, topPos); + world.emitGameEvent(SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, topPos, GameEvent.Emitter.of(world.getBlockState(topPos))); } // if the stone on top can not grow any further: pause diff --git a/src/main/java/de/dafuqs/spectrum/blocks/gemstone/SpectrumBuddingBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/gemstone/SpectrumBuddingBlock.java index 4878212860..8a2cd5682e 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/gemstone/SpectrumBuddingBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/gemstone/SpectrumBuddingBlock.java @@ -13,6 +13,7 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.math.random.Random; +import net.minecraft.world.event.GameEvent; public class SpectrumBuddingBlock extends BuddingAmethystBlock { @@ -57,7 +58,7 @@ public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random BlockState blockState2 = (block.getDefaultState().with(AmethystClusterBlock.FACING, direction)).with(AmethystClusterBlock.WATERLOGGED, blockState.getFluidState().getFluid() == Fluids.WATER); world.setBlockState(blockPos, blockState2); if (blockState2.isIn(SpectrumBlockTags.CRYSTAL_APOTHECARY_HARVESTABLE)) { - world.emitGameEvent(SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, blockPos); + world.emitGameEvent(SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, blockPos, GameEvent.Emitter.of(world.getBlockState(pos))); } } } diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventListener.java b/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventListener.java deleted file mode 100644 index 6e33d27980..0000000000 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventListener.java +++ /dev/null @@ -1,102 +0,0 @@ -package de.dafuqs.spectrum.events.listeners; - -import de.dafuqs.spectrum.networking.SpectrumS2CPacketSender; -import de.dafuqs.spectrum.particle.effect.BlockPosEventTransfer; -import net.minecraft.entity.Entity; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.event.GameEvent; -import net.minecraft.world.event.PositionSource; -import net.minecraft.world.event.listener.GameEventListener; -import org.jetbrains.annotations.Nullable; - -import java.util.Optional; - -public class BlockPosEventListener implements GameEventListener { - - protected final PositionSource positionSource; - protected final int range; - protected final BlockPosEventListener.Callback callback; - protected Optional event = Optional.empty(); - - protected BlockPos eventSourceBlockPos; - protected int distance; - protected int delay = 0; - - public BlockPosEventListener(PositionSource positionSource, int range, BlockPosEventListener.Callback listener) { - this.positionSource = positionSource; - this.range = range; - this.callback = listener; - } - - public void tick(World world) { - if (this.event.isPresent()) { - --this.delay; - if (this.delay <= 0) { - this.delay = 0; - this.callback.accept(world, this, this.event.get(), this.distance); - this.event = Optional.empty(); - } - } - } - - public PositionSource getPositionSource() { - return this.positionSource; - } - - public int getRange() { - return this.range; - } - - public boolean listen(World world, GameEvent event, @Nullable Entity entity, BlockPos pos) { - if (!this.shouldActivate(event, entity)) { - return false; - } else { - Optional optional = this.positionSource.getPos(world); - if (optional.isEmpty()) { - return false; - } else { - BlockPos blockPos = optional.get(); - this.eventSourceBlockPos = new BlockPos(pos.getX(), pos.getY(), pos.getZ()); // copy - if (!this.callback.accepts(world, this, pos, event, entity)) { - return false; - } else { - this.listen(world, event, pos, blockPos); - return true; - } - } - } - } - - boolean shouldActivate(GameEvent event, @Nullable Entity entity) { - return true; - } - - private void listen(World world, GameEvent event, BlockPos pos, BlockPos sourcePos) { - this.event = Optional.of(event); - if (world instanceof ServerWorld) { - this.distance = MathHelper.floor(Math.sqrt(pos.getSquaredDistance(sourcePos))); - this.delay = this.distance * 2; - SpectrumS2CPacketSender.sendBlockPosEventTransferPacket((ServerWorld) world, new BlockPosEventTransfer(pos, this.positionSource, this.delay)); - } - } - - public BlockPos getSourceBlockPos() { - return this.eventSourceBlockPos; - } - - public interface Callback { - /** - * Returns whether the callback wants to accept this event. - */ - boolean accepts(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity); - - /** - * Accepts a game event after delay. - */ - void accept(World world, GameEventListener listener, GameEvent event, int distance); - } - -} \ No newline at end of file diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEntityListener.java b/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEntityListener.java deleted file mode 100644 index 733dba6940..0000000000 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEntityListener.java +++ /dev/null @@ -1,107 +0,0 @@ -package de.dafuqs.spectrum.events.listeners; - -import blue.endless.jankson.annotation.Nullable; -import de.dafuqs.spectrum.networking.SpectrumS2CPacketSender; -import de.dafuqs.spectrum.particle.effect.ExperienceTransfer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.ExperienceOrbEntity; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.event.GameEvent; -import net.minecraft.world.event.PositionSource; -import net.minecraft.world.event.listener.GameEventListener; - -import java.util.Optional; - -public class ExperienceOrbEntityListener implements GameEventListener { - - protected final PositionSource positionSource; - protected final int range; - protected final ExperienceOrbEntityListener.Callback callback; - protected Optional event = Optional.empty(); - protected int distance; - protected int delay = 0; - protected ExperienceOrbEntity experienceOrbEntity; - - public ExperienceOrbEntityListener(PositionSource positionSource, int range, ExperienceOrbEntityListener.Callback listener) { - this.positionSource = positionSource; - this.range = range; - this.callback = listener; - } - - public void tick(World world) { - if (this.event.isPresent()) { - --this.delay; - if (this.delay <= 0) { - this.delay = 0; - this.callback.accept(world, this, this.event.get(), this.distance); - this.event = Optional.empty(); - } - } - } - - public PositionSource getPositionSource() { - return this.positionSource; - } - - public int getRange() { - return this.range; - } - - public boolean listen(World world, GameEvent event, @Nullable Entity entity, BlockPos pos) { - if (!this.shouldActivate(event, entity)) { - return false; - } else { - Optional optional = this.positionSource.getPos(world); - if (!optional.isPresent()) { - return false; - } else { - experienceOrbEntity = (ExperienceOrbEntity) entity; - BlockPos blockPos = optional.get(); - if (!this.callback.accepts(world, this, pos, event, entity)) { - return false; - } else { - this.listen(world, event, pos, blockPos); - return true; - } - } - } - } - - boolean shouldActivate(GameEvent event, @Nullable Entity entity) { - if (this.event.isEmpty()) { - if (entity instanceof ExperienceOrbEntity experienceOrbEntity) { - return experienceOrbEntity.isAlive(); - } - } - return false; - } - - private void listen(World world, GameEvent event, BlockPos pos, BlockPos sourcePos) { - this.event = Optional.of(event); - if (world instanceof ServerWorld) { - this.distance = MathHelper.floor(Math.sqrt(pos.getSquaredDistance(sourcePos))); - this.delay = this.distance; - SpectrumS2CPacketSender.sendExperienceOrbTransferPacket((ServerWorld) world, new ExperienceTransfer(pos, this.positionSource, this.delay)); - } - } - - public ExperienceOrbEntity getExperienceOrbEntity() { - return this.experienceOrbEntity; - } - - public interface Callback { - /** - * Returns whether the callback wants to accept this event. - */ - boolean accepts(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity); - - /** - * Accepts a game event after delay. - */ - void accept(World world, GameEventListener listener, GameEvent event, int distance); - } - -} \ No newline at end of file diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityListener.java b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityListener.java deleted file mode 100644 index 476688593f..0000000000 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityListener.java +++ /dev/null @@ -1,107 +0,0 @@ -package de.dafuqs.spectrum.events.listeners; - -import blue.endless.jankson.annotation.Nullable; -import de.dafuqs.spectrum.networking.SpectrumS2CPacketSender; -import de.dafuqs.spectrum.particle.effect.ItemTransfer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.ItemEntity; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.event.GameEvent; -import net.minecraft.world.event.PositionSource; -import net.minecraft.world.event.listener.GameEventListener; - -import java.util.Optional; - -public class ItemEntityListener implements GameEventListener { - - protected final PositionSource positionSource; - protected final int range; - protected final ItemEntityListener.Callback callback; - protected Optional event = Optional.empty(); - protected int distance; - protected int delay = 0; - protected ItemEntity itemEntity; - - public ItemEntityListener(PositionSource positionSource, int range, ItemEntityListener.Callback listener) { - this.positionSource = positionSource; - this.range = range; - this.callback = listener; - } - - public void tick(World world) { - if (this.event.isPresent()) { - --this.delay; - if (this.delay <= 0) { - this.delay = 0; - this.callback.accept(world, this, this.event.get(), this.distance); - this.event = Optional.empty(); - } - } - } - - public PositionSource getPositionSource() { - return this.positionSource; - } - - public int getRange() { - return this.range; - } - - public boolean listen(World world, GameEvent event, @Nullable Entity entity, BlockPos pos) { - if (!this.shouldActivate(event, entity)) { - return false; - } else { - Optional optional = this.positionSource.getPos(world); - if (!optional.isPresent()) { - return false; - } else { - itemEntity = (ItemEntity) entity; - BlockPos blockPos = optional.get(); - if (!this.callback.accepts(world, this, pos, event, entity)) { - return false; - } else { - this.listen(world, event, pos, blockPos); - return true; - } - } - } - } - - boolean shouldActivate(GameEvent event, @Nullable Entity entity) { - if (this.event.isEmpty()) { - if (entity instanceof ItemEntity itemEntity) { - return itemEntity.isAlive() && !itemEntity.getStack().isEmpty(); - } - } - return false; - } - - private void listen(World world, GameEvent event, BlockPos pos, BlockPos sourcePos) { - this.event = Optional.of(event); - if (world instanceof ServerWorld) { - this.distance = MathHelper.floor(Math.sqrt(pos.getSquaredDistance(sourcePos))); - this.delay = this.distance; - SpectrumS2CPacketSender.sendItemTransferPacket((ServerWorld) world, new ItemTransfer(pos, this.positionSource, this.delay)); - } - } - - public ItemEntity getItemEntity() { - return this.itemEntity; - } - - public interface Callback { - /** - * Returns whether the callback wants to accept this event. - */ - boolean accepts(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity); - - /** - * Accepts a game event after delay. - */ - void accept(World world, GameEventListener listener, GameEvent event, int distance); - } - -} \ No newline at end of file diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalListener.java b/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalListener.java deleted file mode 100644 index 18710594c1..0000000000 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalListener.java +++ /dev/null @@ -1,97 +0,0 @@ -package de.dafuqs.spectrum.events.listeners; - -import blue.endless.jankson.annotation.Nullable; -import de.dafuqs.spectrum.events.RedstoneTransferGameEvent; -import de.dafuqs.spectrum.networking.SpectrumS2CPacketSender; -import de.dafuqs.spectrum.particle.effect.WirelessRedstoneTransmission; -import net.minecraft.entity.Entity; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.event.GameEvent; -import net.minecraft.world.event.PositionSource; -import net.minecraft.world.event.listener.GameEventListener; - -import java.util.Optional; - -public class WirelessRedstoneSignalListener implements GameEventListener { - - protected final PositionSource positionSource; - protected final int range; - protected final WirelessRedstoneSignalListener.Callback callback; - protected Optional event = Optional.empty(); - protected int distance; - protected int delay = 0; - - public WirelessRedstoneSignalListener(PositionSource positionSource, int range, WirelessRedstoneSignalListener.Callback listener) { - this.positionSource = positionSource; - this.range = range; - this.callback = listener; - } - - public void tick(World world) { - if (this.event.isPresent()) { - --this.delay; - if (this.delay <= 0) { - this.delay = 0; - this.callback.accept(world, this, this.event.get(), this.distance); - this.event = Optional.empty(); - } - } - } - - public PositionSource getPositionSource() { - return this.positionSource; - } - - public int getRange() { - return this.range; - } - - @Override - public boolean listen(World world, GameEvent event, @Nullable Entity entity, BlockPos pos) { - if (!this.shouldActivate(event, entity)) { - return false; - } else { - Optional optional = this.positionSource.getPos(world); - if (optional.isEmpty()) { - return false; - } else { - BlockPos blockPos = optional.get(); - if (!this.callback.accepts(world, this, pos, event, entity)) { - return false; - } else { - this.listen(world, event, pos, blockPos); - return true; - } - } - } - } - - private boolean shouldActivate(GameEvent event, @Nullable Entity entity) { - return (this.event.isEmpty() && event instanceof RedstoneTransferGameEvent); - } - - private void listen(World world, GameEvent event, BlockPos pos, BlockPos sourcePos) { - this.event = Optional.of(event); - if (world instanceof ServerWorld) { - this.distance = MathHelper.floor(Math.sqrt(pos.getSquaredDistance(sourcePos))); - this.delay = this.distance; - SpectrumS2CPacketSender.sendWirelessRedstonePacket((ServerWorld) world, new WirelessRedstoneTransmission(pos, this.positionSource, this.delay)); - } - } - - public interface Callback { - /** - * Returns whether the callback wants to accept this event. - */ - boolean accepts(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity); - - /** - * Accepts a game event after delay. - */ - void accept(World world, GameEventListener listener, GameEvent event, int distance); - } - -} \ No newline at end of file diff --git a/src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java b/src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java index 77e14f3beb..5a10f09e1b 100644 --- a/src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java +++ b/src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java @@ -30,7 +30,7 @@ public static void fillTriangle(MatrixStack matrices, int p1x, int p1y, int p2x, builder.vertex(matrix, p2x, p2y, 0F).color(red, green, blue, alpha).next(); builder.vertex(matrix, p3x, p3y, 0F).color(red, green, blue, alpha).next(); builder.end(); - BufferRenderer.draw(builder); + BufferRenderer.drawWithShader(builder.end()); // TODO: test RenderSystem.enableTexture(); RenderSystem.disableBlend(); } @@ -55,7 +55,7 @@ public static void fillQuad(MatrixStack matrices, int x, int y, int height, int builder.vertex(matrix, x+width, y+height, 0F).color(red, green, blue, alpha).next(); builder.vertex(matrix, x+width, y, 0F).color(red, green, blue, alpha).next(); builder.end(); - BufferRenderer.draw(builder); + BufferRenderer.drawWithShader(builder.end()); // TODO: test RenderSystem.enableTexture(); RenderSystem.disableBlend(); } diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java index 893569c099..3ff1e1f656 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java @@ -123,7 +123,7 @@ public ItemStack finishUsing(ItemStack itemStack, World world, LivingEntity user } else { // Nothing stored => Store current position setTeleportTargetPos(itemStack, playerEntity.getEntityWorld(), playerEntity.getPos()); - playerEntity.networkHandler.sendPacket(new PlaySoundIdS2CPacket(SpectrumSoundEvents.ENDER_SPLICE_BOUND.getId(), SoundCategory.PLAYERS, playerEntity.getPos(), 1.0F, 1.0F)); + world.playSound(null, playerEntity.getBlockPos(), SpectrumSoundEvents.ENDER_SPLICE_BOUND, SoundCategory.PLAYERS, 1.0F, 1.0F); // TODO: test } } playerEntity.incrementStat(Stats.USED.getOrCreateStat(this)); diff --git a/src/main/java/de/dafuqs/spectrum/mixin/BuddingAmethystBlockMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/BuddingAmethystBlockMixin.java index 131f004931..dd329c17f8 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/BuddingAmethystBlockMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/BuddingAmethystBlockMixin.java @@ -8,6 +8,7 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; +import net.minecraft.world.event.GameEvent; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -24,7 +25,7 @@ public class BuddingAmethystBlockMixin { locals = LocalCapture.CAPTURE_FAILHARD) public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random, CallbackInfo ci, Direction direction, BlockPos offsetPos, BlockState originalOffsetState, Block blockToGrow, BlockState blockStateToGrow) { if (blockStateToGrow.isIn(SpectrumBlockTags.CRYSTAL_APOTHECARY_HARVESTABLE)) { - world.emitGameEvent(SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, offsetPos); + world.emitGameEvent(SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, offsetPos, GameEvent.Emitter.of(world.getBlockState(pos))); } } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/client/BlockOverlayRendererMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/client/BlockOverlayRendererMixin.java index 215484b07c..05f87d3913 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/client/BlockOverlayRendererMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/client/BlockOverlayRendererMixin.java @@ -56,7 +56,7 @@ private static void renderOverlay(MinecraftClient client, MatrixStack matrixStac bufferBuilder.vertex(matrix4f, 1.0F, 1.0F, -0.5F).texture(0.0F + m, 0.0F + n).next(); bufferBuilder.vertex(matrix4f, -1.0F, 1.0F, -0.5F).texture(4.0F + m, 0.0F + n).next(); bufferBuilder.end(); - BufferRenderer.draw(bufferBuilder); + BufferRenderer.drawWithShader(bufferBuilder.end()); // TODO: test RenderSystem.disableBlend(); } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/client/ClientWorldReverbMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/client/ClientWorldReverbMixin.java index a076cd7c5a..25b7ddb975 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/client/ClientWorldReverbMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/client/ClientWorldReverbMixin.java @@ -21,7 +21,7 @@ public class ClientWorldReverbMixin { @Inject(method = "", at = @At("TAIL")) private void spectrum$init(ClientPlayNetworkHandler netHandler, ClientWorld.Properties properties, RegistryKey registryRef, RegistryEntry registryEntry, int loadDistance, int simulationDistance, Supplier profiler, WorldRenderer worldRenderer, boolean debugWorld, long seed, CallbackInfo ci) { ClientWorld clientWorld = (ClientWorld) (Object) this; - if(clientWorld.getDimension().getEffects().equals(SpectrumCommon.locate("deeper_down")) && FabricLoader.getInstance().isModLoaded("limlib")) { + if(clientWorld.getDimension().effects().equals(SpectrumCommon.locate("deeper_down")) && FabricLoader.getInstance().isModLoaded("limlib")) { LiminalDimensionReverb.setReverbForClientDimension(clientWorld); } } diff --git a/src/main/java/de/dafuqs/spectrum/particle/client/ExperienceTransferParticle.java b/src/main/java/de/dafuqs/spectrum/particle/client/ExperienceTransferParticle.java index 0161bc7794..93e533d977 100644 --- a/src/main/java/de/dafuqs/spectrum/particle/client/ExperienceTransferParticle.java +++ b/src/main/java/de/dafuqs/spectrum/particle/client/ExperienceTransferParticle.java @@ -85,18 +85,18 @@ public ParticleTextureSheet getType() { public void tick() { super.tick(); - Optional optional = this.experienceTransfer.getDestination().getPos(this.world); - if (!optional.isPresent()) { + Optional optional = this.experienceTransfer.getDestination().getPos(this.world); + if (optional.isEmpty()) { this.markDead(); } else { double d = (double) this.age / (double) this.maxAge; BlockPos blockPos = this.experienceTransfer.getOrigin(); - BlockPos blockPos2 = optional.get(); - this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, (double) blockPos2.getX() + 0.5D); - this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, (double) blockPos2.getY() + 0.5D); - this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, (double) blockPos2.getZ() + 0.5D); + Vec3d blockPos2 = optional.get(); + this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, blockPos2.getX() + 0.5D); + this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, blockPos2.getY() + 0.5D); + this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, blockPos2.getZ() + 0.5D); this.field_28248 = this.field_28250; - this.field_28250 = (float) MathHelper.atan2(this.x - (double) blockPos2.getX(), this.z - (double) blockPos2.getZ()); + this.field_28250 = (float) MathHelper.atan2(this.x - blockPos2.getX(), this.z - blockPos2.getZ()); } } diff --git a/src/main/java/de/dafuqs/spectrum/particle/client/ItemTransferParticle.java b/src/main/java/de/dafuqs/spectrum/particle/client/ItemTransferParticle.java index 6ca250ac47..de4019f2f0 100644 --- a/src/main/java/de/dafuqs/spectrum/particle/client/ItemTransferParticle.java +++ b/src/main/java/de/dafuqs/spectrum/particle/client/ItemTransferParticle.java @@ -85,18 +85,18 @@ public ParticleTextureSheet getType() { public void tick() { super.tick(); - Optional optional = this.itemTransfer.getDestination().getPos(this.world); - if (!optional.isPresent()) { + Optional optional = this.itemTransfer.getDestination().getPos(this.world); + if (optional.isEmpty()) { this.markDead(); } else { double d = (double) this.age / (double) this.maxAge; BlockPos blockPos = this.itemTransfer.getOrigin(); - BlockPos blockPos2 = optional.get(); - this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, (double) blockPos2.getX() + 0.5D); - this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, (double) blockPos2.getY() + 0.5D); - this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, (double) blockPos2.getZ() + 0.5D); + Vec3d blockPos2 = optional.get(); + this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, blockPos2.getX() + 0.5D); + this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, blockPos2.getY() + 0.5D); + this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, blockPos2.getZ() + 0.5D); this.field_28248 = this.field_28250; - this.field_28250 = (float) MathHelper.atan2(this.x - (double) blockPos2.getX(), this.z - (double) blockPos2.getZ()); + this.field_28250 = (float) MathHelper.atan2(this.x - blockPos2.getX(), this.z - blockPos2.getZ()); } } diff --git a/src/main/java/de/dafuqs/spectrum/particle/client/TransphereParticle.java b/src/main/java/de/dafuqs/spectrum/particle/client/TransphereParticle.java index 49a6d718e9..afb52c7541 100644 --- a/src/main/java/de/dafuqs/spectrum/particle/client/TransphereParticle.java +++ b/src/main/java/de/dafuqs/spectrum/particle/client/TransphereParticle.java @@ -97,18 +97,18 @@ public ParticleTextureSheet getType() { public void tick() { super.tick(); - Optional optional = this.transphere.getDestination().getPos(this.world); + Optional optional = this.transphere.getDestination().getPos(this.world); if (optional.isEmpty()) { this.markDead(); } else { double d = (double) this.age / (double) this.maxAge; BlockPos blockPos = this.transphere.getOrigin(); - BlockPos blockPos2 = optional.get(); - this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, (double) blockPos2.getX() + 0.5D); - this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, (double) blockPos2.getY() + 0.5D); - this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, (double) blockPos2.getZ() + 0.5D); + Vec3d blockPos2 = optional.get(); + this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, blockPos2.getX() + 0.5D); + this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, blockPos2.getY() + 0.5D); + this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, blockPos2.getZ() + 0.5D); this.field_28248 = this.field_28250; - this.field_28250 = (float) MathHelper.atan2(this.x - (double) blockPos2.getX(), this.z - (double) blockPos2.getZ()); + this.field_28250 = (float) MathHelper.atan2(this.x - blockPos2.getX(), this.z - blockPos2.getZ()); } } diff --git a/src/main/java/de/dafuqs/spectrum/particle/client/WirelessRedstoneTransmissionParticle.java b/src/main/java/de/dafuqs/spectrum/particle/client/WirelessRedstoneTransmissionParticle.java index f9e93903a6..4c040e3214 100644 --- a/src/main/java/de/dafuqs/spectrum/particle/client/WirelessRedstoneTransmissionParticle.java +++ b/src/main/java/de/dafuqs/spectrum/particle/client/WirelessRedstoneTransmissionParticle.java @@ -85,18 +85,18 @@ public ParticleTextureSheet getType() { public void tick() { super.tick(); - Optional optional = this.wirelessRedstoneTransmission.getDestination().getPos(this.world); - if (!optional.isPresent()) { + Optional optional = this.wirelessRedstoneTransmission.getDestination().getPos(this.world); + if (optional.isEmpty()) { this.markDead(); } else { double d = (double) this.age / (double) this.maxAge; BlockPos blockPos = this.wirelessRedstoneTransmission.getOrigin(); - BlockPos blockPos2 = optional.get(); - this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, (double) blockPos2.getX() + 0.5D); - this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, (double) blockPos2.getY() + 0.5D); - this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, (double) blockPos2.getZ() + 0.5D); + Vec3d blockPos2 = optional.get(); + this.x = MathHelper.lerp(d, (double) blockPos.getX() + 0.5D, blockPos2.getX() + 0.5D); + this.y = MathHelper.lerp(d, (double) blockPos.getY() + 0.5D, blockPos2.getY() + 0.5D); + this.z = MathHelper.lerp(d, (double) blockPos.getZ() + 0.5D, blockPos2.getZ() + 0.5D); this.field_28248 = this.field_28250; - this.field_28250 = (float) MathHelper.atan2(this.x - (double) blockPos2.getX(), this.z - (double) blockPos2.getZ()); + this.field_28250 = (float) MathHelper.atan2(this.x - blockPos2.getX(), this.z - blockPos2.getZ()); } } From 451ae8d9c7166f7967e48f47f50d2ed84194b79e Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Sun, 14 Aug 2022 21:49:57 +0200 Subject: [PATCH 0009/1051] more porting work --- .../energy/CrystalApothecaryBlockEntity.java | 3 ++- .../events/listeners/BlockPosEventQueue.java | 8 +++++--- .../spectrum/events/listeners/EventQueue.java | 19 ++++++++++--------- .../listeners/ExperienceOrbEventQueue.java | 7 ++++--- .../ItemAndExperienceEventQueue.java | 10 ++++++---- .../listeners/ItemEntityEventQueue.java | 7 ++++--- .../WirelessRedstoneSignalEventQueue.java | 7 ++++--- 7 files changed, 35 insertions(+), 26 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java index ae0f0f21f5..2d76ab2e47 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java @@ -45,6 +45,7 @@ import net.minecraft.world.event.listener.GameEventListener; import net.minecraft.util.math.random.Random; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.HashMap; @@ -247,7 +248,7 @@ protected ScreenHandler createScreenHandler(int syncId, PlayerInventory playerIn } @Override - public boolean canAcceptEvent(World world, GameEventListener listener, BlockPos pos, GameEvent event, Entity entity, BlockPos sourcePos) { + public boolean canAcceptEvent(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity, Vec3d sourcePos) { return event == SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN && !this.listenerPaused; } diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventQueue.java index 92cbe8152a..f4c55f2055 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/BlockPosEventQueue.java @@ -2,6 +2,7 @@ import de.dafuqs.spectrum.networking.SpectrumS2CPacketSender; import de.dafuqs.spectrum.particle.effect.BlockPosEventTransfer; +import net.fabricmc.loader.impl.lib.sat4j.core.Vec; import net.minecraft.entity.Entity; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; @@ -18,12 +19,13 @@ public BlockPosEventQueue(PositionSource positionSource, int range, Callback lis } @Override - public void acceptEvent(World world, BlockPos pos, GameEvent event, Entity entity, Vec3d sourcePos) { + public void acceptEvent(World world, GameEvent.Message event, Vec3d sourcePos) { if (world instanceof ServerWorld) { - EventEntry eventEntry = new EventEntry(event, new BlockPos(pos.getX(), pos.getY(), pos.getZ()), MathHelper.floor(Math.sqrt(pos.getSquaredDistance(sourcePos)))); // copy + Vec3d emitterPos = event.getEmitterPos(); + EventEntry eventEntry = new EventEntry(event.getEvent(), new BlockPos(emitterPos.x, emitterPos.y, emitterPos.z), MathHelper.floor(event.getEmitterPos().distanceTo(sourcePos))); int delay = eventEntry.distance * 2; this.schedule(eventEntry, delay); - SpectrumS2CPacketSender.sendBlockPosEventTransferPacket((ServerWorld) world, new BlockPosEventTransfer(pos, this.positionSource, delay)); + SpectrumS2CPacketSender.sendBlockPosEventTransferPacket((ServerWorld) world, new BlockPosEventTransfer(emitterPos, this.positionSource, delay)); } } diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/EventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/EventQueue.java index 131e253e80..0efe8403be 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/EventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/EventQueue.java @@ -1,6 +1,7 @@ package de.dafuqs.spectrum.events.listeners; import net.minecraft.entity.Entity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; @@ -12,15 +13,16 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; +import java.util.Set; public abstract class EventQueue implements GameEventListener { protected final PositionSource positionSource; protected final int range; - protected final EventQueue.Callback callback; + protected final EventQueue.Callback callback; private final Map eventQueue; - public EventQueue(PositionSource positionSource, int range, EventQueue.Callback listener) { + public EventQueue(PositionSource positionSource, int range, EventQueue.Callback listener) { this.positionSource = positionSource; this.range = range; this.callback = listener; @@ -29,8 +31,7 @@ public EventQueue(PositionSource positionSource, int range, EventQueue.Callback public void tick(World world) { if (!eventQueue.isEmpty()) { - D[] keys = (D[]) eventQueue.keySet().toArray(); - for (D key : keys) { + for (D key : eventQueue.keySet()) { Integer tickCounter = eventQueue.get(key); if (tickCounter >= 1) { eventQueue.put(key, tickCounter - 1); @@ -51,21 +52,21 @@ public int getRange() { } @Override - public boolean listen(World world, GameEvent event, @Nullable Entity entity, BlockPos pos) { + public boolean listen(ServerWorld world, GameEvent.Message event) { Optional positionSourcePosOptional = this.positionSource.getPos(world); if (positionSourcePosOptional.isEmpty()) { return false; } else { - if (!this.callback.canAcceptEvent(world, this, pos, event, entity, positionSourcePosOptional.get())) { + if (!this.callback.canAcceptEvent(world, this, event, positionSourcePosOptional.get())) { return false; } else { - this.acceptEvent(world, pos, event, entity, positionSourcePosOptional.get()); + this.acceptEvent(world, event, positionSourcePosOptional.get()); return true; } } } - protected abstract void acceptEvent(World world, BlockPos pos, GameEvent event, @Nullable Entity entity, Vec3d sourcePos); + protected abstract void acceptEvent(World world, GameEvent.Message event, Vec3d sourcePos); protected void schedule(D object, int delay) { this.eventQueue.put(object, delay); @@ -75,7 +76,7 @@ public interface Callback { /** * Returns whether the callback wants to accept this event. */ - boolean canAcceptEvent(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity, Vec3d sourcePos); + boolean canAcceptEvent(World world, GameEventListener listener, GameEvent.Message message, Vec3d sourcePos); /** * Accepts a game event after delay. diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEventQueue.java index 6a543738c4..9fc4e9d46a 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/ExperienceOrbEventQueue.java @@ -19,9 +19,10 @@ public ExperienceOrbEventQueue(PositionSource positionSource, int range, Callbac } @Override - public void acceptEvent(World world, BlockPos pos, GameEvent event, Entity entity, Vec3d sourcePos) { - if (world instanceof ServerWorld && entity instanceof ExperienceOrbEntity experienceOrbEntity) { - EventEntry eventEntry = new EventEntry(event, experienceOrbEntity, MathHelper.floor(Math.sqrt(pos.getSquaredDistance(sourcePos)))); // copy + public void acceptEvent(World world, GameEvent.Message event, Vec3d sourcePos) { + if (world instanceof ServerWorld && event.getEmitter().sourceEntity() instanceof ExperienceOrbEntity experienceOrbEntity) { + Vec3d pos = event.getEmitterPos(); + EventEntry eventEntry = new EventEntry(event.getEvent(), experienceOrbEntity, MathHelper.floor(pos.distanceTo(sourcePos))); int delay = eventEntry.distance * 2; this.schedule(eventEntry, delay); SpectrumS2CPacketSender.sendExperienceOrbTransferPacket((ServerWorld) world, new ExperienceTransfer(pos, this.positionSource, delay)); diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemAndExperienceEventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemAndExperienceEventQueue.java index 59fec9dacf..89bc0ae233 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemAndExperienceEventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemAndExperienceEventQueue.java @@ -4,6 +4,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.ExperienceOrbEntity; import net.minecraft.entity.ItemEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.event.GameEvent; @@ -39,14 +40,15 @@ public int getRange() { } @Override - public boolean listen(World world, GameEvent event, @Nullable Entity entity, BlockPos pos) { - if (event != SpectrumGameEvents.ENTITY_SPAWNED) { + public boolean listen(ServerWorld world, GameEvent.Message event) { + if (event.getEvent() != SpectrumGameEvents.ENTITY_SPAWNED) { return false; } - if (entity instanceof ItemEntity && itemQueue.listen(world, event, entity, pos)) { + Entity entity = event.getEmitter().sourceEntity(); + if (entity instanceof ItemEntity && itemQueue.listen(world, event)) { return true; } - return entity instanceof ExperienceOrbEntity && experienceQueue.listen(world, event, entity, pos); + return entity instanceof ExperienceOrbEntity && experienceQueue.listen(world, event); } public void tick(World world) { diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java index a501ebf89b..bc33fdcbf8 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java @@ -19,9 +19,10 @@ public ItemEntityEventQueue(PositionSource positionSource, int range, Callback l } @Override - public void acceptEvent(World world, BlockPos pos, GameEvent event, Entity entity, Vec3d sourcePos) { - if (world instanceof ServerWorld && entity instanceof ItemEntity itemEntity) { - EventEntry eventEntry = new EventEntry(event, itemEntity, MathHelper.floor(Math.sqrt(pos.getSquaredDistance(sourcePos)))); + public void acceptEvent(World world, GameEvent.Message event, Vec3d sourcePos) { + if (world instanceof ServerWorld && event.getEmitter().sourceEntity() instanceof ItemEntity itemEntity) { + Vec3d pos = event.getEmitterPos(); + EventEntry eventEntry = new EventEntry(event.getEvent(), itemEntity, MathHelper.floor(pos.distanceTo(sourcePos))); int delay = eventEntry.distance * 2; this.schedule(eventEntry, delay); SpectrumS2CPacketSender.sendItemTransferPacket((ServerWorld) world, new ItemTransfer(pos, this.positionSource, delay)); diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalEventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalEventQueue.java index ca7e6826fe..1a8ad5c8d3 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalEventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/WirelessRedstoneSignalEventQueue.java @@ -19,9 +19,10 @@ public WirelessRedstoneSignalEventQueue(PositionSource positionSource, int range } @Override - public void acceptEvent(World world, BlockPos pos, GameEvent event, Entity entity, Vec3d sourcePos) { - if (world instanceof ServerWorld && event instanceof RedstoneTransferGameEvent redstoneTransferEvent) { - WirelessRedstoneSignalEventQueue.EventEntry eventEntry = new WirelessRedstoneSignalEventQueue.EventEntry(redstoneTransferEvent, MathHelper.floor(Math.sqrt(pos.getSquaredDistance(sourcePos)))); // copy + public void acceptEvent(World world, GameEvent.Message event, Vec3d sourcePos) { + if (world instanceof ServerWorld && event.getEvent() instanceof RedstoneTransferGameEvent redstoneTransferEvent) { + Vec3d pos = event.getEmitterPos(); + WirelessRedstoneSignalEventQueue.EventEntry eventEntry = new WirelessRedstoneSignalEventQueue.EventEntry(redstoneTransferEvent, MathHelper.floor(pos.distanceTo(sourcePos))); int delay = eventEntry.distance * 2; this.schedule(eventEntry, delay); SpectrumS2CPacketSender.sendWirelessRedstonePacket((ServerWorld) world, new WirelessRedstoneTransmission(pos, this.positionSource, delay)); From 18c84832b654270dce3511a2536899b14f0c412f Mon Sep 17 00:00:00 2001 From: sudo-CuriousLad Date: Mon, 15 Aug 2022 16:28:52 +0530 Subject: [PATCH 0010/1051] Fixed biome stuff + Changed sound length to random --- .../registries/SpectrumBiomeTags.java | 15 ++++++ .../spectrum/registries/SpectrumItems.java | 5 +- .../worldgen/SpectrumConfiguredFeatures.java | 6 ++- .../biome/has_structure/ancient_ruins.json | 46 +++++++++++++++++++ 4 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 src/main/java/de/dafuqs/spectrum/registries/SpectrumBiomeTags.java create mode 100644 src/main/resources/data/c/tags/worldgen/biome/has_structure/ancient_ruins.json diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBiomeTags.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBiomeTags.java new file mode 100644 index 0000000000..0ee08134c8 --- /dev/null +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBiomeTags.java @@ -0,0 +1,15 @@ +package de.dafuqs.spectrum.registries; + +import de.dafuqs.spectrum.SpectrumCommon; +import net.minecraft.tag.TagKey; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; + +public class SpectrumBiomeTags { + public static final TagKey HAS_ANCIENT_RUINS_BIOMES = getReference("has_structure/ancient_ruins"); + + private static TagKey getReference(String id) { + return TagKey.of(Registry.BIOME_KEY, new Identifier(SpectrumCommon.MOD_ID, id)); + } +} diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java index 9ac3f812d4..56e373d130 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java @@ -29,6 +29,7 @@ import net.minecraft.util.DyeColor; import net.minecraft.util.Identifier; import net.minecraft.util.Rarity; +import net.minecraft.util.math.random.Random; import net.minecraft.util.registry.Registry; import java.util.Map; @@ -302,8 +303,8 @@ public Map getDefaultEnchantments() { public static final Item LUCID_WHITE_CATKIN = new CatkinItem(BuiltinGemstoneColor.WHITE, true, resourcesUncommonItemSettings); // Misc - public static final Item MUSIC_DISC_SPECTRUM_THEME = new SpectrumMusicDiscItem(1, SpectrumSoundEvents.SPECTRUM_THEME, toolRareItemSettingsSingle, 100); - public static final Item MUSIC_DISC_DIMENSION_THEME = new SpectrumMusicDiscItem(2, SpectrumSoundEvents.BOSS_THEME, toolRareItemSettingsSingle, 100); + public static final Item MUSIC_DISC_SPECTRUM_THEME = new SpectrumMusicDiscItem(1, SpectrumSoundEvents.SPECTRUM_THEME, toolRareItemSettingsSingle, new Random()); + public static final Item MUSIC_DISC_DIMENSION_THEME = new SpectrumMusicDiscItem(2, SpectrumSoundEvents.BOSS_THEME, toolRareItemSettingsSingle, new Random()); public static final Item SPAWNER = new SpectrumMobSpawnerItem(generalEpicItemSettingsSingle); public static final Item GLISTERING_MELON_SEEDS = new AliasedBlockItem(SpectrumBlocks.GLISTERING_MELON_STEM, toolItemSettings); public static final Item INVISIBLE_ITEM_FRAME = new InvisibleItemFrameItem(SpectrumEntityTypes.INVISIBLE_ITEM_FRAME, toolItemSettings); diff --git a/src/main/java/de/dafuqs/spectrum/worldgen/SpectrumConfiguredFeatures.java b/src/main/java/de/dafuqs/spectrum/worldgen/SpectrumConfiguredFeatures.java index 1754d4d402..75224b49e7 100644 --- a/src/main/java/de/dafuqs/spectrum/worldgen/SpectrumConfiguredFeatures.java +++ b/src/main/java/de/dafuqs/spectrum/worldgen/SpectrumConfiguredFeatures.java @@ -16,6 +16,7 @@ import net.minecraft.structure.rule.BlockMatchRuleTest; import net.minecraft.structure.rule.RuleTest; import net.minecraft.tag.BlockTags; +import net.minecraft.tag.TagKey; import net.minecraft.util.DyeColor; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DataPool; @@ -50,6 +51,7 @@ import java.util.function.Predicate; import static de.dafuqs.spectrum.helpers.WorldgenHelper.*; +import static de.dafuqs.spectrum.registries.SpectrumBiomeTags.*; public class SpectrumConfiguredFeatures { @@ -196,8 +198,8 @@ private static void registerColoredTrees() { BiomePlacementModifier.of() ); - Predicate treeBiomes = BiomeSelectors.foundInOverworld(); - + Predicate treeBiomes = BiomeSelectors.tag(HAS_ANCIENT_RUINS_BIOMES); + BiomeModifications.addFeature(treeBiomes, GenerationStep.Feature.VEGETAL_DECORATION, RegistryKey.of(Registry.PLACED_FEATURE_KEY, randomColoredTreesFeatureIdentifier)); } diff --git a/src/main/resources/data/c/tags/worldgen/biome/has_structure/ancient_ruins.json b/src/main/resources/data/c/tags/worldgen/biome/has_structure/ancient_ruins.json new file mode 100644 index 0000000000..0537392e0b --- /dev/null +++ b/src/main/resources/data/c/tags/worldgen/biome/has_structure/ancient_ruins.json @@ -0,0 +1,46 @@ +{ + "replace": false, + "values": [ + { + "id": "#minecraft:has_structure/village_plains", + "replace": "false" + }, + { + "id": "#minecraft:is_hills", + "replace": "false" + }, + { + "id": "#minecraft:is_jungle", + "replace": "false" + }, + { + "id": "#minecraft:is_forest", + "replace": "false" + }, + { + "id": "#minecraft:allows_surface_slime_spawns", + "replace": "false" + }, + { + "id": "#minecraft:is_badlands", + "replace": "false" + }, + { + "id": "#minecraft:is_mountain", + "replace": "false" + }, + { + "id": "#minecraft:is_hills", + "replace": "false" + }, + "minecraft:desert", + { + "id": "#minecraft:is_savanna", + "replace": "false" + }, + { + "id": "#minecraft:is_taiga", + "replace": "false" + } + ] +} \ No newline at end of file From 13bf55cf34b4cf637de31e28f9832a4ec2cd4c05 Mon Sep 17 00:00:00 2001 From: sudo-CuriousLad Date: Mon, 15 Aug 2022 16:47:14 +0530 Subject: [PATCH 0011/1051] Did some event stuff, only one error left! --- .../spectrum/blocks/chests/SuckingChestBlockEntity.java | 3 ++- .../blocks/energy/CrystalApothecaryBlockEntity.java | 6 +++--- .../blocks/redstone/RedstoneWirelessBlockEntity.java | 5 +++-- .../spectrum/events/listeners/ItemEntityEventQueue.java | 3 +-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/blocks/chests/SuckingChestBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/chests/SuckingChestBlockEntity.java index dfc0d7d93a..ea67f0049f 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/chests/SuckingChestBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/chests/SuckingChestBlockEntity.java @@ -131,10 +131,11 @@ public ItemAndExperienceEventQueue getEventListener() { } @Override - public boolean canAcceptEvent(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity, BlockPos sourcePos) { + public boolean canAcceptEvent(World world, GameEventListener listener, GameEvent.Message event, Vec3d sourcePos) { if (SpectrumChestBlock.isChestBlocked(world, this.pos)) { return false; } + Entity entity = event.getEmitter().sourceEntity(); if (entity instanceof ItemEntity) { return true; } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java index 2d76ab2e47..2a0395c7b4 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java @@ -248,8 +248,8 @@ protected ScreenHandler createScreenHandler(int syncId, PlayerInventory playerIn } @Override - public boolean canAcceptEvent(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity, Vec3d sourcePos) { - return event == SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN && !this.listenerPaused; + public boolean canAcceptEvent(World world, GameEventListener listener, GameEvent.Message event, Vec3d sourcePos) { + return event.getEvent() == SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN && !this.listenerPaused; } @Override @@ -316,7 +316,7 @@ public void harvestExistingClusters() { if (world instanceof ServerWorld) { for (BlockPos currPos : BlockPos.iterateOutwards(this.pos, RANGE, RANGE, RANGE)) { if (world.getBlockState(currPos).isIn(SpectrumBlockTags.CRYSTAL_APOTHECARY_HARVESTABLE)) { - this.blockPosEventTransferListener.acceptEvent(world, currPos, SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, null, Vec3d.ofCenter(this.pos)); + this.blockPosEventTransferListener.acceptEvent(world, SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, Vec3d.ofCenter(this.pos)); } } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlockEntity.java index a32e2e2c04..d81466ddc3 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlockEntity.java @@ -12,6 +12,7 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.util.DyeColor; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.world.event.BlockPositionSource; import net.minecraft.world.event.GameEvent; @@ -77,8 +78,8 @@ public int getRange() { } @Override - public boolean canAcceptEvent(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity, BlockPos sourcePos) { - if (event instanceof RedstoneTransferGameEvent redstoneTransferGameEvent) { + public boolean canAcceptEvent(World world, GameEventListener listener, GameEvent.Message event, Vec3d sourcePos) { + if (event.getEvent() instanceof RedstoneTransferGameEvent redstoneTransferGameEvent) { return !isSender(this.world, this.pos) && redstoneTransferGameEvent.getDyeColor() == getChannel(this.world, this.pos); } return false; diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java index 3710de2010..5256d071a3 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java @@ -31,8 +31,7 @@ public void acceptEvent(World world, GameEvent.Message event, Vec3d sourcePos) { } } - @Override - public boolean listen(ServerWorld world, GameEvent.Message event, @Nullable Entity entity, BlockPos pos) { + public boolean listen(ServerWorld world, GameEvent.Message event, Vec3d pos) { //TODO Need to implement this return false; } From 7b09755dc9a5dffcb4fddd459258e710a5173524 Mon Sep 17 00:00:00 2001 From: sudo-CuriousLad Date: Mon, 15 Aug 2022 17:15:04 +0530 Subject: [PATCH 0012/1051] Did some event stuff, only one error left! --- .../c/tags/worldgen/biome/has_structure/ancient_ruins.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/resources/data/c/tags/worldgen/biome/has_structure/ancient_ruins.json b/src/main/resources/data/c/tags/worldgen/biome/has_structure/ancient_ruins.json index 0537392e0b..ef4ba7f653 100644 --- a/src/main/resources/data/c/tags/worldgen/biome/has_structure/ancient_ruins.json +++ b/src/main/resources/data/c/tags/worldgen/biome/has_structure/ancient_ruins.json @@ -29,10 +29,6 @@ "id": "#minecraft:is_mountain", "replace": "false" }, - { - "id": "#minecraft:is_hills", - "replace": "false" - }, "minecraft:desert", { "id": "#minecraft:is_savanna", From 56afcc380db106239c346093bb6514c8bc687417 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Mon, 15 Aug 2022 18:45:04 +0200 Subject: [PATCH 0013/1051] updated limlib & some code --- build.gradle | 2 +- gradle.properties | 2 + .../chests/SuckingChestBlockEntity.java | 3 +- .../energy/CrystalApothecaryBlockEntity.java | 8 ++-- .../redstone/RedstoneWirelessBlockEntity.java | 7 ++-- .../blocks/spirit_sallow/WindStrength.java | 38 ++++++++++++------- .../LiminalDimensionReverb.java | 6 +-- .../particle/client/WindParticle.java | 2 +- .../dimension_type/deeper_down_type.json | 4 +- .../ancient_ruins.json | 17 --------- .../worldgen/structure/ancient_ruins.json | 24 ++++++++++++ src/main/resources/fabric.mod.json | 5 ++- 12 files changed, 72 insertions(+), 46 deletions(-) delete mode 100644 src/main/resources/data/spectrum/worldgen/configured_structure_feature/ancient_ruins.json create mode 100644 src/main/resources/data/spectrum/worldgen/structure/ancient_ruins.json diff --git a/build.gradle b/build.gradle index 8b96def240..940b0627df 100644 --- a/build.gradle +++ b/build.gradle @@ -114,7 +114,7 @@ dependencies { //modImplementation include("com.github.devs-immortal:Some-Assembly-Required:${project.sar_version}") //modImplementation include("com.github.devs-immortal:Divine-Intervention:${project.divine_intervention_version}") modImplementation include("io.github.ladysnake:satin:${project.satin_version}") - modImplementation("com.github.LudoCrypt:Liminal-Library:5.2.1") + modImplementation("com.github.LudoCrypt:Liminal-Library:${project.liminal_lib_version}") // Soft dependencies: // Descriptions for all Enchantments https://maven.blamejared.com/net/darkhax/enchdesc/ diff --git a/gradle.properties b/gradle.properties index f6d61df58a..6817ba975a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -38,6 +38,8 @@ revelationary_version=1.19-SNAPSHOT programmer_art_injector_version=1.2.1 # https://github.com/JamiesWhiteShirt/reach-entity-attributes reach_entity_attributes_version=2.3.0 +# https://github.com/LudoCrypt/Liminal-Library/ +liminal_lib_version=6.3.1 sar_version=0.4.0-beta1 divine_intervention_version=2.0.0 jello_version=3.2.2+1.18.2 \ No newline at end of file diff --git a/src/main/java/de/dafuqs/spectrum/blocks/chests/SuckingChestBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/chests/SuckingChestBlockEntity.java index dfc0d7d93a..3ef1745eb2 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/chests/SuckingChestBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/chests/SuckingChestBlockEntity.java @@ -131,10 +131,11 @@ public ItemAndExperienceEventQueue getEventListener() { } @Override - public boolean canAcceptEvent(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity, BlockPos sourcePos) { + public boolean canAcceptEvent(World world, GameEventListener listener, GameEvent.Message message, Vec3d sourcePos) { if (SpectrumChestBlock.isChestBlocked(world, this.pos)) { return false; } + Entity entity = message.getEmitter().sourceEntity(); if (entity instanceof ItemEntity) { return true; } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java index 2d76ab2e47..0aa127708d 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/energy/CrystalApothecaryBlockEntity.java @@ -248,8 +248,8 @@ protected ScreenHandler createScreenHandler(int syncId, PlayerInventory playerIn } @Override - public boolean canAcceptEvent(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity, Vec3d sourcePos) { - return event == SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN && !this.listenerPaused; + public boolean canAcceptEvent(World world, GameEventListener listener, GameEvent.Message message, Vec3d sourcePos) { + return message.getEvent() == SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN && !this.listenerPaused; } @Override @@ -313,10 +313,10 @@ public void setOwner(PlayerEntity playerEntity) { } public void harvestExistingClusters() { - if (world instanceof ServerWorld) { + if (world instanceof ServerWorld serverWorld) { for (BlockPos currPos : BlockPos.iterateOutwards(this.pos, RANGE, RANGE, RANGE)) { if (world.getBlockState(currPos).isIn(SpectrumBlockTags.CRYSTAL_APOTHECARY_HARVESTABLE)) { - this.blockPosEventTransferListener.acceptEvent(world, currPos, SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, null, Vec3d.ofCenter(this.pos)); + this.blockPosEventTransferListener.acceptEvent(serverWorld, new GameEvent.Message(SpectrumGameEvents.CRYSTAL_APOTHECARY_HARVESTABLE_GROWN, Vec3d.ofCenter(currPos), GameEvent.Emitter.of(world.getBlockState(currPos)), this.blockPosEventTransferListener, Vec3d.ofCenter(this.pos)), Vec3d.ofCenter(this.pos)); } } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlockEntity.java index 21503a08a4..3b43cfb73b 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/redstone/RedstoneWirelessBlockEntity.java @@ -12,6 +12,7 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.util.DyeColor; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.world.event.BlockPositionSource; import net.minecraft.world.event.GameEvent; @@ -42,7 +43,7 @@ public static void serverTick(@NotNull World world, BlockPos pos, BlockState sta if (isSender(world, pos)) { if (blockEntity.currentSignal != blockEntity.cachedSignal) { blockEntity.currentSignal = blockEntity.cachedSignal; - blockEntity.world.emitGameEvent(SpectrumGameEvents.WIRELESS_REDSTONE_SIGNALS.get(state.get(RedstoneWirelessBlock.CHANNEL)).get(blockEntity.currentSignal), blockEntity.getPos()); + blockEntity.world.emitGameEvent(null, SpectrumGameEvents.WIRELESS_REDSTONE_SIGNALS.get(state.get(RedstoneWirelessBlock.CHANNEL)).get(blockEntity.currentSignal), blockEntity.getPos()); } } else { blockEntity.listener.tick(world); @@ -77,8 +78,8 @@ public int getRange() { } @Override - public boolean canAcceptEvent(World world, GameEventListener listener, BlockPos pos, GameEvent event, @Nullable Entity entity, BlockPos sourcePos) { - if (event instanceof RedstoneTransferGameEvent redstoneTransferGameEvent) { + public boolean canAcceptEvent(World world, GameEventListener listener, GameEvent.Message message, Vec3d sourcePos) { + if (message.getEvent() instanceof RedstoneTransferGameEvent redstoneTransferGameEvent) { return !isSender(this.world, this.pos) && redstoneTransferGameEvent.getDyeColor() == getChannel(this.world, this.pos); } return false; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/WindStrength.java b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/WindStrength.java index c965725d80..357f580e02 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/WindStrength.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/WindStrength.java @@ -1,32 +1,44 @@ package de.dafuqs.spectrum.blocks.spirit_sallow; +import com.google.common.collect.ImmutableList; +import it.unimi.dsi.fastutil.ints.IntRBTreeSet; +import it.unimi.dsi.fastutil.ints.IntSortedSet; import net.minecraft.client.MinecraftClient; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.noise.SimplexNoiseSampler; import net.minecraft.util.math.random.LocalRandom; +import net.minecraft.util.math.random.Random; public class WindStrength { - private static SimplexNoiseSampler samplerX; - private static SimplexNoiseSampler samplerY; - private static SimplexNoiseSampler samplerZ; + private SimplexNoiseSampler[] octaveSamplers = new SimplexNoiseSampler[1]; + private final IntSortedSet octaves = new IntRBTreeSet(ImmutableList.of(-2, -1, 0)); private static long cachedTick; - public Vec3d cachedValue; - public Vec3d getWindStrength(long tick) { - if (samplerX == null) { - samplerX = new SimplexNoiseSampler(new LocalRandom(0)); - samplerY = new SimplexNoiseSampler(new LocalRandom(1)); - samplerZ = new SimplexNoiseSampler(new LocalRandom(2)); + public Vec3d getWindStrength(long tick, Random random) { + int i = -octaves.firstInt(); + int j = octaves.lastInt(); + int k = i + j + 1; + if (k < 1) { + throw new IllegalArgumentException("Total number of octaves needs to be >= 1"); + } else { + SimplexNoiseSampler simplexNoiseSampler = new SimplexNoiseSampler(random); + if (j >= 0 && j < k && octaves.contains(0)) { + this.octaveSamplers[j] = simplexNoiseSampler; + this.octaveSamplers = new SimplexNoiseSampler[k]; + if (octaves.contains(0)) { + this.octaveSamplers[j] = simplexNoiseSampler; + } + } } if (tick != cachedTick) { - cachedValue = new Vec3d( - samplerX.sample(0, 0, (tick + MinecraftClient.getInstance().getTickDelta()) / 512D), - samplerY.sample(0, 0, (tick + MinecraftClient.getInstance().getTickDelta()) / 512D), - samplerZ.sample(0, 0, (tick + MinecraftClient.getInstance().getTickDelta()) / 512D) + cachedValue = new Vec3d(octaveSamplers[0].sample(0, 0, (tick + MinecraftClient.getInstance().getTickDelta()) / 512D), + octaveSamplers[1].sample(0, 0, (tick + MinecraftClient.getInstance().getTickDelta()) / 512D), + octaveSamplers[2].sample(0, 0, (tick + MinecraftClient.getInstance().getTickDelta()) / 512D) + ); cachedTick = tick; diff --git a/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java b/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java index d56c380dbb..2d39698499 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java +++ b/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java @@ -2,7 +2,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.ludocrypt.limlib.access.DimensionEffectsAccess; +import net.ludocrypt.limlib.access.DimensionTypeAccess; import net.ludocrypt.limlib.api.LiminalEffects; import net.ludocrypt.limlib.api.sound.ReverbSettings; import net.minecraft.client.world.ClientWorld; @@ -13,8 +13,8 @@ public class LiminalDimensionReverb { public static void setReverbForClientDimension(ClientWorld clientWorld) { - LiminalEffects liminalEffects = new LiminalEffects(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.of(new ReverbSettings().setEnabled(true).setDecayTime(8).setDensity(0.5F))); - ((DimensionEffectsAccess) clientWorld.getDimension().effects()).setLiminalEffects(liminalEffects); + LiminalEffects liminalEffects = new LiminalEffects(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.of(new ReverbSettings().setEnabled(true).setDecayTime(8).setDensity(0.5F))); + ((DimensionTypeAccess) clientWorld.getDimension().effects()).setLiminalEffects(liminalEffects); } } diff --git a/src/main/java/de/dafuqs/spectrum/particle/client/WindParticle.java b/src/main/java/de/dafuqs/spectrum/particle/client/WindParticle.java index dc3847f153..85dd8d3949 100644 --- a/src/main/java/de/dafuqs/spectrum/particle/client/WindParticle.java +++ b/src/main/java/de/dafuqs/spectrum/particle/client/WindParticle.java @@ -29,7 +29,7 @@ protected WindParticle(ClientWorld clientWorld, double x, double y, double z, do public void tick() { super.tick(); - Vec3d windStrength = wind.getWindStrength(world.getTime()); + Vec3d windStrength = wind.getWindStrength(world.getTime(), world.random); this.velocityX += windStrength.getX() * 0.004; this.velocityY += windStrength.getY() * 0.001; this.velocityZ += windStrength.getZ() * 0.004; diff --git a/src/main/resources/data/spectrum/dimension_type/deeper_down_type.json b/src/main/resources/data/spectrum/dimension_type/deeper_down_type.json index 2a31ee232c..c682424e6e 100644 --- a/src/main/resources/data/spectrum/dimension_type/deeper_down_type.json +++ b/src/main/resources/data/spectrum/dimension_type/deeper_down_type.json @@ -13,5 +13,7 @@ "bed_works": false, "has_skylight": false, "has_ceiling": true, - "ultrawarm": false + "ultrawarm": false, + "monster_spawn_block_light_limit": 0, + "monster_spawn_light_level": 0 } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/worldgen/configured_structure_feature/ancient_ruins.json b/src/main/resources/data/spectrum/worldgen/configured_structure_feature/ancient_ruins.json deleted file mode 100644 index 8ef138f54f..0000000000 --- a/src/main/resources/data/spectrum/worldgen/configured_structure_feature/ancient_ruins.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "spectrum:underground_structures", - "config": { - "start_pool": "spectrum:ancient_ruins", - "min_y": -30, - "max_y": 32, - "size": 1 - }, - "biomes": "#spectrum:has_structure/underground_structures", - "adapt_noise": false, - "spawn_overrides": { - "monster": { - "bounding_box": "piece", - "spawns": [] - } - } -} diff --git a/src/main/resources/data/spectrum/worldgen/structure/ancient_ruins.json b/src/main/resources/data/spectrum/worldgen/structure/ancient_ruins.json new file mode 100644 index 0000000000..e31cad99a8 --- /dev/null +++ b/src/main/resources/data/spectrum/worldgen/structure/ancient_ruins.json @@ -0,0 +1,24 @@ +{ + "type": "spectrum:underground_structures", + "start_pool": "spectrum:ancient_ruins", + "step" : "underground_structures", + "size": 1, + "max_inclusive": { + "below_top": 30 + }, + "min_inclusive": { + "above_bottom": -32 + }, + "start_height": { + "absolute": 0 + }, + "max_distance_from_center": 80, + "project_start_to_heightmap": "WORLD_SURFACE_WG", + "biomes": "#spectrum:has_structure/underground_structures", + "spawn_overrides": { + "monster": { + "bounding_box": "piece", + "spawns": [] + } + } +} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 2973facd1c..be3b79b5c4 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -57,8 +57,9 @@ "trinkets": "*" }, "suggests": { - "chalk": ">=2.0.0", - "colored_lights": ">=1.0.3", + "chalk": "*", + "chalk-colorful-addon": "*", + "colored_lights": "*", "paginatedadvancements": "*", "the_aether": "*", "limlib": "*", From 4f604d2ecc563cd568936ebec666a4cd589e9c42 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Mon, 15 Aug 2022 20:20:26 +0200 Subject: [PATCH 0014/1051] update REI, comment out unused enchdesc mixin --- gradle.properties | 2 +- .../enchantment_descriptions/DescriptionManagerMixin.java | 7 ++++--- src/main/resources/spectrum.mixins.json | 3 +-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gradle.properties b/gradle.properties index 6817ba975a..ee3ce3117d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,7 +19,7 @@ fabric_version=0.59.0+1.19.2 cloth_config_version=8.0.75 modmenu_version=4.0.6 -rei_version=9.1.526 +rei_version=9.1.528 patchouli_version=1.19-74-FABRIC # https://maven.blamejared.com/net/darkhax/enchdesc/ enchantment_descriptions_mc_version=1.19.1 diff --git a/src/main/java/de/dafuqs/spectrum/mixin/client/enchantment_descriptions/DescriptionManagerMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/client/enchantment_descriptions/DescriptionManagerMixin.java index 6b1bb1f2cf..d5ff15d1fd 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/client/enchantment_descriptions/DescriptionManagerMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/client/enchantment_descriptions/DescriptionManagerMixin.java @@ -1,4 +1,4 @@ -package de.dafuqs.spectrum.mixin.client.enchantment_descriptions; +/*package de.dafuqs.spectrum.mixin.client.enchantment_descriptions; import net.darkhax.enchdesc.DescriptionManager; import org.spongepowered.asm.mixin.Mixin; @@ -8,7 +8,7 @@ * If Enchantment descriptions is installed: * Obfuscate descriptions for Enchantments that the user does not have discovered yet */ -@Pseudo +/*@Pseudo @Mixin(value = DescriptionManager.class, remap = false) public class DescriptionManagerMixin { @@ -22,5 +22,6 @@ public class DescriptionManagerMixin { } } }*/ - + /* } +*/ \ No newline at end of file diff --git a/src/main/resources/spectrum.mixins.json b/src/main/resources/spectrum.mixins.json index 19efa2dc05..4c27303786 100644 --- a/src/main/resources/spectrum.mixins.json +++ b/src/main/resources/spectrum.mixins.json @@ -65,8 +65,7 @@ "client.TransparentBlockMixin", "client.WorldRendererMixin", "client.accessors.BossBarHudAccessor", - "client.accessors.RenderLayerAccessor", - "client.enchantment_descriptions.DescriptionManagerMixin" + "client.accessors.RenderLayerAccessor" ], "injectors": { "defaultRequire": 1 From 4ed3940ca436a3ccc85fd430dda2c673dc9a572d Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Tue, 16 Aug 2022 18:36:28 +0200 Subject: [PATCH 0015/1051] architectury --- build.gradle | 1 + gradle.properties | 1 + .../dafuqs/spectrum/status_effects/NourishingStatusEffect.java | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 940b0627df..8d9713e5fe 100644 --- a/build.gradle +++ b/build.gradle @@ -95,6 +95,7 @@ dependencies { // https://github.com/shedaniel/RoughlyEnoughItems modCompileOnly "me.shedaniel:RoughlyEnoughItems-fabric:${project.rei_version}" modRuntimeOnly "me.shedaniel:RoughlyEnoughItems-fabric:${project.rei_version}" + modApi "dev.architectury:architectury-fabric:${project.architectury_version}" // https://github.com/emilyploszaj/trinkets modImplementation "dev.emi:trinkets:${project.trinkets_version}" diff --git a/gradle.properties b/gradle.properties index ee3ce3117d..8a1039a723 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,6 +20,7 @@ fabric_version=0.59.0+1.19.2 cloth_config_version=8.0.75 modmenu_version=4.0.6 rei_version=9.1.528 +architectury_version=6.+ patchouli_version=1.19-74-FABRIC # https://maven.blamejared.com/net/darkhax/enchdesc/ enchantment_descriptions_mc_version=1.19.1 diff --git a/src/main/java/de/dafuqs/spectrum/status_effects/NourishingStatusEffect.java b/src/main/java/de/dafuqs/spectrum/status_effects/NourishingStatusEffect.java index a92b3159a6..0288a7b2fa 100644 --- a/src/main/java/de/dafuqs/spectrum/status_effects/NourishingStatusEffect.java +++ b/src/main/java/de/dafuqs/spectrum/status_effects/NourishingStatusEffect.java @@ -24,7 +24,7 @@ public void applyUpdateEffect(LivingEntity entity, int amplifier) { public boolean canApplyUpdateEffect(int duration, int amplifier) { int i = 200 >> amplifier; - return duration % i == 0; + return duration % i == 0; // TODO: } } \ No newline at end of file From 9499c936c3ddf52fcc7b4c7960a716f331a165ae Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Tue, 16 Aug 2022 20:10:25 +0200 Subject: [PATCH 0016/1051] banner patterns working again --- build.gradle | 2 +- .../items/CloakedItemWithLoomPattern.java | 15 +-- .../spectrum/items/CraftingTabletItem.java | 6 +- .../spectrum/items/FourLeafCloverItem.java | 8 +- .../dafuqs/spectrum/items/GuidebookItem.java | 6 +- .../spectrum/items/LoomPatternProvider.java | 16 ++++ .../de/dafuqs/spectrum/items/PigmentItem.java | 6 +- .../items/SpectrumBannerPatternItem.java | 19 ++-- .../items/energy/ArtistsPaletteItem.java | 7 +- .../spectrum/items/energy/InkFlaskItem.java | 7 +- .../items/energy/PigmentPaletteItem.java | 7 +- .../items/magic_items/KnowledgeGemItem.java | 7 +- .../spectrum/items/tools/MultiToolItem.java | 7 +- .../mixin/LoomContainerPatternSlotMixin.java | 23 +++++ .../mixin/LoomScreenHandlerMixin.java | 77 +++++++++++++++ .../registries/SpectrumBannerPatterns.java | 94 +++++++++++-------- .../spectrum/registries/SpectrumItems.java | 6 +- .../pattern_item/amethyst_cluster.json | 5 + .../pattern_item/amethyst_shard.json | 5 + .../banner_pattern/pattern_item/logo.json | 5 + src/main/resources/spectrum.mixins.json | 6 +- 21 files changed, 240 insertions(+), 94 deletions(-) create mode 100644 src/main/java/de/dafuqs/spectrum/items/LoomPatternProvider.java create mode 100644 src/main/java/de/dafuqs/spectrum/mixin/LoomContainerPatternSlotMixin.java create mode 100644 src/main/java/de/dafuqs/spectrum/mixin/LoomScreenHandlerMixin.java create mode 100644 src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_cluster.json create mode 100644 src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_shard.json create mode 100644 src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/logo.json diff --git a/build.gradle b/build.gradle index 8d9713e5fe..b4a4a2f855 100644 --- a/build.gradle +++ b/build.gradle @@ -106,7 +106,7 @@ dependencies { modImplementation "dev.onyxstudios.cardinal-components-api:cardinal-components-item:${cca_version}" // https://github.com/TheEpicBlock/banner-plus-plus - modImplementation include("io.github.fablabsmc:bannerpp:2.0.6-teb.1+mc.1.18.2") + // modImplementation include("io.github.fablabsmc:bannerpp:2.0.6-teb.1+mc.1.18.2") modImplementation include("com.github.emilyploszaj:step-height-entity-attribute:${project.step_height_attribute_version}") modImplementation include("com.github.DaFuqs:AdditionalEntityAttributes:${project.additional_entity_attributes_version}") diff --git a/src/main/java/de/dafuqs/spectrum/items/CloakedItemWithLoomPattern.java b/src/main/java/de/dafuqs/spectrum/items/CloakedItemWithLoomPattern.java index dbfcfa09b4..10a708d54e 100644 --- a/src/main/java/de/dafuqs/spectrum/items/CloakedItemWithLoomPattern.java +++ b/src/main/java/de/dafuqs/spectrum/items/CloakedItemWithLoomPattern.java @@ -1,13 +1,14 @@ package de.dafuqs.spectrum.items; import de.dafuqs.spectrum.items.conditional.CloakedItem; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPattern; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPatternProvider; +import net.minecraft.block.entity.BannerPattern; import net.minecraft.client.item.TooltipContext; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.tag.TagKey; import net.minecraft.text.Text; import net.minecraft.util.Identifier; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -15,16 +16,16 @@ public class CloakedItemWithLoomPattern extends CloakedItem implements LoomPatternProvider { - protected final LoomPattern loomPattern; + private final RegistryEntry patternItemTag; - public CloakedItemWithLoomPattern(Settings settings, Identifier cloakAdvancementIdentifier, Item cloakItem, LoomPattern loomPattern) { + public CloakedItemWithLoomPattern(Settings settings, Identifier cloakAdvancementIdentifier, Item cloakItem, RegistryEntry patternItemTag) { super(settings, cloakAdvancementIdentifier, cloakItem); - this.loomPattern = loomPattern; + this.patternItemTag = patternItemTag; } @Override - public LoomPattern getPattern() { - return loomPattern; + public RegistryEntry getPattern() { + return patternItemTag; } @Override diff --git a/src/main/java/de/dafuqs/spectrum/items/CraftingTabletItem.java b/src/main/java/de/dafuqs/spectrum/items/CraftingTabletItem.java index e6af9115d2..28ec04f671 100644 --- a/src/main/java/de/dafuqs/spectrum/items/CraftingTabletItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/CraftingTabletItem.java @@ -6,10 +6,9 @@ import de.dafuqs.spectrum.items.tooltip.CraftingTabletTooltipData; import de.dafuqs.spectrum.recipe.pedestal.PedestalCraftingRecipe; import de.dafuqs.spectrum.registries.SpectrumBannerPatterns; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPattern; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPatternProvider; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.block.entity.BannerPattern; import net.minecraft.client.MinecraftClient; import net.minecraft.client.item.TooltipContext; import net.minecraft.client.item.TooltipData; @@ -30,6 +29,7 @@ import net.minecraft.util.Identifier; import net.minecraft.util.TypedActionResult; import net.minecraft.util.collection.DefaultedList; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.World; import java.util.List; @@ -145,7 +145,7 @@ public Optional getTooltipData(ItemStack stack) { } @Override - public LoomPattern getPattern() { + public RegistryEntry getPattern() { return SpectrumBannerPatterns.CRAFTING_TABLET; } diff --git a/src/main/java/de/dafuqs/spectrum/items/FourLeafCloverItem.java b/src/main/java/de/dafuqs/spectrum/items/FourLeafCloverItem.java index 5a407a8d39..c8c0eaef72 100644 --- a/src/main/java/de/dafuqs/spectrum/items/FourLeafCloverItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/FourLeafCloverItem.java @@ -2,14 +2,15 @@ import de.dafuqs.spectrum.items.conditional.CloakedBlockItem; import de.dafuqs.spectrum.registries.SpectrumBannerPatterns; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPattern; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPatternProvider; import net.minecraft.block.Block; +import net.minecraft.block.entity.BannerPattern; import net.minecraft.client.item.TooltipContext; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.util.Identifier; +import net.minecraft.util.registry.RegistryEntry; +import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -22,11 +23,10 @@ public FourLeafCloverItem(Block block, Item.Settings settings, Identifier cloakA } @Override - public LoomPattern getPattern() { + public RegistryEntry getPattern() { return SpectrumBannerPatterns.FOUR_LEAF_CLOVER; } - @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); diff --git a/src/main/java/de/dafuqs/spectrum/items/GuidebookItem.java b/src/main/java/de/dafuqs/spectrum/items/GuidebookItem.java index 1a955a4d61..13c9ccd060 100644 --- a/src/main/java/de/dafuqs/spectrum/items/GuidebookItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/GuidebookItem.java @@ -3,13 +3,12 @@ import de.dafuqs.revelationary.advancement_criteria.AdvancementGottenCriterion; import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.registries.SpectrumBannerPatterns; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPattern; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPatternProvider; import net.minecraft.advancement.Advancement; import net.minecraft.advancement.AdvancementCriterion; import net.minecraft.advancement.AdvancementProgress; import net.minecraft.advancement.PlayerAdvancementTracker; import net.minecraft.advancement.criterion.CriterionConditions; +import net.minecraft.block.entity.BannerPattern; import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; @@ -20,6 +19,7 @@ import net.minecraft.util.Hand; import net.minecraft.util.Identifier; import net.minecraft.util.TypedActionResult; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; import vazkii.patchouli.api.PatchouliAPI; @@ -95,7 +95,7 @@ private void openGuidebook(ServerPlayerEntity serverPlayerEntity, Identifier ent } @Override - public LoomPattern getPattern() { + public RegistryEntry getPattern() { return SpectrumBannerPatterns.MANUAL; } diff --git a/src/main/java/de/dafuqs/spectrum/items/LoomPatternProvider.java b/src/main/java/de/dafuqs/spectrum/items/LoomPatternProvider.java new file mode 100644 index 0000000000..45f42b99c4 --- /dev/null +++ b/src/main/java/de/dafuqs/spectrum/items/LoomPatternProvider.java @@ -0,0 +1,16 @@ +package de.dafuqs.spectrum.items; + +import net.minecraft.block.entity.BannerPattern; +import net.minecraft.util.registry.RegistryEntry; + +import java.util.List; + +public interface LoomPatternProvider { + + RegistryEntry getPattern(); + + default List> getPatterns() { + return List.of(getPattern()); + } + +} diff --git a/src/main/java/de/dafuqs/spectrum/items/PigmentItem.java b/src/main/java/de/dafuqs/spectrum/items/PigmentItem.java index 7232fceb76..289ca7d93d 100644 --- a/src/main/java/de/dafuqs/spectrum/items/PigmentItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/PigmentItem.java @@ -4,14 +4,14 @@ import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.items.conditional.CloakedItem; import de.dafuqs.spectrum.registries.SpectrumBannerPatterns; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPattern; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPatternProvider; +import net.minecraft.block.entity.BannerPattern; import net.minecraft.client.item.TooltipContext; import net.minecraft.item.DyeItem; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.util.DyeColor; import net.minecraft.util.Identifier; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -38,7 +38,7 @@ public static PigmentItem byColor(DyeColor color) { } @Override - public LoomPattern getPattern() { + public RegistryEntry getPattern() { return SpectrumBannerPatterns.PIGMENT; } diff --git a/src/main/java/de/dafuqs/spectrum/items/SpectrumBannerPatternItem.java b/src/main/java/de/dafuqs/spectrum/items/SpectrumBannerPatternItem.java index 1db30827b4..4b96f2cb1b 100644 --- a/src/main/java/de/dafuqs/spectrum/items/SpectrumBannerPatternItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/SpectrumBannerPatternItem.java @@ -1,10 +1,10 @@ package de.dafuqs.spectrum.items; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPattern; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPatternProvider; +import net.minecraft.block.entity.BannerPattern; import net.minecraft.client.item.TooltipContext; -import net.minecraft.item.Item; +import net.minecraft.item.BannerPatternItem; import net.minecraft.item.ItemStack; +import net.minecraft.tag.TagKey; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -13,16 +13,14 @@ import java.util.List; -public class SpectrumBannerPatternItem extends Item implements LoomPatternProvider { +public class SpectrumBannerPatternItem extends BannerPatternItem { public static final Text TOOLTIP_TEXT = Text.translatable("item.spectrum.tooltip.loom_pattern_available").formatted(Formatting.GRAY); - private final LoomPattern pattern; private final MutableText tooltipText; - public SpectrumBannerPatternItem(Settings settings, LoomPattern pattern, String tooltipText) { - super(settings); - this.pattern = pattern; + public SpectrumBannerPatternItem(Settings settings, TagKey patternItemTag, String tooltipText) { + super(patternItemTag, settings); this.tooltipText = Text.translatable(tooltipText); } @@ -36,9 +34,4 @@ public void appendTooltip(ItemStack stack, @Nullable World world, List too SpectrumBannerPatternItem.addBannerPatternProviderTooltip(tooltip); } - @Override - public LoomPattern getPattern() { - return pattern; - } - } diff --git a/src/main/java/de/dafuqs/spectrum/items/energy/ArtistsPaletteItem.java b/src/main/java/de/dafuqs/spectrum/items/energy/ArtistsPaletteItem.java index 9f7e84e068..3f7e44e143 100644 --- a/src/main/java/de/dafuqs/spectrum/items/energy/ArtistsPaletteItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/energy/ArtistsPaletteItem.java @@ -3,18 +3,19 @@ import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.energy.InkStorageItem; import de.dafuqs.spectrum.energy.storage.ArtistsPaletteInkStorage; +import de.dafuqs.spectrum.items.LoomPatternProvider; import de.dafuqs.spectrum.items.SpectrumBannerPatternItem; import de.dafuqs.spectrum.items.trinkets.SpectrumTrinketItem; import de.dafuqs.spectrum.registries.SpectrumBannerPatterns; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPattern; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPatternProvider; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.block.entity.BannerPattern; import net.minecraft.client.item.TooltipContext; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.text.Text; import net.minecraft.util.Identifier; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -64,7 +65,7 @@ public void appendTooltip(ItemStack stack, @Nullable World world, List too } @Override - public LoomPattern getPattern() { + public RegistryEntry getPattern() { return SpectrumBannerPatterns.PALETTE; } diff --git a/src/main/java/de/dafuqs/spectrum/items/energy/InkFlaskItem.java b/src/main/java/de/dafuqs/spectrum/items/energy/InkFlaskItem.java index 48450428a7..81719309f2 100644 --- a/src/main/java/de/dafuqs/spectrum/items/energy/InkFlaskItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/energy/InkFlaskItem.java @@ -3,17 +3,18 @@ import de.dafuqs.spectrum.energy.InkStorageItem; import de.dafuqs.spectrum.energy.color.InkColor; import de.dafuqs.spectrum.energy.storage.SingleInkStorage; +import de.dafuqs.spectrum.items.LoomPatternProvider; import de.dafuqs.spectrum.items.SpectrumBannerPatternItem; import de.dafuqs.spectrum.registries.SpectrumBannerPatterns; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPattern; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPatternProvider; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.block.entity.BannerPattern; import net.minecraft.client.item.TooltipContext; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.text.Text; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -72,7 +73,7 @@ public ItemStack getFullStack(InkColor color) { } @Override - public LoomPattern getPattern() { + public RegistryEntry getPattern() { return SpectrumBannerPatterns.INK_FLASK; } diff --git a/src/main/java/de/dafuqs/spectrum/items/energy/PigmentPaletteItem.java b/src/main/java/de/dafuqs/spectrum/items/energy/PigmentPaletteItem.java index 910b805ddb..bf9affcca8 100644 --- a/src/main/java/de/dafuqs/spectrum/items/energy/PigmentPaletteItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/energy/PigmentPaletteItem.java @@ -3,18 +3,19 @@ import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.energy.InkStorageItem; import de.dafuqs.spectrum.energy.storage.PigmentPaletteInkStorage; +import de.dafuqs.spectrum.items.LoomPatternProvider; import de.dafuqs.spectrum.items.SpectrumBannerPatternItem; import de.dafuqs.spectrum.items.trinkets.SpectrumTrinketItem; import de.dafuqs.spectrum.registries.SpectrumBannerPatterns; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPattern; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPatternProvider; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.block.entity.BannerPattern; import net.minecraft.client.item.TooltipContext; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.text.Text; import net.minecraft.util.Identifier; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -64,7 +65,7 @@ public void appendTooltip(ItemStack stack, @Nullable World world, List too } @Override - public LoomPattern getPattern() { + public RegistryEntry getPattern() { return SpectrumBannerPatterns.PALETTE; } diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/KnowledgeGemItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/KnowledgeGemItem.java index 017fab8b95..dd6510443d 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/KnowledgeGemItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/KnowledgeGemItem.java @@ -2,11 +2,11 @@ import de.dafuqs.spectrum.blocks.enchanter.EnchanterEnchantable; import de.dafuqs.spectrum.items.ExperienceStorageItem; +import de.dafuqs.spectrum.items.LoomPatternProvider; import de.dafuqs.spectrum.items.SpectrumBannerPatternItem; import de.dafuqs.spectrum.registries.SpectrumBannerPatterns; import de.dafuqs.spectrum.registries.SpectrumItems; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPattern; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPatternProvider; +import net.minecraft.block.entity.BannerPattern; import net.minecraft.client.item.TooltipContext; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; @@ -25,6 +25,7 @@ import net.minecraft.util.Hand; import net.minecraft.util.TypedActionResult; import net.minecraft.util.UseAction; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.World; import org.jetbrains.annotations.NotNull; @@ -190,7 +191,7 @@ public boolean canAcceptEnchantment(Enchantment enchantment) { } @Override - public LoomPattern getPattern() { + public RegistryEntry getPattern() { return SpectrumBannerPatterns.KNOWLEDGE_GEM; } diff --git a/src/main/java/de/dafuqs/spectrum/items/tools/MultiToolItem.java b/src/main/java/de/dafuqs/spectrum/items/tools/MultiToolItem.java index 4d47e7e5bf..152d74d69d 100644 --- a/src/main/java/de/dafuqs/spectrum/items/tools/MultiToolItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/tools/MultiToolItem.java @@ -1,11 +1,11 @@ package de.dafuqs.spectrum.items.tools; +import de.dafuqs.spectrum.items.LoomPatternProvider; import de.dafuqs.spectrum.items.Preenchanted; import de.dafuqs.spectrum.items.SpectrumBannerPatternItem; import de.dafuqs.spectrum.registries.SpectrumBannerPatterns; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPattern; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPatternProvider; import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BannerPattern; import net.minecraft.client.item.TooltipContext; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.Enchantments; @@ -13,6 +13,7 @@ import net.minecraft.text.Text; import net.minecraft.util.ActionResult; import net.minecraft.util.collection.DefaultedList; +import net.minecraft.util.registry.RegistryEntry; import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; @@ -69,7 +70,7 @@ public ActionResult useOnBlock(ItemUsageContext context) { } @Override - public LoomPattern getPattern() { + public RegistryEntry getPattern() { return SpectrumBannerPatterns.MULTITOOL; } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/LoomContainerPatternSlotMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/LoomContainerPatternSlotMixin.java new file mode 100644 index 0000000000..7d96eafd7f --- /dev/null +++ b/src/main/java/de/dafuqs/spectrum/mixin/LoomContainerPatternSlotMixin.java @@ -0,0 +1,23 @@ +package de.dafuqs.spectrum.mixin; + +import de.dafuqs.spectrum.items.LoomPatternProvider; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.slot.Slot; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(targets = "net.minecraft.screen.LoomScreenHandler$5") +public abstract class LoomContainerPatternSlotMixin extends Slot { + private LoomContainerPatternSlotMixin() { + super(null, 0, 0, 0); + } + + @Inject(method = "canInsert(Lnet/minecraft/item/ItemStack;)Z", at = @At("RETURN"), cancellable = true) + private void checkBppLoomPatternItem(ItemStack stack, CallbackInfoReturnable info) { + if (stack.getItem() instanceof LoomPatternProvider) { + info.setReturnValue(true); + } + } +} diff --git a/src/main/java/de/dafuqs/spectrum/mixin/LoomScreenHandlerMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/LoomScreenHandlerMixin.java new file mode 100644 index 0000000000..3610a3deda --- /dev/null +++ b/src/main/java/de/dafuqs/spectrum/mixin/LoomScreenHandlerMixin.java @@ -0,0 +1,77 @@ +package de.dafuqs.spectrum.mixin; + +import de.dafuqs.spectrum.items.LoomPatternProvider; +import net.minecraft.block.entity.BannerPattern; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.Inventory; +import net.minecraft.item.BannerPatternItem; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.LoomScreenHandler; +import net.minecraft.screen.Property; +import net.minecraft.screen.ScreenHandler; +import net.minecraft.screen.slot.Slot; +import net.minecraft.util.registry.RegistryEntry; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.List; + +@Mixin(LoomScreenHandler.class) +public abstract class LoomScreenHandlerMixin extends ScreenHandler { + + @Shadow + @Final + Property selectedPattern; + @Shadow + @Final + Slot bannerSlot; + @Shadow + @Final + Slot dyeSlot; + @Shadow + @Final + private Slot patternSlot; + @Shadow + @Final + private Slot outputSlot; + + @Unique + private PlayerEntity player; + + private LoomScreenHandlerMixin() { + super(null, 0); + } + + @Inject(method = "getPatternsFor(Lnet/minecraft/item/ItemStack;)Ljava/util/List;", at = @At("HEAD"), cancellable = true) + private void spectrum$getPatternsFor(ItemStack stack, CallbackInfoReturnable>> cir) { + if(stack.getItem() instanceof LoomPatternProvider loomPatternProvider) { + cir.setReturnValue(loomPatternProvider.getPatterns()); + } + } + + @Inject( + method = "transferSlot", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/item/ItemStack;getItem()Lnet/minecraft/item/Item;", + ordinal = 0, + shift = At.Shift.BEFORE + ), + cancellable = true + ) + private void attemptBppPatternItemTransfer(PlayerEntity player, int slotIdx, CallbackInfoReturnable info) { + ItemStack stack = this.slots.get(slotIdx).getStack(); + + if (stack.getItem() instanceof LoomPatternProvider) { + if (!this.insertItem(stack, this.patternSlot.id, this.patternSlot.id + 1, false)) { + info.setReturnValue(ItemStack.EMPTY); + } + } + } + +} diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatterns.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatterns.java index 7bf1f5e99f..7a17d37212 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatterns.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatterns.java @@ -1,55 +1,69 @@ package de.dafuqs.spectrum.registries; import de.dafuqs.spectrum.SpectrumCommon; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPattern; -import io.github.fablabsmc.fablabs.api.bannerpattern.v1.LoomPatterns; +import net.minecraft.block.entity.BannerPattern; +import net.minecraft.block.entity.BannerPatterns; +import net.minecraft.screen.LoomScreenHandler; +import net.minecraft.tag.BannerPatternTags; +import net.minecraft.tag.TagKey; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryEntry; +import net.minecraft.util.registry.RegistryKey; public class SpectrumBannerPatterns { - public static LoomPattern SPECTRUM_LOGO; - public static LoomPattern AMETHYST_CLUSTER; - public static LoomPattern AMETHYST_SHARD; - public static LoomPattern CRAFTING_TABLET; - public static LoomPattern FOUR_LEAF_CLOVER; - public static LoomPattern INK_FLASK; - public static LoomPattern KNOWLEDGE_GEM; - public static LoomPattern MANUAL; - public static LoomPattern MULTITOOL; - public static LoomPattern NEOLITH; - public static LoomPattern PALETTE; - public static LoomPattern PIGMENT; - public static LoomPattern RAW_AZURITE; - public static LoomPattern SHIMMER; - public static LoomPattern VEGETAL; - public static LoomPattern BEDROCK_DUST; - public static LoomPattern SHIMMERSTONE; - public static LoomPattern JADE_VINE; + public static RegistryEntry SPECTRUM_LOGO; + public static RegistryEntry AMETHYST_CLUSTER; + public static RegistryEntry AMETHYST_SHARD; + public static RegistryEntry CRAFTING_TABLET; + public static RegistryEntry FOUR_LEAF_CLOVER; + public static RegistryEntry INK_FLASK; + public static RegistryEntry KNOWLEDGE_GEM; + public static RegistryEntry MANUAL; + public static RegistryEntry MULTITOOL; + public static RegistryEntry NEOLITH; + public static RegistryEntry PALETTE; + public static RegistryEntry PIGMENT; + public static RegistryEntry RAW_AZURITE; + public static RegistryEntry SHIMMER; + public static RegistryEntry VEGETAL; + public static RegistryEntry BEDROCK_DUST; + public static RegistryEntry SHIMMERSTONE; + public static RegistryEntry JADE_VINE; - private static LoomPattern register(String id, LoomPattern loomPattern) { - return Registry.register(LoomPatterns.REGISTRY, new Identifier(SpectrumCommon.MOD_ID, id), loomPattern); + public static TagKey SPECTRUM_LOGO_TAG = of("pattern_item/logo"); + public static TagKey AMETHYST_CLUSTER_TAG = of("pattern_item/amethyst_cluster"); + public static TagKey AMETHYST_SHARD_TAG = of("pattern_item/amethyst_shard"); + + private static TagKey of(String id) { + return TagKey.of(Registry.BANNER_PATTERN_KEY, new Identifier(id)); + } + + private static RegistryEntry registerPattern(String id, String shortId) { + BannerPattern pattern = Registry.register(Registry.BANNER_PATTERN, new Identifier(SpectrumCommon.MOD_ID, id), new BannerPattern(SpectrumCommon.MOD_ID + "_" + shortId)); + return Registry.BANNER_PATTERN.getEntry(Registry.BANNER_PATTERN.getKey(pattern).get()).get(); } public static void register() { - SPECTRUM_LOGO = register("logo", new LoomPattern(true)); - AMETHYST_CLUSTER = register("amethyst_cluster", new LoomPattern(true)); - AMETHYST_SHARD = register("amethyst_shard", new LoomPattern(true)); - CRAFTING_TABLET = register("crafting_tablet", new LoomPattern(true)); - FOUR_LEAF_CLOVER = register("four_leaf_clover", new LoomPattern(true)); - INK_FLASK = register("ink_flask", new LoomPattern(true)); - KNOWLEDGE_GEM = register("knowledge_gem", new LoomPattern(true)); - MANUAL = register("manual", new LoomPattern(true)); - MULTITOOL = register("multitool", new LoomPattern(true)); - NEOLITH = register("neolith", new LoomPattern(true)); - PALETTE = register("palette", new LoomPattern(true)); - PIGMENT = register("pigment", new LoomPattern(true)); - RAW_AZURITE = register("raw_azurite", new LoomPattern(true)); - SHIMMER = register("shimmer", new LoomPattern(true)); - VEGETAL = register("vegetal", new LoomPattern(true)); - BEDROCK_DUST = register("bedrock_dust", new LoomPattern(true)); - SHIMMERSTONE = register("shimmerstone", new LoomPattern(true)); - JADE_VINE = register("jade_vine", new LoomPattern(true)); + SPECTRUM_LOGO = registerPattern("logo", "l"); + AMETHYST_CLUSTER = registerPattern("amethyst_cluster", "acl"); + AMETHYST_SHARD = registerPattern("amethyst_shard", "as"); + CRAFTING_TABLET = registerPattern("crafting_tablet", "ct"); + FOUR_LEAF_CLOVER = registerPattern("four_leaf_clover", "flc"); + INK_FLASK = registerPattern("ink_flask", "if"); + KNOWLEDGE_GEM = registerPattern("knowledge_gem", "kg"); + MANUAL = registerPattern("manual", "man"); + MULTITOOL = registerPattern("multitool", "mul"); + NEOLITH = registerPattern("neolith", "neo"); + PALETTE = registerPattern("palette", "pql"); + PIGMENT = registerPattern("pigment", "pg"); + RAW_AZURITE = registerPattern("raw_azurite", "raz"); + SHIMMER = registerPattern("shimmer", "sh"); + VEGETAL = registerPattern("vegetal", "ve"); + BEDROCK_DUST = registerPattern("bedrock_dust", "bd"); + SHIMMERSTONE = registerPattern("shimmerstone", "sp"); + JADE_VINE = registerPattern("jade_vine", "jv"); } } diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java index 00d83942b5..9c817b84ca 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java @@ -269,9 +269,9 @@ public Map getDefaultEnchantments() { public static final Item RESTORATION_TEA = new RestorationTeaItem(new OwoItemSettings().group(SpectrumItemGroups.ITEM_GROUP_GENERAL).tab(1).rarity(Rarity.UNCOMMON).maxCount(16).recipeRemainder(Items.GLASS_BOTTLE)); // Banner Patterns - public static final Item LOGO_BANNER_PATTERN = new SpectrumBannerPatternItem(toolRareItemSettingsSingle, SpectrumBannerPatterns.SPECTRUM_LOGO, "item.spectrum.logo_banner_pattern.desc"); - public static final Item AMETHYST_SHARD_BANNER_PATTERN = new SpectrumBannerPatternItem(toolItemSettingsSingle, SpectrumBannerPatterns.AMETHYST_SHARD, "item.minecraft.amethyst_shard"); - public static final Item AMETHYST_CLUSTER_BANNER_PATTERN = new SpectrumBannerPatternItem(toolItemSettingsSingle, SpectrumBannerPatterns.AMETHYST_CLUSTER, "block.minecraft.amethyst_cluster"); + public static final Item LOGO_BANNER_PATTERN = new SpectrumBannerPatternItem(toolRareItemSettingsSingle, SpectrumBannerPatterns.SPECTRUM_LOGO_TAG, "item.spectrum.logo_banner_pattern.desc"); + public static final Item AMETHYST_SHARD_BANNER_PATTERN = new SpectrumBannerPatternItem(toolItemSettingsSingle, SpectrumBannerPatterns.AMETHYST_CLUSTER_TAG, "item.minecraft.amethyst_shard"); + public static final Item AMETHYST_CLUSTER_BANNER_PATTERN = new SpectrumBannerPatternItem(toolItemSettingsSingle, SpectrumBannerPatterns.AMETHYST_SHARD_TAG, "block.minecraft.amethyst_cluster"); // Magical Tools public static final Item ENDER_BAG = new EnderBagItem(toolItemSettingsSingle); diff --git a/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_cluster.json b/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_cluster.json new file mode 100644 index 0000000000..744dae41dc --- /dev/null +++ b/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_cluster.json @@ -0,0 +1,5 @@ +{ + "values": [ + "spectrum:amethyst_cluster_banner_pattern" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_shard.json b/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_shard.json new file mode 100644 index 0000000000..08fc7ae10c --- /dev/null +++ b/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_shard.json @@ -0,0 +1,5 @@ +{ + "values": [ + "spectrum:amethyst_shard_banner_pattern" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/logo.json b/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/logo.json new file mode 100644 index 0000000000..40fb9fe6ca --- /dev/null +++ b/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/logo.json @@ -0,0 +1,5 @@ +{ + "values": [ + "spectrum:logo_banner_pattern" + ] +} \ No newline at end of file diff --git a/src/main/resources/spectrum.mixins.json b/src/main/resources/spectrum.mixins.json index 4c27303786..a359a7c8ae 100644 --- a/src/main/resources/spectrum.mixins.json +++ b/src/main/resources/spectrum.mixins.json @@ -4,6 +4,7 @@ "compatibilityLevel": "JAVA_17", "plugin": "de.dafuqs.spectrum.mixin.Plugin", "mixins": [ + "AbstractHorseEntityMixin", "AnvilBlockMixin", "BlockMixin", "BuddingAmethystBlockMixin", @@ -20,7 +21,6 @@ "FishingBobberEntityRendererMixin", "GeodesGenerateWithGemstoneOresMixin", "GlassBottleItemMixin", - "AbstractHorseEntityMixin", "InfestedBlockMixin", "ItemEntityMixin", "ItemFrameEntityMixin", @@ -29,6 +29,8 @@ "KilledByPlayerLootConditionMixin", "LightningEntityMixin", "LivingEntityMixin", + "LoomContainerPatternSlotMixin", + "LoomScreenHandlerMixin", "MiningToolItemMixin", "MobSpawnerBlockEntityMixin", "PiglinBrainMixin", @@ -49,7 +51,7 @@ "accessors.MooshroomEntityAccessor", "accessors.RecipeManagerAccessor", "accessors.ShapedRecipeAccessor", - "accessors.SlimeEntityAccessor", + "accessors.SlimeEntityAccessor" ], "client": [ "client.BlockOverlayRendererMixin", From c9e733bac8cb4b6b1b5b7654b4e1a2825587fe01 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Tue, 16 Aug 2022 21:06:20 +0200 Subject: [PATCH 0017/1051] it launches... somewhat --- build.gradle | 2 +- gradle.properties | 2 +- .../de/dafuqs/spectrum/SpectrumCommon.java | 2 +- .../mixin/ChunkNoiseSamplerMixin.java | 4 ++-- .../mixin/FishingBobberEntityMixin.java | 3 --- .../spectrum/mixin/ItemEntityMixin.java | 2 +- .../spectrum/mixin/LivingEntityMixin.java | 6 ++--- .../mixin/LoomScreenHandlerMixin.java | 15 ------------- .../spectrum/mixin/PlayerInventoryMixin.java | 2 +- .../spectrum/mixin/WitherEntityMixin.java | 2 -- .../mixin/client/WorldRendererMixin.java | 22 ++++++------------- .../AccessorClientAdvancementManager.java | 17 -------------- 12 files changed, 16 insertions(+), 63 deletions(-) delete mode 100644 src/main/java/de/dafuqs/spectrum/mixin/client/accessors/AccessorClientAdvancementManager.java diff --git a/build.gradle b/build.gradle index b4a4a2f855..3a6211cdc8 100644 --- a/build.gradle +++ b/build.gradle @@ -111,7 +111,7 @@ dependencies { modImplementation include("com.github.DaFuqs:AdditionalEntityAttributes:${project.additional_entity_attributes_version}") modImplementation include("com.jamieswhiteshirt:reach-entity-attributes:${project.reach_entity_attributes_version}") - modImplementation include("com.github.devs-immortal:Incubus-Core:${project.incubus_core_version}") + modImplementation include("com.github.DaFuqs:Incubus-Core:${project.incubus_core_version}") //modImplementation include("com.github.devs-immortal:Some-Assembly-Required:${project.sar_version}") //modImplementation include("com.github.devs-immortal:Divine-Intervention:${project.divine_intervention_version}") modImplementation include("io.github.ladysnake:satin:${project.satin_version}") diff --git a/gradle.properties b/gradle.properties index 8a1039a723..5c303ee8a7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -31,7 +31,7 @@ trinkets_version=3.4.0 # https://github.com/emilyploszaj/step-height-entity-attribute step_height_attribute_version=1.0.1 # https://jitpack.io/#devs-immortal/Incubus-Core -incubus_core_version=1.19-SNAPSHOT +incubus_core_version=1.19.2-SNAPSHOT cca_version=5.0.1 additional_entity_attributes_version=1.19-SNAPSHOT satin_version=1.9.0 diff --git a/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java b/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java index 0f5ff1d2af..eae7d25c18 100644 --- a/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java +++ b/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java @@ -192,7 +192,7 @@ public void onInitialize() { ResourceManagerHelper.get(ResourceType.SERVER_DATA).registerReloadListener(ResonanceEnchantment.ResonanceDropsDataLoader.INSTANCE); logInfo("Registering MultiBlocks..."); - SpectrumMultiblocks.register(); + //SpectrumMultiblocks.register(); //TODO logInfo("Registering Flammable Blocks..."); SpectrumFlammableBlocks.register(); logInfo("Registering Compostable Blocks..."); diff --git a/src/main/java/de/dafuqs/spectrum/mixin/ChunkNoiseSamplerMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/ChunkNoiseSamplerMixin.java index 5672fdb23d..c37f9ce932 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/ChunkNoiseSamplerMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/ChunkNoiseSamplerMixin.java @@ -20,7 +20,7 @@ public abstract class ChunkNoiseSamplerMixin { @Shadow protected abstract DensityFunction getActualDensityFunction(DensityFunction densityFunction); - @Inject(method = "(ILnet/minecraft/world/gen/noise/NoiseConfig;IILnet/minecraft/world/gen/chunk/GenerationShapeConfig;Lnet/minecraft/world/gen/densityfunction/DensityFunctionTypes$Beardifying;Lnet/minecraft/world/gen/chunk/ChunkGeneratorSettings;Lnet/minecraft/world/gen/chunk/AquiferSampler$FluidLevelSampler;Lnet/minecraft/world/gen/chunk/Blender;)V", + /*@Inject(method = "(ILnet/minecraft/world/gen/noise/NoiseConfig;IILnet/minecraft/world/gen/chunk/GenerationShapeConfig;Lnet/minecraft/world/gen/densityfunction/DensityFunctionTypes$Beardifying;Lnet/minecraft/world/gen/chunk/ChunkGeneratorSettings;Lnet/minecraft/world/gen/chunk/AquiferSampler$FluidLevelSampler;Lnet/minecraft/world/gen/chunk/Blender;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/gen/chunk/ChunkGeneratorSettings;oreVeins()Z"), locals = LocalCapture.CAPTURE_FAILHARD) public void spectrum$init(int horizontalCellCount, NoiseConfig noiseConfig, int startX, int startZ, GenerationShapeConfig generationShapeConfig, DensityFunctionTypes.Beardifying beardifying, ChunkGeneratorSettings chunkGeneratorSettings, AquiferSampler.FluidLevelSampler fluidLevelSampler, Blender blender, CallbackInfo ci, ImmutableList.Builder builder) { @@ -28,6 +28,6 @@ public abstract class ChunkNoiseSamplerMixin { NoiseRouter noiseRouter = noiseConfig.getNoiseRouter(); builder.add(DDOreVeinSampler.create(noiseRouter.veinToggle(), noiseRouter.veinRidged(), noiseRouter.veinGap(), noiseConfig.getOreRandomDeriver())); } - } + }*/ } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/FishingBobberEntityMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/FishingBobberEntityMixin.java index 3bd22fc460..8ce0150fbf 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/FishingBobberEntityMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/FishingBobberEntityMixin.java @@ -15,9 +15,6 @@ public abstract class FishingBobberEntityMixin { /** * The fishing bobber checks if the "owner" player still has a fishing rod in his hands * The fishing rod item is hardcoded => We have to add a check for the bedrock fishing rod - * - * @param playerEntity - * @param callbackInfoReturnable */ @Inject(at = @At("HEAD"), method = "removeIfInvalid(Lnet/minecraft/entity/player/PlayerEntity;)Z", cancellable = true) private void removeIfInvalid(PlayerEntity playerEntity, CallbackInfoReturnable callbackInfoReturnable) { diff --git a/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java index b193eeedbc..d464d4826e 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java @@ -191,7 +191,7 @@ private void isDamageProof(DamageSource source, float amount, CallbackInfoReturn } } - @Inject(method = "Lnet/minecraft/entity/ItemEntity;isFireImmune()Z", at = @At("HEAD"), cancellable = true) + @Inject(method = "isFireImmune()Z", at = @At("HEAD"), cancellable = true) private void isFireProof(CallbackInfoReturnable callbackInfoReturnable) { ItemStack itemStack = ((ItemEntity) (Object) this).getStack(); diff --git a/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java index 7cbaa5fbfb..3183dde38c 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java @@ -230,15 +230,13 @@ public abstract class LivingEntityMixin { @Inject(method = "damage(Lnet/minecraft/entity/damage/DamageSource;F)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;isDead()Z", ordinal = 1)) public void spectrum$TriggerArmorWithHitEffect(DamageSource source, float amount, CallbackInfoReturnable cir) { if (!((LivingEntity) (Object) this).world.isClient) { - if (((Object) this) instanceof MobEntity) { - MobEntity thisMobEntity = (MobEntity) (Object) this; + if (((Object) this) instanceof MobEntity thisMobEntity) { for (ItemStack armorItemStack : thisMobEntity.getArmorItems()) { if (armorItemStack.getItem() instanceof ArmorWithHitEffect) { ((ArmorWithHitEffect) armorItemStack.getItem()).onHit(armorItemStack, source, thisMobEntity, amount); } } - } else if (((Object) this) instanceof ServerPlayerEntity) { - ServerPlayerEntity thisPlayerEntity = (ServerPlayerEntity) (Object) this; + } else if (((Object) this) instanceof ServerPlayerEntity thisPlayerEntity) { for (ItemStack armorItemStack : thisPlayerEntity.getArmorItems()) { if (armorItemStack.getItem() instanceof ArmorWithHitEffect) { ((ArmorWithHitEffect) armorItemStack.getItem()).onHit(armorItemStack, source, thisPlayerEntity, amount); diff --git a/src/main/java/de/dafuqs/spectrum/mixin/LoomScreenHandlerMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/LoomScreenHandlerMixin.java index 3610a3deda..5e2f3de271 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/LoomScreenHandlerMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/LoomScreenHandlerMixin.java @@ -24,24 +24,9 @@ @Mixin(LoomScreenHandler.class) public abstract class LoomScreenHandlerMixin extends ScreenHandler { - @Shadow - @Final - Property selectedPattern; - @Shadow - @Final - Slot bannerSlot; - @Shadow - @Final - Slot dyeSlot; @Shadow @Final private Slot patternSlot; - @Shadow - @Final - private Slot outputSlot; - - @Unique - private PlayerEntity player; private LoomScreenHandlerMixin() { super(null, 0); diff --git a/src/main/java/de/dafuqs/spectrum/mixin/PlayerInventoryMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/PlayerInventoryMixin.java index 4fd3ed1393..ec462c9e65 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/PlayerInventoryMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/PlayerInventoryMixin.java @@ -11,7 +11,7 @@ @Mixin(PlayerInventory.class) public class PlayerInventoryMixin { - @Inject(at = @At("HEAD"), method = "addStack(Lnet/minecraft/item/ItemStack;)I", cancellable = true) + @Inject(at = @At("HEAD"), method = "addStack(Lnet/minecraft/item/ItemStack;)I") private void addStack(ItemStack stack, CallbackInfoReturnable callbackInfoReturnable) { PlayerInventory playerInventory = (PlayerInventory) (Object) this; diff --git a/src/main/java/de/dafuqs/spectrum/mixin/WitherEntityMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/WitherEntityMixin.java index 2fb698b31b..78e0bfbba5 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/WitherEntityMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/WitherEntityMixin.java @@ -25,8 +25,6 @@ private void spawnEntity(DamageSource source, int lootingMultiplier, boolean all if (cloversFavorLevel > 0) { int additionalCount = (int) (cloversFavorLevel / 2.0F + ((WitherEntity) (Object) this).getWorld().random.nextFloat() * cloversFavorLevel); itemEntity.getStack().setCount(itemEntity.getStack().getCount() + additionalCount); - - } } } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java index c1c033db76..306043bb5f 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java @@ -54,22 +54,14 @@ public abstract class WorldRendererMixin { @Shadow private ClientWorld world; + // if the mixin renders a bigger outline than the default 1:1. Cancels default outline @Unique private boolean renderedExtendedOutline = false; - @Shadow - private static void drawShapeOutline(MatrixStack matrixStack, VertexConsumer vertexConsumer, VoxelShape voxelShape, double d, double e, double f, float g, float h, float i, float j) { - } - - @Shadow - public abstract void scheduleTerrainUpdate(); - - @Shadow - public abstract void playSong(@Nullable SoundEvent song, BlockPos songPosition); - - @Inject(method = "render(Lnet/minecraft/client/util/math/MatrixStack;FJZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lnet/minecraft/client/render/LightmapTextureManager;Lnet/minecraft/util/math/Matrix4f;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/hit/HitResult;getType()Lnet/minecraft/util/hit/HitResult$Type;"), locals = LocalCapture.CAPTURE_FAILHARD) - private void renderExtendedBlockOutline(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f positionMatrix, CallbackInfo ci, Profiler profiler, boolean b, Vec3d vec3d, double d, double e, double f, Matrix4f matrix4f2, boolean b2, Frustum frustum2, float g, boolean b25, boolean b3, VertexConsumerProvider.Immediate immediate, HitResult hitResult2) { + //TODO + /*@Inject(method = "render(Lnet/minecraft/client/util/math/MatrixStack;FJZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lnet/minecraft/client/render/LightmapTextureManager;Lnet/minecraft/util/math/Matrix4f;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/hit/HitResult;getType()Lnet/minecraft/util/hit/HitResult$Type;"), locals = LocalCapture.PRINT) + private void renderExtendedBlockOutline(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f positionMatrix, CallbackInfo ci, Profiler profiler, boolean b, Vec3d vec3d, double d, double e, double f, Matrix4f matrix4f2, boolean b2, Frustum frustum2, float g, boolean b25, boolean b3, VertexConsumerProvider.Immediate immediate) { renderedExtendedOutline = false; HudRenderers.doNotRenderOverlay(); @@ -91,7 +83,7 @@ private void renderExtendedBlockOutline(MatrixStack matrices, float tickDelta, l } } } - } + }*/ private boolean renderPlacementStaffOutline(MatrixStack matrices, Camera camera, double d, double e, double f, VertexConsumerProvider.Immediate immediate, @NotNull BlockHitResult hitResult) { BlockPos lookingAtPos = hitResult.getBlockPos(); @@ -131,7 +123,7 @@ private boolean renderPlacementStaffOutline(MatrixStack matrices, Camera camera, HudRenderers.setItemStackToRender(new ItemStack(item), positions.size(), false); VertexConsumer linesBuffer = immediate.getBuffer(RenderLayer.getLines()); - drawShapeOutline(matrices, linesBuffer, shape, (double) lookingAtPos.getX() - d, (double) lookingAtPos.getY() - e, (double) lookingAtPos.getZ() - f, 0.0F, 0.0F, 0.0F, 0.4F); + WorldRenderer.drawShapeOutline(matrices, linesBuffer, shape, (double) lookingAtPos.getX() - d, (double) lookingAtPos.getY() - e, (double) lookingAtPos.getZ() - f, 0.0F, 0.0F, 0.0F, 0.4F); return true; } } @@ -178,7 +170,7 @@ private boolean renderExchangeStaffOutline(MatrixStack matrices, Camera camera, HudRenderers.setItemStackToRender(new ItemStack(exchangeBlockItem), positions.size(), false); VertexConsumer linesBuffer = immediate.getBuffer(RenderLayer.getLines()); - drawShapeOutline(matrices, linesBuffer, shape, (double) lookingAtPos.getX() - d, (double) lookingAtPos.getY() - e, (double) lookingAtPos.getZ() - f, 0.0F, 0.0F, 0.0F, 0.4F); + WorldRenderer.drawShapeOutline(matrices, linesBuffer, shape, (double) lookingAtPos.getX() - d, (double) lookingAtPos.getY() - e, (double) lookingAtPos.getZ() - f, 0.0F, 0.0F, 0.0F, 0.4F); return true; } } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/client/accessors/AccessorClientAdvancementManager.java b/src/main/java/de/dafuqs/spectrum/mixin/client/accessors/AccessorClientAdvancementManager.java deleted file mode 100644 index 34eb91bce3..0000000000 --- a/src/main/java/de/dafuqs/spectrum/mixin/client/accessors/AccessorClientAdvancementManager.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.dafuqs.spectrum.mixin.client.accessors; - -import net.minecraft.advancement.Advancement; -import net.minecraft.advancement.AdvancementProgress; -import net.minecraft.client.network.ClientAdvancementManager; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.util.Map; - -@Mixin(ClientAdvancementManager.class) -public interface AccessorClientAdvancementManager { - - @Accessor - Map getAdvancementProgresses(); - -} \ No newline at end of file From cfb56551c6560df01105bfa3f01fec6427a71f36 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Tue, 16 Aug 2022 22:16:21 +0200 Subject: [PATCH 0018/1051] everything is broken --- .../LiminalDimensionReverb.java | 7 +- .../spectrum/deeper_down/DDDimension.java | 1 + .../registries/SpectrumBannerPatternTags.java | 18 +++ .../registries/SpectrumBannerPatterns.java | 8 - .../spectrum/registries/SpectrumItems.java | 6 +- .../noise_settings/deeper_down_noise.json | 147 +++++++++++------- 6 files changed, 115 insertions(+), 72 deletions(-) create mode 100644 src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatternTags.java diff --git a/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java b/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java index 2d39698499..fb2bb0df78 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java +++ b/src/main/java/de/dafuqs/spectrum/compat/liminal_library/LiminalDimensionReverb.java @@ -1,5 +1,6 @@ package de.dafuqs.spectrum.compat.liminal_library; +import de.dafuqs.spectrum.deeper_down.DDDimension; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.ludocrypt.limlib.access.DimensionTypeAccess; @@ -13,8 +14,10 @@ public class LiminalDimensionReverb { public static void setReverbForClientDimension(ClientWorld clientWorld) { - LiminalEffects liminalEffects = new LiminalEffects(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.of(new ReverbSettings().setEnabled(true).setDecayTime(8).setDensity(0.5F))); - ((DimensionTypeAccess) clientWorld.getDimension().effects()).setLiminalEffects(liminalEffects); + if(clientWorld.getDimension().effects().equals(DDDimension.DEEPER_DOWN_EFFECTS_ID)) { + LiminalEffects liminalEffects = new LiminalEffects(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.of(new ReverbSettings().setEnabled(true).setDecayTime(8).setDensity(0.5F))); + ((DimensionTypeAccess)(Object) clientWorld.getDimension()).setLiminalEffects(liminalEffects); + } } } diff --git a/src/main/java/de/dafuqs/spectrum/deeper_down/DDDimension.java b/src/main/java/de/dafuqs/spectrum/deeper_down/DDDimension.java index c1938639fc..a8f52a9247 100644 --- a/src/main/java/de/dafuqs/spectrum/deeper_down/DDDimension.java +++ b/src/main/java/de/dafuqs/spectrum/deeper_down/DDDimension.java @@ -32,6 +32,7 @@ public class DDDimension { + public static final Identifier DEEPER_DOWN_EFFECTS_ID = SpectrumCommon.locate("deeper_down"); public static final Identifier DEEPER_DOWN_DIMENSION_ID = SpectrumCommon.locate("deeper_down_dimension"); public static final RegistryKey DEEPER_DOWN_DIMENSION_KEY = RegistryKey.of(Registry.WORLD_KEY, DEEPER_DOWN_DIMENSION_ID); diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatternTags.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatternTags.java new file mode 100644 index 0000000000..6ac5af0586 --- /dev/null +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatternTags.java @@ -0,0 +1,18 @@ +package de.dafuqs.spectrum.registries; + +import net.minecraft.block.entity.BannerPattern; +import net.minecraft.tag.TagKey; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; + +public class SpectrumBannerPatternTags { + + public static TagKey SPECTRUM_LOGO_TAG = of("pattern_item/logo"); + public static TagKey AMETHYST_CLUSTER_TAG = of("pattern_item/amethyst_cluster"); + public static TagKey AMETHYST_SHARD_TAG = of("pattern_item/amethyst_shard"); + + private static TagKey of(String id) { + return TagKey.of(Registry.BANNER_PATTERN_KEY, new Identifier(id)); + } + +} diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatterns.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatterns.java index 7a17d37212..f688ad4ba2 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatterns.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatterns.java @@ -32,14 +32,6 @@ public class SpectrumBannerPatterns { public static RegistryEntry SHIMMERSTONE; public static RegistryEntry JADE_VINE; - public static TagKey SPECTRUM_LOGO_TAG = of("pattern_item/logo"); - public static TagKey AMETHYST_CLUSTER_TAG = of("pattern_item/amethyst_cluster"); - public static TagKey AMETHYST_SHARD_TAG = of("pattern_item/amethyst_shard"); - - private static TagKey of(String id) { - return TagKey.of(Registry.BANNER_PATTERN_KEY, new Identifier(id)); - } - private static RegistryEntry registerPattern(String id, String shortId) { BannerPattern pattern = Registry.register(Registry.BANNER_PATTERN, new Identifier(SpectrumCommon.MOD_ID, id), new BannerPattern(SpectrumCommon.MOD_ID + "_" + shortId)); return Registry.BANNER_PATTERN.getEntry(Registry.BANNER_PATTERN.getKey(pattern).get()).get(); diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java index 9c817b84ca..35cbf55181 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java @@ -269,9 +269,9 @@ public Map getDefaultEnchantments() { public static final Item RESTORATION_TEA = new RestorationTeaItem(new OwoItemSettings().group(SpectrumItemGroups.ITEM_GROUP_GENERAL).tab(1).rarity(Rarity.UNCOMMON).maxCount(16).recipeRemainder(Items.GLASS_BOTTLE)); // Banner Patterns - public static final Item LOGO_BANNER_PATTERN = new SpectrumBannerPatternItem(toolRareItemSettingsSingle, SpectrumBannerPatterns.SPECTRUM_LOGO_TAG, "item.spectrum.logo_banner_pattern.desc"); - public static final Item AMETHYST_SHARD_BANNER_PATTERN = new SpectrumBannerPatternItem(toolItemSettingsSingle, SpectrumBannerPatterns.AMETHYST_CLUSTER_TAG, "item.minecraft.amethyst_shard"); - public static final Item AMETHYST_CLUSTER_BANNER_PATTERN = new SpectrumBannerPatternItem(toolItemSettingsSingle, SpectrumBannerPatterns.AMETHYST_SHARD_TAG, "block.minecraft.amethyst_cluster"); + public static final Item LOGO_BANNER_PATTERN = new SpectrumBannerPatternItem(toolRareItemSettingsSingle, SpectrumBannerPatternTags.SPECTRUM_LOGO_TAG, "item.spectrum.logo_banner_pattern.desc"); + public static final Item AMETHYST_SHARD_BANNER_PATTERN = new SpectrumBannerPatternItem(toolItemSettingsSingle, SpectrumBannerPatternTags.AMETHYST_CLUSTER_TAG, "item.minecraft.amethyst_shard"); + public static final Item AMETHYST_CLUSTER_BANNER_PATTERN = new SpectrumBannerPatternItem(toolItemSettingsSingle, SpectrumBannerPatternTags.AMETHYST_SHARD_TAG, "block.minecraft.amethyst_cluster"); // Magical Tools public static final Item ENDER_BAG = new EnderBagItem(toolItemSettingsSingle); diff --git a/src/main/resources/data/spectrum/worldgen/noise_settings/deeper_down_noise.json b/src/main/resources/data/spectrum/worldgen/noise_settings/deeper_down_noise.json index 69b87dc31f..3caf173c40 100644 --- a/src/main/resources/data/spectrum/worldgen/noise_settings/deeper_down_noise.json +++ b/src/main/resources/data/spectrum/worldgen/noise_settings/deeper_down_noise.json @@ -17,28 +17,7 @@ "min_y": -448, "height": 384, "size_horizontal": 1, - "size_vertical": 2, - "sampling": { - "xz_scale": 1, - "y_scale": 3, - "xz_factor": 80, - "y_factor": 60 - }, - "bottom_slide": { - "target": 2.5, - "size": 4, - "offset": 0.75 - }, - "top_slide": { - "target": 2.5, - "size": 3, - "offset": -0.8 - }, - "terrain_shaper": { - "offset": 2, - "factor": 1, - "jaggedness": 20 - } + "size_vertical": 2 }, "noise_router": { "barrier": 0, @@ -63,11 +42,11 @@ "shift_y": 0, "shift_z": "minecraft:shift_z" }, - "continents": 0.0, - "depth": 0.0, - "erosion": 0.0, - "ridges": 0.0, - "initial_density_without_jaggedness": 0.0, + "continents": 0, + "erosion": 0, + "depth": 0, + "ridges": 0, + "initial_density_without_jaggedness": 0, "final_density": { "type": "minecraft:squeeze", "argument": { @@ -84,10 +63,10 @@ "type": "minecraft:mul", "argument1": { "type": "minecraft:y_clamped_gradient", - "from_value": 0.0, "from_y": -350, - "to_value": 1.0, - "to_y": -340 + "to_y": -340, + "from_value": 0, + "to_value": 1 }, "argument2": { "type": "minecraft:add", @@ -99,21 +78,21 @@ "type": "minecraft:mul", "argument1": { "type": "minecraft:y_clamped_gradient", - "from_value": 1.0, "from_y": -300, - "to_value": 0.0, - "to_y": -64 + "to_y": -64, + "from_value": 1, + "to_value": 0 }, "argument2": { "type": "minecraft:add", "argument1": -0.9375, "argument2": { "type": "minecraft:old_blended_noise", - "smear_scale_multiplier": 8.0, - "xz_factor": 80.0, "xz_scale": 0.25, - "y_factor": 0.0, - "y_scale": 0.0 + "y_scale": 0.01, + "xz_factor": 80, + "y_factor": 0.01, + "smear_scale_multiplier": 8 } } } @@ -130,23 +109,17 @@ "argument": { "type": "minecraft:range_choice", "input": "minecraft:y", - "max_exclusive": -80.0, - "min_inclusive": -420.0, + "min_inclusive": -420, + "max_exclusive": -80, "when_in_range": { "type": "minecraft:noise", "noise": "minecraft:ore_veininess", "xz_scale": 0.25, "y_scale": 0.25 }, - "when_out_of_range": 0.0 + "when_out_of_range": 0 } }, - "vein_gap": { - "type": "minecraft:noise", - "noise": "minecraft:ore_gap", - "xz_scale": 1.0, - "y_scale": 1.0 - }, "vein_ridged": { "type": "minecraft:add", "argument1": -0.08, @@ -159,15 +132,15 @@ "argument": { "type": "minecraft:range_choice", "input": "minecraft:y", - "max_exclusive": -80.0, - "min_inclusive": -400.0, + "min_inclusive": -400, + "max_exclusive": -80, "when_in_range": { "type": "minecraft:noise", "noise": "minecraft:ore_vein_a", - "xz_scale": 4.0, - "y_scale": 4.0 + "xz_scale": 4, + "y_scale": 4 }, - "when_out_of_range": 0.0 + "when_out_of_range": 0 } } }, @@ -178,21 +151,77 @@ "argument": { "type": "minecraft:range_choice", "input": "minecraft:y", - "max_exclusive": -80.0, - "min_inclusive": -360.0, + "min_inclusive": -360, + "max_exclusive": -80, "when_in_range": { "type": "minecraft:noise", "noise": "minecraft:ore_vein_b", - "xz_scale": 4.0, - "y_scale": 4.0 + "xz_scale": 4, + "y_scale": 4 }, - "when_out_of_range": 0.0 + "when_out_of_range": 0 } } } } + }, + "vein_gap": { + "type": "minecraft:noise", + "noise": "minecraft:ore_gap", + "xz_scale": 1, + "y_scale": 1 } }, + "spawn_target": [ + { + "temperature": [ + -1, + 1 + ], + "humidity": [ + -1, + 1 + ], + "continentalness": [ + -0.11, + 1 + ], + "erosion": [ + -1, + 1 + ], + "weirdness": [ + -1, + -0.16 + ], + "depth": 0, + "offset": 0 + }, + { + "temperature": [ + -1, + 1 + ], + "humidity": [ + -1, + 1 + ], + "continentalness": [ + -0.11, + 1 + ], + "erosion": [ + -1, + 1 + ], + "weirdness": [ + 0.16, + 1 + ], + "depth": 0, + "offset": 0 + } + ], "surface_rule": { "type": "minecraft:sequence", "sequence": [ @@ -222,12 +251,12 @@ "type": "minecraft:condition", "if_true": { "type": "minecraft:vertical_gradient", - "false_at_and_above": { - "absolute": -220 - }, "random_name": "minecraft:deepslate", "true_at_and_below": { "absolute": -234 + }, + "false_at_and_above": { + "absolute": -220 } }, "then_run": { From 1a14ad099d48e4782c8678d17ea04e6e7026c039 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Thu, 18 Aug 2022 18:18:11 +0200 Subject: [PATCH 0019/1051] fixes --- .../listeners/ItemEntityEventQueue.java | 5 --- .../registries/SpectrumBiomeTags.java | 5 ++- .../biome/has_structure/ancient_ruins.json | 42 ------------------- .../has_structure/underground_structures.json | 4 +- 4 files changed, 6 insertions(+), 50 deletions(-) delete mode 100644 src/main/resources/data/c/tags/worldgen/biome/has_structure/ancient_ruins.json diff --git a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java index 5256d071a3..a7eca0847e 100644 --- a/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java +++ b/src/main/java/de/dafuqs/spectrum/events/listeners/ItemEntityEventQueue.java @@ -31,11 +31,6 @@ public void acceptEvent(World world, GameEvent.Message event, Vec3d sourcePos) { } } - public boolean listen(ServerWorld world, GameEvent.Message event, Vec3d pos) { - //TODO Need to implement this - return false; - } - public static class EventEntry { public GameEvent gameEvent; public ItemEntity itemEntity; diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBiomeTags.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBiomeTags.java index 0ee08134c8..688bea0125 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBiomeTags.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBiomeTags.java @@ -2,14 +2,15 @@ import de.dafuqs.spectrum.SpectrumCommon; import net.minecraft.tag.TagKey; -import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; import net.minecraft.world.biome.Biome; public class SpectrumBiomeTags { + public static final TagKey HAS_ANCIENT_RUINS_BIOMES = getReference("has_structure/ancient_ruins"); private static TagKey getReference(String id) { - return TagKey.of(Registry.BIOME_KEY, new Identifier(SpectrumCommon.MOD_ID, id)); + return TagKey.of(Registry.BIOME_KEY, SpectrumCommon.locate(id)); } + } diff --git a/src/main/resources/data/c/tags/worldgen/biome/has_structure/ancient_ruins.json b/src/main/resources/data/c/tags/worldgen/biome/has_structure/ancient_ruins.json deleted file mode 100644 index ef4ba7f653..0000000000 --- a/src/main/resources/data/c/tags/worldgen/biome/has_structure/ancient_ruins.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "replace": false, - "values": [ - { - "id": "#minecraft:has_structure/village_plains", - "replace": "false" - }, - { - "id": "#minecraft:is_hills", - "replace": "false" - }, - { - "id": "#minecraft:is_jungle", - "replace": "false" - }, - { - "id": "#minecraft:is_forest", - "replace": "false" - }, - { - "id": "#minecraft:allows_surface_slime_spawns", - "replace": "false" - }, - { - "id": "#minecraft:is_badlands", - "replace": "false" - }, - { - "id": "#minecraft:is_mountain", - "replace": "false" - }, - "minecraft:desert", - { - "id": "#minecraft:is_savanna", - "replace": "false" - }, - { - "id": "#minecraft:is_taiga", - "replace": "false" - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/worldgen/biome/has_structure/underground_structures.json b/src/main/resources/data/spectrum/tags/worldgen/biome/has_structure/underground_structures.json index 0ae4dcb352..183a653d4d 100644 --- a/src/main/resources/data/spectrum/tags/worldgen/biome/has_structure/underground_structures.json +++ b/src/main/resources/data/spectrum/tags/worldgen/biome/has_structure/underground_structures.json @@ -1,6 +1,8 @@ { "replace": false, "values": [ - "#minecraft:has_structure/mineshaft" + { + "id": "#minecraft:is_overworld" + } ] } \ No newline at end of file From bbab0fca06b72129932cb15c935aec3c3c2b52b0 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Thu, 18 Aug 2022 19:00:32 +0200 Subject: [PATCH 0020/1051] renamed colored wooden blocks. Implements #33 --- .../spectrum/registries/SpectrumBlocks.java | 394 +++++++++--------- .../spectrum/registries/SpectrumItems.java | 192 ++++----- ...ed_plank_button.json => black_button.json} | 48 +-- ...{red_plank_fence.json => black_fence.json} | 10 +- ..._fence_gate.json => black_fence_gate.json} | 32 +- .../blockstates/black_plank_button.json | 118 ------ .../blockstates/black_plank_fence.json | 48 --- .../blockstates/black_plank_fence_gate.json | 80 ---- .../black_plank_pressure_plate.json | 10 - .../blockstates/black_plank_stairs.json | 209 ---------- .../blockstates/black_pressure_plate.json | 10 + ...{black_plank_slab.json => black_slab.json} | 4 +- ...ed_plank_stairs.json => black_stairs.json} | 80 ++-- ...ime_plank_button.json => blue_button.json} | 48 +-- ...{gray_plank_fence.json => blue_fence.json} | 10 +- ...k_fence_gate.json => blue_fence_gate.json} | 32 +- .../blue_plank_pressure_plate.json | 10 - .../blockstates/blue_pressure_plate.json | 10 + .../{blue_plank_slab.json => blue_slab.json} | 4 +- ...ime_plank_stairs.json => blue_stairs.json} | 80 ++-- ...an_plank_button.json => brown_button.json} | 48 +-- ...lime_plank_fence.json => brown_fence.json} | 10 +- ..._fence_gate.json => brown_fence_gate.json} | 32 +- .../blockstates/brown_plank_button.json | 118 ------ .../blockstates/brown_plank_fence.json | 48 --- .../blockstates/brown_plank_fence_gate.json | 80 ---- .../brown_plank_pressure_plate.json | 10 - .../blockstates/brown_plank_stairs.json | 209 ---------- .../blockstates/brown_pressure_plate.json | 10 + ...{brown_plank_slab.json => brown_slab.json} | 4 +- ...an_plank_stairs.json => brown_stairs.json} | 80 ++-- ...lue_plank_button.json => cyan_button.json} | 48 +-- ...{cyan_plank_fence.json => cyan_fence.json} | 10 +- ...k_fence_gate.json => cyan_fence_gate.json} | 32 +- .../cyan_plank_pressure_plate.json | 10 - .../blockstates/cyan_pressure_plate.json | 10 + .../{cyan_plank_slab.json => cyan_slab.json} | 4 +- ...lue_plank_stairs.json => cyan_stairs.json} | 80 ++-- .../spectrum/blockstates/gray_button.json | 118 ++++++ .../spectrum/blockstates/gray_fence.json | 48 +++ .../spectrum/blockstates/gray_fence_gate.json | 80 ++++ .../gray_plank_pressure_plate.json | 10 - .../blockstates/gray_pressure_plate.json | 10 + .../{gray_plank_slab.json => gray_slab.json} | 4 +- .../spectrum/blockstates/gray_stairs.json | 209 ++++++++++ .../spectrum/blockstates/green_button.json | 118 ++++++ .../spectrum/blockstates/green_fence.json | 48 +++ .../blockstates/green_fence_gate.json | 80 ++++ .../blockstates/green_plank_button.json | 118 ------ .../blockstates/green_plank_fence.json | 48 --- .../blockstates/green_plank_fence_gate.json | 80 ---- .../green_plank_pressure_plate.json | 10 - .../blockstates/green_plank_stairs.json | 209 ---------- .../blockstates/green_pressure_plate.json | 10 + ...{green_plank_slab.json => green_slab.json} | 4 +- .../spectrum/blockstates/green_stairs.json | 209 ++++++++++ ...ank_button.json => light_blue_button.json} | 48 +-- ...plank_fence.json => light_blue_fence.json} | 10 +- ...e_gate.json => light_blue_fence_gate.json} | 32 +- .../blockstates/light_blue_plank_button.json | 118 ------ .../blockstates/light_blue_plank_fence.json | 48 --- .../light_blue_plank_fence_gate.json | 80 ---- .../light_blue_plank_pressure_plate.json | 10 - .../blockstates/light_blue_plank_stairs.json | 209 ---------- .../light_blue_pressure_plate.json | 10 + ...e_plank_slab.json => light_blue_slab.json} | 4 +- ...ank_stairs.json => light_blue_stairs.json} | 80 ++-- .../blockstates/light_gray_button.json | 118 ++++++ .../blockstates/light_gray_fence.json | 48 +++ .../blockstates/light_gray_fence_gate.json | 80 ++++ .../blockstates/light_gray_plank_button.json | 118 ------ .../blockstates/light_gray_plank_fence.json | 48 --- .../light_gray_plank_fence_gate.json | 80 ---- .../light_gray_plank_pressure_plate.json | 10 - .../blockstates/light_gray_plank_stairs.json | 209 ---------- .../light_gray_pressure_plate.json | 10 + ...y_plank_slab.json => light_gray_slab.json} | 4 +- .../blockstates/light_gray_stairs.json | 209 ++++++++++ .../spectrum/blockstates/lime_button.json | 118 ++++++ .../spectrum/blockstates/lime_fence.json | 48 +++ .../spectrum/blockstates/lime_fence_gate.json | 80 ++++ .../lime_plank_pressure_plate.json | 10 - .../blockstates/lime_pressure_plate.json | 10 + .../{lime_plank_slab.json => lime_slab.json} | 4 +- .../spectrum/blockstates/lime_stairs.json | 209 ++++++++++ .../spectrum/blockstates/magenta_button.json | 118 ++++++ .../spectrum/blockstates/magenta_fence.json | 48 +++ .../blockstates/magenta_fence_gate.json | 80 ++++ .../blockstates/magenta_plank_button.json | 118 ------ .../blockstates/magenta_plank_fence.json | 48 --- .../blockstates/magenta_plank_fence_gate.json | 80 ---- .../magenta_plank_pressure_plate.json | 10 - .../blockstates/magenta_plank_stairs.json | 209 ---------- .../blockstates/magenta_pressure_plate.json | 10 + ...enta_plank_slab.json => magenta_slab.json} | 4 +- .../spectrum/blockstates/magenta_stairs.json | 209 ++++++++++ .../spectrum/blockstates/orange_button.json | 118 ++++++ .../spectrum/blockstates/orange_fence.json | 48 +++ .../blockstates/orange_fence_gate.json | 80 ++++ .../blockstates/orange_plank_button.json | 118 ------ .../blockstates/orange_plank_fence.json | 48 --- .../blockstates/orange_plank_fence_gate.json | 80 ---- .../orange_plank_pressure_plate.json | 10 - .../blockstates/orange_plank_stairs.json | 209 ---------- .../blockstates/orange_pressure_plate.json | 10 + ...range_plank_slab.json => orange_slab.json} | 4 +- .../spectrum/blockstates/orange_stairs.json | 209 ++++++++++ .../spectrum/blockstates/pink_button.json | 118 ++++++ .../spectrum/blockstates/pink_fence.json | 48 +++ .../spectrum/blockstates/pink_fence_gate.json | 80 ++++ .../blockstates/pink_plank_button.json | 118 ------ .../blockstates/pink_plank_fence.json | 48 --- .../blockstates/pink_plank_fence_gate.json | 80 ---- .../pink_plank_pressure_plate.json | 10 - .../blockstates/pink_plank_stairs.json | 209 ---------- .../blockstates/pink_pressure_plate.json | 10 + .../{pink_plank_slab.json => pink_slab.json} | 4 +- .../spectrum/blockstates/pink_stairs.json | 209 ++++++++++ .../spectrum/blockstates/purple_button.json | 118 ++++++ .../spectrum/blockstates/purple_fence.json | 48 +++ .../blockstates/purple_fence_gate.json | 80 ++++ .../blockstates/purple_plank_button.json | 118 ------ .../blockstates/purple_plank_fence.json | 48 --- .../blockstates/purple_plank_fence_gate.json | 80 ---- .../purple_plank_pressure_plate.json | 10 - .../blockstates/purple_plank_stairs.json | 209 ---------- .../blockstates/purple_pressure_plate.json | 10 + ...urple_plank_slab.json => purple_slab.json} | 4 +- .../spectrum/blockstates/purple_stairs.json | 209 ++++++++++ .../spectrum/blockstates/red_button.json | 118 ++++++ .../spectrum/blockstates/red_fence.json | 48 +++ .../spectrum/blockstates/red_fence_gate.json | 80 ++++ .../blockstates/red_plank_pressure_plate.json | 10 - .../blockstates/red_pressure_plate.json | 10 + .../{red_plank_slab.json => red_slab.json} | 4 +- .../spectrum/blockstates/red_stairs.json | 209 ++++++++++ .../spectrum/blockstates/white_button.json | 118 ++++++ .../spectrum/blockstates/white_fence.json | 48 +++ .../blockstates/white_fence_gate.json | 80 ++++ .../blockstates/white_plank_button.json | 118 ------ .../blockstates/white_plank_fence.json | 48 --- .../blockstates/white_plank_fence_gate.json | 80 ---- .../white_plank_pressure_plate.json | 10 - .../blockstates/white_plank_stairs.json | 209 ---------- .../blockstates/white_pressure_plate.json | 10 + ...{white_plank_slab.json => white_slab.json} | 4 +- .../spectrum/blockstates/white_stairs.json | 209 ++++++++++ .../spectrum/blockstates/yellow_button.json | 118 ++++++ .../spectrum/blockstates/yellow_fence.json | 48 +++ .../blockstates/yellow_fence_gate.json | 80 ++++ .../blockstates/yellow_plank_button.json | 118 ------ .../blockstates/yellow_plank_fence.json | 48 --- .../blockstates/yellow_plank_fence_gate.json | 80 ---- .../yellow_plank_pressure_plate.json | 10 - .../blockstates/yellow_plank_stairs.json | 209 ---------- .../blockstates/yellow_pressure_plate.json | 10 + ...ellow_plank_slab.json => yellow_slab.json} | 4 +- .../spectrum/blockstates/yellow_stairs.json | 209 ++++++++++ .../resources/assets/spectrum/lang/de_de.json | 192 ++++----- .../resources/assets/spectrum/lang/en_us.json | 192 ++++----- .../resources/assets/spectrum/lang/pt_br.json | 192 ++++----- .../resources/assets/spectrum/lang/zh_cn.json | 192 ++++----- ...ck_plank_button.json => black_button.json} | 0 ...ntory.json => black_button_inventory.json} | 0 ...pressed.json => black_button_pressed.json} | 0 ..._fence_gate.json => black_fence_gate.json} | 0 ...e_open.json => black_fence_gate_open.json} | 0 ...e_wall.json => black_fence_gate_wall.json} | 0 ...n.json => black_fence_gate_wall_open.json} | 0 ...entory.json => black_fence_inventory.json} | 0 ..._fence_post.json => black_fence_post.json} | 0 ..._fence_side.json => black_fence_side.json} | 0 ...e_plate.json => black_pressure_plate.json} | 0 ...wn.json => black_pressure_plate_down.json} | 0 ...{black_plank_slab.json => black_slab.json} | 0 ...lank_slab_top.json => black_slab_top.json} | 0 ...ck_plank_stairs.json => black_stairs.json} | 0 ...irs_inner.json => black_stairs_inner.json} | 0 ...irs_outer.json => black_stairs_outer.json} | 0 ...lue_plank_button.json => blue_button.json} | 0 ...entory.json => blue_button_inventory.json} | 0 ..._pressed.json => blue_button_pressed.json} | 0 ...k_fence_gate.json => blue_fence_gate.json} | 0 ...te_open.json => blue_fence_gate_open.json} | 0 ...te_wall.json => blue_fence_gate_wall.json} | 0 ...en.json => blue_fence_gate_wall_open.json} | 0 ...ventory.json => blue_fence_inventory.json} | 0 ...k_fence_post.json => blue_fence_post.json} | 0 ...k_fence_side.json => blue_fence_side.json} | 0 ...re_plate.json => blue_pressure_plate.json} | 0 ...own.json => blue_pressure_plate_down.json} | 0 .../{blue_plank_slab.json => blue_slab.json} | 0 ...plank_slab_top.json => blue_slab_top.json} | 0 ...lue_plank_stairs.json => blue_stairs.json} | 0 ...airs_inner.json => blue_stairs_inner.json} | 0 ...airs_outer.json => blue_stairs_outer.json} | 0 ...wn_plank_button.json => brown_button.json} | 0 ...ntory.json => brown_button_inventory.json} | 0 ...pressed.json => brown_button_pressed.json} | 0 ..._fence_gate.json => brown_fence_gate.json} | 0 ...e_open.json => brown_fence_gate_open.json} | 0 ...e_wall.json => brown_fence_gate_wall.json} | 0 ...n.json => brown_fence_gate_wall_open.json} | 0 ...entory.json => brown_fence_inventory.json} | 0 ..._fence_post.json => brown_fence_post.json} | 0 ..._fence_side.json => brown_fence_side.json} | 0 ...e_plate.json => brown_pressure_plate.json} | 0 ...wn.json => brown_pressure_plate_down.json} | 0 ...{brown_plank_slab.json => brown_slab.json} | 0 ...lank_slab_top.json => brown_slab_top.json} | 0 ...wn_plank_stairs.json => brown_stairs.json} | 0 ...irs_inner.json => brown_stairs_inner.json} | 0 ...irs_outer.json => brown_stairs_outer.json} | 0 ...yan_plank_button.json => cyan_button.json} | 0 ...entory.json => cyan_button_inventory.json} | 0 ..._pressed.json => cyan_button_pressed.json} | 0 ...k_fence_gate.json => cyan_fence_gate.json} | 0 ...te_open.json => cyan_fence_gate_open.json} | 0 ...te_wall.json => cyan_fence_gate_wall.json} | 0 ...en.json => cyan_fence_gate_wall_open.json} | 0 ...ventory.json => cyan_fence_inventory.json} | 0 ...k_fence_post.json => cyan_fence_post.json} | 0 ...k_fence_side.json => cyan_fence_side.json} | 0 ...re_plate.json => cyan_pressure_plate.json} | 0 ...own.json => cyan_pressure_plate_down.json} | 0 .../{cyan_plank_slab.json => cyan_slab.json} | 0 ...plank_slab_top.json => cyan_slab_top.json} | 0 ...yan_plank_stairs.json => cyan_stairs.json} | 0 ...airs_inner.json => cyan_stairs_inner.json} | 0 ...airs_outer.json => cyan_stairs_outer.json} | 0 ...ray_plank_button.json => gray_button.json} | 0 ...entory.json => gray_button_inventory.json} | 0 ..._pressed.json => gray_button_pressed.json} | 0 ...k_fence_gate.json => gray_fence_gate.json} | 0 ...te_open.json => gray_fence_gate_open.json} | 0 ...te_wall.json => gray_fence_gate_wall.json} | 0 ...en.json => gray_fence_gate_wall_open.json} | 0 ...ventory.json => gray_fence_inventory.json} | 0 ...k_fence_post.json => gray_fence_post.json} | 0 ...k_fence_side.json => gray_fence_side.json} | 0 ...re_plate.json => gray_pressure_plate.json} | 0 ...own.json => gray_pressure_plate_down.json} | 0 .../{gray_plank_slab.json => gray_slab.json} | 0 ...plank_slab_top.json => gray_slab_top.json} | 0 ...ray_plank_stairs.json => gray_stairs.json} | 0 ...airs_inner.json => gray_stairs_inner.json} | 0 ...airs_outer.json => gray_stairs_outer.json} | 0 ...en_plank_button.json => green_button.json} | 0 ...ntory.json => green_button_inventory.json} | 0 ...pressed.json => green_button_pressed.json} | 0 ..._fence_gate.json => green_fence_gate.json} | 0 ...e_open.json => green_fence_gate_open.json} | 0 ...e_wall.json => green_fence_gate_wall.json} | 0 ...n.json => green_fence_gate_wall_open.json} | 0 ...entory.json => green_fence_inventory.json} | 0 ..._fence_post.json => green_fence_post.json} | 0 ..._fence_side.json => green_fence_side.json} | 0 ...e_plate.json => green_pressure_plate.json} | 0 ...wn.json => green_pressure_plate_down.json} | 0 ...{green_plank_slab.json => green_slab.json} | 0 ...lank_slab_top.json => green_slab_top.json} | 0 ...en_plank_stairs.json => green_stairs.json} | 0 ...irs_inner.json => green_stairs_inner.json} | 0 ...irs_outer.json => green_stairs_outer.json} | 0 ...ank_button.json => light_blue_button.json} | 0 ....json => light_blue_button_inventory.json} | 0 ...ed.json => light_blue_button_pressed.json} | 0 ...e_gate.json => light_blue_fence_gate.json} | 0 ...n.json => light_blue_fence_gate_open.json} | 0 ...l.json => light_blue_fence_gate_wall.json} | 0 ...n => light_blue_fence_gate_wall_open.json} | 0 ...y.json => light_blue_fence_inventory.json} | 0 ...e_post.json => light_blue_fence_post.json} | 0 ...e_side.json => light_blue_fence_side.json} | 0 ...te.json => light_blue_pressure_plate.json} | 0 ...on => light_blue_pressure_plate_down.json} | 0 ...e_plank_slab.json => light_blue_slab.json} | 0 ...slab_top.json => light_blue_slab_top.json} | 0 ...ank_stairs.json => light_blue_stairs.json} | 0 ...nner.json => light_blue_stairs_inner.json} | 0 ...uter.json => light_blue_stairs_outer.json} | 0 ...ank_button.json => light_gray_button.json} | 0 ....json => light_gray_button_inventory.json} | 0 ...ed.json => light_gray_button_pressed.json} | 0 ...e_gate.json => light_gray_fence_gate.json} | 0 ...n.json => light_gray_fence_gate_open.json} | 0 ...l.json => light_gray_fence_gate_wall.json} | 0 ...n => light_gray_fence_gate_wall_open.json} | 0 ...y.json => light_gray_fence_inventory.json} | 0 ...e_post.json => light_gray_fence_post.json} | 0 ...e_side.json => light_gray_fence_side.json} | 0 ...te.json => light_gray_pressure_plate.json} | 0 ...on => light_gray_pressure_plate_down.json} | 0 ...y_plank_slab.json => light_gray_slab.json} | 0 ...slab_top.json => light_gray_slab_top.json} | 0 ...ank_stairs.json => light_gray_stairs.json} | 0 ...nner.json => light_gray_stairs_inner.json} | 0 ...uter.json => light_gray_stairs_outer.json} | 0 ...ime_plank_button.json => lime_button.json} | 0 ...entory.json => lime_button_inventory.json} | 0 ..._pressed.json => lime_button_pressed.json} | 0 ...k_fence_gate.json => lime_fence_gate.json} | 0 ...te_open.json => lime_fence_gate_open.json} | 0 ...te_wall.json => lime_fence_gate_wall.json} | 0 ...en.json => lime_fence_gate_wall_open.json} | 0 ...ventory.json => lime_fence_inventory.json} | 0 ...k_fence_post.json => lime_fence_post.json} | 0 ...k_fence_side.json => lime_fence_side.json} | 0 ...re_plate.json => lime_pressure_plate.json} | 0 ...own.json => lime_pressure_plate_down.json} | 0 .../{lime_plank_slab.json => lime_slab.json} | 0 ...plank_slab_top.json => lime_slab_top.json} | 0 ...ime_plank_stairs.json => lime_stairs.json} | 0 ...airs_inner.json => lime_stairs_inner.json} | 0 ...airs_outer.json => lime_stairs_outer.json} | 0 ..._plank_button.json => magenta_button.json} | 0 ...ory.json => magenta_button_inventory.json} | 0 ...essed.json => magenta_button_pressed.json} | 0 ...ence_gate.json => magenta_fence_gate.json} | 0 ...open.json => magenta_fence_gate_open.json} | 0 ...wall.json => magenta_fence_gate_wall.json} | 0 ...json => magenta_fence_gate_wall_open.json} | 0 ...tory.json => magenta_fence_inventory.json} | 0 ...ence_post.json => magenta_fence_post.json} | 0 ...ence_side.json => magenta_fence_side.json} | 0 ...plate.json => magenta_pressure_plate.json} | 0 ....json => magenta_pressure_plate_down.json} | 0 ...enta_plank_slab.json => magenta_slab.json} | 0 ...nk_slab_top.json => magenta_slab_top.json} | 0 ..._plank_stairs.json => magenta_stairs.json} | 0 ...s_inner.json => magenta_stairs_inner.json} | 0 ...s_outer.json => magenta_stairs_outer.json} | 0 ...e_plank_button.json => orange_button.json} | 0 ...tory.json => orange_button_inventory.json} | 0 ...ressed.json => orange_button_pressed.json} | 0 ...fence_gate.json => orange_fence_gate.json} | 0 ..._open.json => orange_fence_gate_open.json} | 0 ..._wall.json => orange_fence_gate_wall.json} | 0 ....json => orange_fence_gate_wall_open.json} | 0 ...ntory.json => orange_fence_inventory.json} | 0 ...fence_post.json => orange_fence_post.json} | 0 ...fence_side.json => orange_fence_side.json} | 0 ..._plate.json => orange_pressure_plate.json} | 0 ...n.json => orange_pressure_plate_down.json} | 0 ...range_plank_slab.json => orange_slab.json} | 0 ...ank_slab_top.json => orange_slab_top.json} | 0 ...e_plank_stairs.json => orange_stairs.json} | 0 ...rs_inner.json => orange_stairs_inner.json} | 0 ...rs_outer.json => orange_stairs_outer.json} | 0 ...ink_plank_button.json => pink_button.json} | 0 ...entory.json => pink_button_inventory.json} | 0 ..._pressed.json => pink_button_pressed.json} | 0 ...k_fence_gate.json => pink_fence_gate.json} | 0 ...te_open.json => pink_fence_gate_open.json} | 0 ...te_wall.json => pink_fence_gate_wall.json} | 0 ...en.json => pink_fence_gate_wall_open.json} | 0 ...ventory.json => pink_fence_inventory.json} | 0 ...k_fence_post.json => pink_fence_post.json} | 0 ...k_fence_side.json => pink_fence_side.json} | 0 ...re_plate.json => pink_pressure_plate.json} | 0 ...own.json => pink_pressure_plate_down.json} | 0 .../{pink_plank_slab.json => pink_slab.json} | 0 ...plank_slab_top.json => pink_slab_top.json} | 0 ...ink_plank_stairs.json => pink_stairs.json} | 0 ...airs_inner.json => pink_stairs_inner.json} | 0 ...airs_outer.json => pink_stairs_outer.json} | 0 ...e_plank_button.json => purple_button.json} | 0 ...tory.json => purple_button_inventory.json} | 0 ...ressed.json => purple_button_pressed.json} | 0 ...fence_gate.json => purple_fence_gate.json} | 0 ..._open.json => purple_fence_gate_open.json} | 0 ..._wall.json => purple_fence_gate_wall.json} | 0 ....json => purple_fence_gate_wall_open.json} | 0 ...ntory.json => purple_fence_inventory.json} | 0 ...fence_post.json => purple_fence_post.json} | 0 ...fence_side.json => purple_fence_side.json} | 0 ..._plate.json => purple_pressure_plate.json} | 0 ...n.json => purple_pressure_plate_down.json} | 0 ...urple_plank_slab.json => purple_slab.json} | 0 ...ank_slab_top.json => purple_slab_top.json} | 0 ...e_plank_stairs.json => purple_stairs.json} | 0 ...rs_inner.json => purple_stairs_inner.json} | 0 ...rs_outer.json => purple_stairs_outer.json} | 0 ...{red_plank_button.json => red_button.json} | 0 ...ventory.json => red_button_inventory.json} | 0 ...n_pressed.json => red_button_pressed.json} | 0 ...nk_fence_gate.json => red_fence_gate.json} | 0 ...ate_open.json => red_fence_gate_open.json} | 0 ...ate_wall.json => red_fence_gate_wall.json} | 0 ...pen.json => red_fence_gate_wall_open.json} | 0 ...nventory.json => red_fence_inventory.json} | 0 ...nk_fence_post.json => red_fence_post.json} | 0 ...nk_fence_side.json => red_fence_side.json} | 0 ...ure_plate.json => red_pressure_plate.json} | 0 ...down.json => red_pressure_plate_down.json} | 0 .../{red_plank_slab.json => red_slab.json} | 0 ..._plank_slab_top.json => red_slab_top.json} | 0 ...{red_plank_stairs.json => red_stairs.json} | 0 ...tairs_inner.json => red_stairs_inner.json} | 0 ...tairs_outer.json => red_stairs_outer.json} | 0 ...te_plank_button.json => white_button.json} | 0 ...ntory.json => white_button_inventory.json} | 0 ...pressed.json => white_button_pressed.json} | 0 ..._fence_gate.json => white_fence_gate.json} | 0 ...e_open.json => white_fence_gate_open.json} | 0 ...e_wall.json => white_fence_gate_wall.json} | 0 ...n.json => white_fence_gate_wall_open.json} | 0 ...entory.json => white_fence_inventory.json} | 0 ..._fence_post.json => white_fence_post.json} | 0 ..._fence_side.json => white_fence_side.json} | 0 ...e_plate.json => white_pressure_plate.json} | 0 ...wn.json => white_pressure_plate_down.json} | 0 ...{white_plank_slab.json => white_slab.json} | 0 ...lank_slab_top.json => white_slab_top.json} | 0 ...te_plank_stairs.json => white_stairs.json} | 0 ...irs_inner.json => white_stairs_inner.json} | 0 ...irs_outer.json => white_stairs_outer.json} | 0 ...w_plank_button.json => yellow_button.json} | 0 ...tory.json => yellow_button_inventory.json} | 0 ...ressed.json => yellow_button_pressed.json} | 0 ...fence_gate.json => yellow_fence_gate.json} | 0 ..._open.json => yellow_fence_gate_open.json} | 0 ..._wall.json => yellow_fence_gate_wall.json} | 0 ....json => yellow_fence_gate_wall_open.json} | 0 ...ntory.json => yellow_fence_inventory.json} | 0 ...fence_post.json => yellow_fence_post.json} | 0 ...fence_side.json => yellow_fence_side.json} | 0 ..._plate.json => yellow_pressure_plate.json} | 0 ...n.json => yellow_pressure_plate_down.json} | 0 ...ellow_plank_slab.json => yellow_slab.json} | 0 ...ank_slab_top.json => yellow_slab_top.json} | 0 ...w_plank_stairs.json => yellow_stairs.json} | 0 ...rs_inner.json => yellow_stairs_inner.json} | 0 ...rs_outer.json => yellow_stairs_outer.json} | 0 .../spectrum/models/item/black_button.json | 3 + .../spectrum/models/item/black_fence.json | 3 + .../models/item/black_fence_gate.json | 3 + .../models/item/black_plank_button.json | 3 - .../models/item/black_plank_fence.json | 3 - .../models/item/black_plank_fence_gate.json | 3 - .../item/black_plank_pressure_plate.json | 3 - .../models/item/black_plank_slab.json | 3 - .../models/item/black_plank_stairs.json | 3 - .../models/item/black_pressure_plate.json | 3 + .../spectrum/models/item/black_slab.json | 3 + .../spectrum/models/item/black_stairs.json | 3 + .../spectrum/models/item/blue_button.json | 3 + .../spectrum/models/item/blue_fence.json | 3 + .../spectrum/models/item/blue_fence_gate.json | 3 + .../models/item/blue_plank_button.json | 3 - .../models/item/blue_plank_fence.json | 3 - .../models/item/blue_plank_fence_gate.json | 3 - .../item/blue_plank_pressure_plate.json | 3 - .../spectrum/models/item/blue_plank_slab.json | 3 - .../models/item/blue_plank_stairs.json | 3 - .../models/item/blue_pressure_plate.json | 3 + .../spectrum/models/item/blue_slab.json | 3 + .../spectrum/models/item/blue_stairs.json | 3 + .../spectrum/models/item/brown_button.json | 3 + .../spectrum/models/item/brown_fence.json | 3 + .../models/item/brown_fence_gate.json | 3 + .../models/item/brown_plank_button.json | 3 - .../models/item/brown_plank_fence.json | 3 - .../models/item/brown_plank_fence_gate.json | 3 - .../item/brown_plank_pressure_plate.json | 3 - .../models/item/brown_plank_slab.json | 3 - .../models/item/brown_plank_stairs.json | 3 - .../models/item/brown_pressure_plate.json | 3 + .../spectrum/models/item/brown_slab.json | 3 + .../spectrum/models/item/brown_stairs.json | 3 + .../spectrum/models/item/cyan_button.json | 3 + .../spectrum/models/item/cyan_fence.json | 3 + .../spectrum/models/item/cyan_fence_gate.json | 3 + .../models/item/cyan_plank_button.json | 3 - .../models/item/cyan_plank_fence.json | 3 - .../models/item/cyan_plank_fence_gate.json | 3 - .../item/cyan_plank_pressure_plate.json | 3 - .../spectrum/models/item/cyan_plank_slab.json | 3 - .../models/item/cyan_plank_stairs.json | 3 - .../models/item/cyan_pressure_plate.json | 3 + .../spectrum/models/item/cyan_slab.json | 3 + .../spectrum/models/item/cyan_stairs.json | 3 + .../spectrum/models/item/gray_button.json | 3 + .../spectrum/models/item/gray_fence.json | 3 + .../spectrum/models/item/gray_fence_gate.json | 3 + .../models/item/gray_plank_button.json | 3 - .../models/item/gray_plank_fence.json | 3 - .../models/item/gray_plank_fence_gate.json | 3 - .../item/gray_plank_pressure_plate.json | 3 - .../spectrum/models/item/gray_plank_slab.json | 3 - .../models/item/gray_plank_stairs.json | 3 - .../models/item/gray_pressure_plate.json | 3 + .../spectrum/models/item/gray_slab.json | 3 + .../spectrum/models/item/gray_stairs.json | 3 + .../spectrum/models/item/green_button.json | 3 + .../spectrum/models/item/green_fence.json | 3 + .../models/item/green_fence_gate.json | 3 + .../models/item/green_plank_button.json | 3 - .../models/item/green_plank_fence.json | 3 - .../models/item/green_plank_fence_gate.json | 3 - .../item/green_plank_pressure_plate.json | 3 - .../models/item/green_plank_slab.json | 3 - .../models/item/green_plank_stairs.json | 3 - .../models/item/green_pressure_plate.json | 3 + .../spectrum/models/item/green_slab.json | 3 + .../spectrum/models/item/green_stairs.json | 3 + .../models/item/light_blue_button.json | 3 + .../models/item/light_blue_fence.json | 3 + .../models/item/light_blue_fence_gate.json | 3 + .../models/item/light_blue_plank_button.json | 3 - .../models/item/light_blue_plank_fence.json | 3 - .../item/light_blue_plank_fence_gate.json | 3 - .../item/light_blue_plank_pressure_plate.json | 3 - .../models/item/light_blue_plank_slab.json | 3 - .../models/item/light_blue_plank_stairs.json | 3 - .../item/light_blue_pressure_plate.json | 3 + .../spectrum/models/item/light_blue_slab.json | 3 + .../models/item/light_blue_stairs.json | 3 + .../models/item/light_gray_button.json | 3 + .../models/item/light_gray_fence.json | 3 + .../models/item/light_gray_fence_gate.json | 3 + .../models/item/light_gray_plank_button.json | 3 - .../models/item/light_gray_plank_fence.json | 3 - .../item/light_gray_plank_fence_gate.json | 3 - .../item/light_gray_plank_pressure_plate.json | 3 - .../models/item/light_gray_plank_slab.json | 3 - .../models/item/light_gray_plank_stairs.json | 3 - .../item/light_gray_pressure_plate.json | 3 + .../spectrum/models/item/light_gray_slab.json | 3 + .../models/item/light_gray_stairs.json | 3 + .../spectrum/models/item/lime_button.json | 3 + .../spectrum/models/item/lime_fence.json | 3 + .../spectrum/models/item/lime_fence_gate.json | 3 + .../models/item/lime_plank_button.json | 3 - .../models/item/lime_plank_fence.json | 3 - .../models/item/lime_plank_fence_gate.json | 3 - .../item/lime_plank_pressure_plate.json | 3 - .../spectrum/models/item/lime_plank_slab.json | 3 - .../models/item/lime_plank_stairs.json | 3 - .../models/item/lime_pressure_plate.json | 3 + .../spectrum/models/item/lime_slab.json | 3 + .../spectrum/models/item/lime_stairs.json | 3 + .../spectrum/models/item/magenta_button.json | 3 + .../spectrum/models/item/magenta_fence.json | 3 + .../models/item/magenta_fence_gate.json | 3 + .../models/item/magenta_plank_button.json | 3 - .../models/item/magenta_plank_fence.json | 3 - .../models/item/magenta_plank_fence_gate.json | 3 - .../item/magenta_plank_pressure_plate.json | 3 - .../models/item/magenta_plank_slab.json | 3 - .../models/item/magenta_plank_stairs.json | 3 - .../models/item/magenta_pressure_plate.json | 3 + .../spectrum/models/item/magenta_slab.json | 3 + .../spectrum/models/item/magenta_stairs.json | 3 + .../spectrum/models/item/orange_button.json | 3 + .../spectrum/models/item/orange_fence.json | 3 + .../models/item/orange_fence_gate.json | 3 + .../models/item/orange_plank_button.json | 3 - .../models/item/orange_plank_fence.json | 3 - .../models/item/orange_plank_fence_gate.json | 3 - .../item/orange_plank_pressure_plate.json | 3 - .../models/item/orange_plank_slab.json | 3 - .../models/item/orange_plank_stairs.json | 3 - .../models/item/orange_pressure_plate.json | 3 + .../spectrum/models/item/orange_slab.json | 3 + .../spectrum/models/item/orange_stairs.json | 3 + .../spectrum/models/item/pink_button.json | 3 + .../spectrum/models/item/pink_fence.json | 3 + .../spectrum/models/item/pink_fence_gate.json | 3 + .../models/item/pink_plank_button.json | 3 - .../models/item/pink_plank_fence.json | 3 - .../models/item/pink_plank_fence_gate.json | 3 - .../item/pink_plank_pressure_plate.json | 3 - .../spectrum/models/item/pink_plank_slab.json | 3 - .../models/item/pink_plank_stairs.json | 3 - .../models/item/pink_pressure_plate.json | 3 + .../spectrum/models/item/pink_slab.json | 3 + .../spectrum/models/item/pink_stairs.json | 3 + .../spectrum/models/item/purple_button.json | 3 + .../spectrum/models/item/purple_fence.json | 3 + .../models/item/purple_fence_gate.json | 3 + .../models/item/purple_plank_button.json | 3 - .../models/item/purple_plank_fence.json | 3 - .../models/item/purple_plank_fence_gate.json | 3 - .../item/purple_plank_pressure_plate.json | 3 - .../models/item/purple_plank_slab.json | 3 - .../models/item/purple_plank_stairs.json | 3 - .../models/item/purple_pressure_plate.json | 3 + .../spectrum/models/item/purple_slab.json | 3 + .../spectrum/models/item/purple_stairs.json | 3 + .../spectrum/models/item/red_button.json | 3 + .../spectrum/models/item/red_fence.json | 3 + .../spectrum/models/item/red_fence_gate.json | 3 + .../models/item/red_plank_button.json | 3 - .../spectrum/models/item/red_plank_fence.json | 3 - .../models/item/red_plank_fence_gate.json | 3 - .../models/item/red_plank_pressure_plate.json | 3 - .../spectrum/models/item/red_plank_slab.json | 3 - .../models/item/red_plank_stairs.json | 3 - .../models/item/red_pressure_plate.json | 3 + .../assets/spectrum/models/item/red_slab.json | 3 + .../spectrum/models/item/red_stairs.json | 3 + .../spectrum/models/item/white_button.json | 3 + .../spectrum/models/item/white_fence.json | 3 + .../models/item/white_fence_gate.json | 3 + .../models/item/white_plank_button.json | 3 - .../models/item/white_plank_fence.json | 3 - .../models/item/white_plank_fence_gate.json | 3 - .../item/white_plank_pressure_plate.json | 3 - .../models/item/white_plank_slab.json | 3 - .../models/item/white_plank_stairs.json | 3 - .../models/item/white_pressure_plate.json | 3 + .../spectrum/models/item/white_slab.json | 3 + .../spectrum/models/item/white_stairs.json | 3 + .../spectrum/models/item/yellow_button.json | 3 + .../spectrum/models/item/yellow_fence.json | 3 + .../models/item/yellow_fence_gate.json | 3 + .../models/item/yellow_plank_button.json | 3 - .../models/item/yellow_plank_fence.json | 3 - .../models/item/yellow_plank_fence_gate.json | 3 - .../item/yellow_plank_pressure_plate.json | 3 - .../models/item/yellow_plank_slab.json | 3 - .../models/item/yellow_plank_stairs.json | 3 - .../models/item/yellow_pressure_plate.json | 3 + .../spectrum/models/item/yellow_slab.json | 3 + .../spectrum/models/item/yellow_stairs.json | 3 + .../tags/blocks/unstable_bottom_center.json | 32 +- .../minecraft/tags/items/pressure_plate.json | 32 +- .../blocks/black_plank_button.json | 2 +- .../loot_tables/blocks/black_plank_fence.json | 2 +- .../blocks/black_plank_fence_gate.json | 2 +- .../blocks/black_plank_pressure_plate.json | 2 +- .../loot_tables/blocks/black_plank_slab.json | 2 +- .../blocks/black_plank_stairs.json | 2 +- .../loot_tables/blocks/blue_plank_button.json | 2 +- .../loot_tables/blocks/blue_plank_fence.json | 2 +- .../blocks/blue_plank_fence_gate.json | 2 +- .../blocks/blue_plank_pressure_plate.json | 2 +- .../loot_tables/blocks/blue_plank_slab.json | 2 +- .../loot_tables/blocks/blue_plank_stairs.json | 2 +- .../blocks/brown_plank_button.json | 2 +- .../loot_tables/blocks/brown_plank_fence.json | 2 +- .../blocks/brown_plank_fence_gate.json | 2 +- .../blocks/brown_plank_pressure_plate.json | 2 +- .../loot_tables/blocks/brown_plank_slab.json | 2 +- .../blocks/brown_plank_stairs.json | 2 +- .../loot_tables/blocks/cyan_plank_button.json | 2 +- .../loot_tables/blocks/cyan_plank_fence.json | 2 +- .../blocks/cyan_plank_fence_gate.json | 2 +- .../blocks/cyan_plank_pressure_plate.json | 2 +- .../loot_tables/blocks/cyan_plank_slab.json | 2 +- .../loot_tables/blocks/cyan_plank_stairs.json | 2 +- .../loot_tables/blocks/gray_plank_button.json | 2 +- .../loot_tables/blocks/gray_plank_fence.json | 2 +- .../blocks/gray_plank_fence_gate.json | 2 +- .../blocks/gray_plank_pressure_plate.json | 2 +- .../loot_tables/blocks/gray_plank_slab.json | 2 +- .../loot_tables/blocks/gray_plank_stairs.json | 2 +- .../blocks/green_plank_button.json | 2 +- .../loot_tables/blocks/green_plank_fence.json | 2 +- .../blocks/green_plank_fence_gate.json | 2 +- .../blocks/green_plank_pressure_plate.json | 2 +- .../loot_tables/blocks/green_plank_slab.json | 2 +- .../blocks/green_plank_stairs.json | 2 +- .../blocks/light_blue_plank_button.json | 2 +- .../blocks/light_blue_plank_fence.json | 2 +- .../blocks/light_blue_plank_fence_gate.json | 2 +- .../light_blue_plank_pressure_plate.json | 2 +- .../blocks/light_blue_plank_slab.json | 2 +- .../blocks/light_blue_plank_stairs.json | 2 +- .../blocks/light_gray_plank_button.json | 2 +- .../blocks/light_gray_plank_fence.json | 2 +- .../blocks/light_gray_plank_fence_gate.json | 2 +- .../light_gray_plank_pressure_plate.json | 2 +- .../blocks/light_gray_plank_slab.json | 2 +- .../blocks/light_gray_plank_stairs.json | 2 +- .../loot_tables/blocks/lime_plank_button.json | 2 +- .../loot_tables/blocks/lime_plank_fence.json | 2 +- .../blocks/lime_plank_fence_gate.json | 2 +- .../blocks/lime_plank_pressure_plate.json | 2 +- .../loot_tables/blocks/lime_plank_slab.json | 2 +- .../loot_tables/blocks/lime_plank_stairs.json | 2 +- .../blocks/magenta_plank_button.json | 2 +- .../blocks/magenta_plank_fence.json | 2 +- .../blocks/magenta_plank_fence_gate.json | 2 +- .../blocks/magenta_plank_pressure_plate.json | 2 +- .../blocks/magenta_plank_slab.json | 2 +- .../blocks/magenta_plank_stairs.json | 2 +- .../blocks/orange_plank_button.json | 2 +- .../blocks/orange_plank_fence.json | 2 +- .../blocks/orange_plank_fence_gate.json | 2 +- .../blocks/orange_plank_pressure_plate.json | 2 +- .../loot_tables/blocks/orange_plank_slab.json | 2 +- .../blocks/orange_plank_stairs.json | 2 +- .../loot_tables/blocks/pink_plank_button.json | 2 +- .../loot_tables/blocks/pink_plank_fence.json | 2 +- .../blocks/pink_plank_fence_gate.json | 2 +- .../blocks/pink_plank_pressure_plate.json | 2 +- .../loot_tables/blocks/pink_plank_slab.json | 2 +- .../loot_tables/blocks/pink_plank_stairs.json | 2 +- .../blocks/purple_plank_button.json | 2 +- .../blocks/purple_plank_fence.json | 2 +- .../blocks/purple_plank_fence_gate.json | 2 +- .../blocks/purple_plank_pressure_plate.json | 2 +- .../loot_tables/blocks/purple_plank_slab.json | 2 +- .../blocks/purple_plank_stairs.json | 2 +- .../loot_tables/blocks/red_plank_button.json | 2 +- .../loot_tables/blocks/red_plank_fence.json | 2 +- .../blocks/red_plank_fence_gate.json | 2 +- .../blocks/red_plank_pressure_plate.json | 2 +- .../loot_tables/blocks/red_plank_slab.json | 2 +- .../loot_tables/blocks/red_plank_stairs.json | 2 +- .../blocks/white_plank_button.json | 2 +- .../loot_tables/blocks/white_plank_fence.json | 2 +- .../blocks/white_plank_fence_gate.json | 2 +- .../blocks/white_plank_pressure_plate.json | 2 +- .../loot_tables/blocks/white_plank_slab.json | 2 +- .../blocks/white_plank_stairs.json | 2 +- .../blocks/yellow_plank_button.json | 2 +- .../blocks/yellow_plank_fence.json | 2 +- .../blocks/yellow_plank_fence_gate.json | 2 +- .../blocks/yellow_plank_pressure_plate.json | 2 +- .../loot_tables/blocks/yellow_plank_slab.json | 2 +- .../blocks/yellow_plank_stairs.json | 2 +- .../en_us/entries/general/colored_trees.json | 192 ++++----- .../pt_br/entries/general/colored_trees.json | 192 ++++----- .../zh_cn/entries/general/colored_trees.json | 192 ++++----- .../colored_wood/black_plank_button.json | 2 +- .../colored_wood/black_plank_fence.json | 2 +- .../colored_wood/black_plank_fence_gate.json | 2 +- .../black_plank_pressure_plate.json | 2 +- .../colored_wood/black_plank_slab.json | 2 +- .../colored_wood/black_plank_stairs.json | 2 +- .../colored_wood/blue_plank_button.json | 2 +- .../colored_wood/blue_plank_fence.json | 2 +- .../colored_wood/blue_plank_fence_gate.json | 2 +- .../blue_plank_pressure_plate.json | 2 +- .../colored_wood/blue_plank_slab.json | 2 +- .../colored_wood/blue_plank_stairs.json | 2 +- .../colored_wood/brown_plank_button.json | 2 +- .../colored_wood/brown_plank_fence.json | 2 +- .../colored_wood/brown_plank_fence_gate.json | 2 +- .../brown_plank_pressure_plate.json | 2 +- .../colored_wood/brown_plank_slab.json | 2 +- .../colored_wood/brown_plank_stairs.json | 2 +- .../colored_wood/cyan_plank_button.json | 2 +- .../colored_wood/cyan_plank_fence.json | 2 +- .../colored_wood/cyan_plank_fence_gate.json | 2 +- .../cyan_plank_pressure_plate.json | 2 +- .../colored_wood/cyan_plank_slab.json | 2 +- .../colored_wood/cyan_plank_stairs.json | 2 +- .../colored_wood/gray_plank_button.json | 2 +- .../colored_wood/gray_plank_fence.json | 2 +- .../colored_wood/gray_plank_fence_gate.json | 2 +- .../gray_plank_pressure_plate.json | 2 +- .../colored_wood/gray_plank_slab.json | 2 +- .../colored_wood/gray_plank_stairs.json | 2 +- .../colored_wood/green_plank_button.json | 2 +- .../colored_wood/green_plank_fence.json | 2 +- .../colored_wood/green_plank_fence_gate.json | 2 +- .../green_plank_pressure_plate.json | 2 +- .../colored_wood/green_plank_slab.json | 2 +- .../colored_wood/green_plank_stairs.json | 2 +- .../colored_wood/light_blue_plank_button.json | 2 +- .../colored_wood/light_blue_plank_fence.json | 2 +- .../light_blue_plank_fence_gate.json | 2 +- .../light_blue_plank_pressure_plate.json | 2 +- .../colored_wood/light_blue_plank_slab.json | 2 +- .../colored_wood/light_blue_plank_stairs.json | 2 +- .../colored_wood/light_gray_plank_button.json | 2 +- .../colored_wood/light_gray_plank_fence.json | 2 +- .../light_gray_plank_fence_gate.json | 2 +- .../light_gray_plank_pressure_plate.json | 2 +- .../colored_wood/light_gray_plank_slab.json | 2 +- .../colored_wood/light_gray_plank_stairs.json | 2 +- .../colored_wood/lime_plank_button.json | 2 +- .../colored_wood/lime_plank_fence.json | 2 +- .../colored_wood/lime_plank_fence_gate.json | 2 +- .../lime_plank_pressure_plate.json | 2 +- .../colored_wood/lime_plank_slab.json | 2 +- .../colored_wood/lime_plank_stairs.json | 2 +- .../colored_wood/magenta_plank_button.json | 2 +- .../colored_wood/magenta_plank_fence.json | 2 +- .../magenta_plank_fence_gate.json | 2 +- .../magenta_plank_pressure_plate.json | 2 +- .../colored_wood/magenta_plank_slab.json | 2 +- .../colored_wood/magenta_plank_stairs.json | 2 +- .../colored_wood/orange_plank_button.json | 2 +- .../colored_wood/orange_plank_fence.json | 2 +- .../colored_wood/orange_plank_fence_gate.json | 2 +- .../orange_plank_pressure_plate.json | 2 +- .../colored_wood/orange_plank_slab.json | 2 +- .../colored_wood/orange_plank_stairs.json | 2 +- .../colored_wood/pink_plank_button.json | 2 +- .../colored_wood/pink_plank_fence.json | 2 +- .../colored_wood/pink_plank_fence_gate.json | 2 +- .../pink_plank_pressure_plate.json | 2 +- .../colored_wood/pink_plank_slab.json | 2 +- .../colored_wood/pink_plank_stairs.json | 2 +- .../colored_wood/purple_plank_button.json | 2 +- .../colored_wood/purple_plank_fence.json | 2 +- .../colored_wood/purple_plank_fence_gate.json | 2 +- .../purple_plank_pressure_plate.json | 2 +- .../colored_wood/purple_plank_slab.json | 2 +- .../colored_wood/purple_plank_stairs.json | 2 +- .../colored_wood/red_plank_button.json | 2 +- .../colored_wood/red_plank_fence.json | 2 +- .../colored_wood/red_plank_fence_gate.json | 2 +- .../red_plank_pressure_plate.json | 2 +- .../colored_wood/red_plank_slab.json | 2 +- .../colored_wood/red_plank_stairs.json | 2 +- .../colored_wood/white_plank_button.json | 2 +- .../colored_wood/white_plank_fence.json | 2 +- .../colored_wood/white_plank_fence_gate.json | 2 +- .../white_plank_pressure_plate.json | 2 +- .../colored_wood/white_plank_slab.json | 2 +- .../colored_wood/white_plank_stairs.json | 2 +- .../colored_wood/yellow_plank_button.json | 2 +- .../colored_wood/yellow_plank_fence.json | 2 +- .../colored_wood/yellow_plank_fence_gate.json | 2 +- .../yellow_plank_pressure_plate.json | 2 +- .../colored_wood/yellow_plank_slab.json | 2 +- .../colored_wood/yellow_plank_stairs.json | 2 +- .../spectrum/tags/blocks/colored_buttons.json | 32 +- .../tags/blocks/colored_fence_gates.json | 32 +- .../spectrum/tags/blocks/colored_fences.json | 32 +- .../tags/blocks/colored_pressure_plates.json | 32 +- .../spectrum/tags/blocks/colored_slabs.json | 32 +- .../spectrum/tags/blocks/colored_stairs.json | 32 +- .../spectrum/tags/items/colored_buttons.json | 32 +- .../spectrum/tags/items/colored_fences.json | 32 +- .../tags/items/colored_pressure_plates.json | 32 +- .../spectrum/tags/items/colored_slabs.json | 32 +- .../spectrum/tags/items/colored_stairs.json | 32 +- .../tags/items/coming_soon_tooltip.json | 36 +- 835 files changed, 7293 insertions(+), 7293 deletions(-) rename src/main/resources/assets/spectrum/blockstates/{red_plank_button.json => black_button.json} (60%) rename src/main/resources/assets/spectrum/blockstates/{red_plank_fence.json => black_fence.json} (66%) rename src/main/resources/assets/spectrum/blockstates/{red_plank_fence_gate.json => black_fence_gate.json} (60%) delete mode 100644 src/main/resources/assets/spectrum/blockstates/black_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/black_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/black_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/black_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/black_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/black_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{black_plank_slab.json => black_slab.json} (59%) rename src/main/resources/assets/spectrum/blockstates/{red_plank_stairs.json => black_stairs.json} (63%) rename src/main/resources/assets/spectrum/blockstates/{lime_plank_button.json => blue_button.json} (60%) rename src/main/resources/assets/spectrum/blockstates/{gray_plank_fence.json => blue_fence.json} (66%) rename src/main/resources/assets/spectrum/blockstates/{cyan_plank_fence_gate.json => blue_fence_gate.json} (59%) delete mode 100644 src/main/resources/assets/spectrum/blockstates/blue_plank_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/blockstates/blue_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{blue_plank_slab.json => blue_slab.json} (59%) rename src/main/resources/assets/spectrum/blockstates/{lime_plank_stairs.json => blue_stairs.json} (62%) rename src/main/resources/assets/spectrum/blockstates/{cyan_plank_button.json => brown_button.json} (60%) rename src/main/resources/assets/spectrum/blockstates/{lime_plank_fence.json => brown_fence.json} (66%) rename src/main/resources/assets/spectrum/blockstates/{lime_plank_fence_gate.json => brown_fence_gate.json} (59%) delete mode 100644 src/main/resources/assets/spectrum/blockstates/brown_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/brown_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/brown_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/brown_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/brown_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/brown_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{brown_plank_slab.json => brown_slab.json} (59%) rename src/main/resources/assets/spectrum/blockstates/{cyan_plank_stairs.json => brown_stairs.json} (62%) rename src/main/resources/assets/spectrum/blockstates/{blue_plank_button.json => cyan_button.json} (60%) rename src/main/resources/assets/spectrum/blockstates/{cyan_plank_fence.json => cyan_fence.json} (66%) rename src/main/resources/assets/spectrum/blockstates/{blue_plank_fence_gate.json => cyan_fence_gate.json} (59%) delete mode 100644 src/main/resources/assets/spectrum/blockstates/cyan_plank_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/blockstates/cyan_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{cyan_plank_slab.json => cyan_slab.json} (59%) rename src/main/resources/assets/spectrum/blockstates/{blue_plank_stairs.json => cyan_stairs.json} (62%) create mode 100644 src/main/resources/assets/spectrum/blockstates/gray_button.json create mode 100644 src/main/resources/assets/spectrum/blockstates/gray_fence.json create mode 100644 src/main/resources/assets/spectrum/blockstates/gray_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/gray_plank_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/blockstates/gray_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{gray_plank_slab.json => gray_slab.json} (59%) create mode 100644 src/main/resources/assets/spectrum/blockstates/gray_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/green_button.json create mode 100644 src/main/resources/assets/spectrum/blockstates/green_fence.json create mode 100644 src/main/resources/assets/spectrum/blockstates/green_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/green_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/green_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/green_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/green_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/green_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/green_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{green_plank_slab.json => green_slab.json} (59%) create mode 100644 src/main/resources/assets/spectrum/blockstates/green_stairs.json rename src/main/resources/assets/spectrum/blockstates/{gray_plank_button.json => light_blue_button.json} (60%) rename src/main/resources/assets/spectrum/blockstates/{blue_plank_fence.json => light_blue_fence.json} (66%) rename src/main/resources/assets/spectrum/blockstates/{gray_plank_fence_gate.json => light_blue_fence_gate.json} (59%) delete mode 100644 src/main/resources/assets/spectrum/blockstates/light_blue_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/light_blue_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/light_blue_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/light_blue_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/light_blue_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/light_blue_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{light_blue_plank_slab.json => light_blue_slab.json} (57%) rename src/main/resources/assets/spectrum/blockstates/{gray_plank_stairs.json => light_blue_stairs.json} (62%) create mode 100644 src/main/resources/assets/spectrum/blockstates/light_gray_button.json create mode 100644 src/main/resources/assets/spectrum/blockstates/light_gray_fence.json create mode 100644 src/main/resources/assets/spectrum/blockstates/light_gray_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/light_gray_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/light_gray_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/light_gray_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/light_gray_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/light_gray_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/light_gray_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{light_gray_plank_slab.json => light_gray_slab.json} (57%) create mode 100644 src/main/resources/assets/spectrum/blockstates/light_gray_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/lime_button.json create mode 100644 src/main/resources/assets/spectrum/blockstates/lime_fence.json create mode 100644 src/main/resources/assets/spectrum/blockstates/lime_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/lime_plank_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/blockstates/lime_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{lime_plank_slab.json => lime_slab.json} (59%) create mode 100644 src/main/resources/assets/spectrum/blockstates/lime_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/magenta_button.json create mode 100644 src/main/resources/assets/spectrum/blockstates/magenta_fence.json create mode 100644 src/main/resources/assets/spectrum/blockstates/magenta_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/magenta_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/magenta_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/magenta_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/magenta_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/magenta_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/magenta_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{magenta_plank_slab.json => magenta_slab.json} (58%) create mode 100644 src/main/resources/assets/spectrum/blockstates/magenta_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/orange_button.json create mode 100644 src/main/resources/assets/spectrum/blockstates/orange_fence.json create mode 100644 src/main/resources/assets/spectrum/blockstates/orange_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/orange_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/orange_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/orange_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/orange_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/orange_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/orange_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{orange_plank_slab.json => orange_slab.json} (58%) create mode 100644 src/main/resources/assets/spectrum/blockstates/orange_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/pink_button.json create mode 100644 src/main/resources/assets/spectrum/blockstates/pink_fence.json create mode 100644 src/main/resources/assets/spectrum/blockstates/pink_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/pink_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/pink_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/pink_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/pink_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/pink_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/pink_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{pink_plank_slab.json => pink_slab.json} (59%) create mode 100644 src/main/resources/assets/spectrum/blockstates/pink_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/purple_button.json create mode 100644 src/main/resources/assets/spectrum/blockstates/purple_fence.json create mode 100644 src/main/resources/assets/spectrum/blockstates/purple_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/purple_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/purple_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/purple_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/purple_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/purple_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/purple_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{purple_plank_slab.json => purple_slab.json} (58%) create mode 100644 src/main/resources/assets/spectrum/blockstates/purple_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/red_button.json create mode 100644 src/main/resources/assets/spectrum/blockstates/red_fence.json create mode 100644 src/main/resources/assets/spectrum/blockstates/red_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/red_plank_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/blockstates/red_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{red_plank_slab.json => red_slab.json} (59%) create mode 100644 src/main/resources/assets/spectrum/blockstates/red_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/white_button.json create mode 100644 src/main/resources/assets/spectrum/blockstates/white_fence.json create mode 100644 src/main/resources/assets/spectrum/blockstates/white_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/white_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/white_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/white_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/white_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/white_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/white_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{white_plank_slab.json => white_slab.json} (59%) create mode 100644 src/main/resources/assets/spectrum/blockstates/white_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/yellow_button.json create mode 100644 src/main/resources/assets/spectrum/blockstates/yellow_fence.json create mode 100644 src/main/resources/assets/spectrum/blockstates/yellow_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/yellow_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/yellow_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/yellow_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/yellow_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/blockstates/yellow_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/blockstates/yellow_pressure_plate.json rename src/main/resources/assets/spectrum/blockstates/{yellow_plank_slab.json => yellow_slab.json} (58%) create mode 100644 src/main/resources/assets/spectrum/blockstates/yellow_stairs.json rename src/main/resources/assets/spectrum/models/block/{black_plank_button.json => black_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_button_inventory.json => black_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_button_pressed.json => black_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_fence_gate.json => black_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_fence_gate_open.json => black_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_fence_gate_wall.json => black_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_fence_gate_wall_open.json => black_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_fence_inventory.json => black_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_fence_post.json => black_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_fence_side.json => black_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_pressure_plate.json => black_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_pressure_plate_down.json => black_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_slab.json => black_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_slab_top.json => black_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_stairs.json => black_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_stairs_inner.json => black_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{black_plank_stairs_outer.json => black_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_button.json => blue_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_button_inventory.json => blue_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_button_pressed.json => blue_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_fence_gate.json => blue_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_fence_gate_open.json => blue_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_fence_gate_wall.json => blue_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_fence_gate_wall_open.json => blue_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_fence_inventory.json => blue_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_fence_post.json => blue_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_fence_side.json => blue_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_pressure_plate.json => blue_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_pressure_plate_down.json => blue_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_slab.json => blue_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_slab_top.json => blue_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_stairs.json => blue_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_stairs_inner.json => blue_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{blue_plank_stairs_outer.json => blue_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_button.json => brown_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_button_inventory.json => brown_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_button_pressed.json => brown_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_fence_gate.json => brown_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_fence_gate_open.json => brown_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_fence_gate_wall.json => brown_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_fence_gate_wall_open.json => brown_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_fence_inventory.json => brown_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_fence_post.json => brown_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_fence_side.json => brown_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_pressure_plate.json => brown_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_pressure_plate_down.json => brown_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_slab.json => brown_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_slab_top.json => brown_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_stairs.json => brown_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_stairs_inner.json => brown_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{brown_plank_stairs_outer.json => brown_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_button.json => cyan_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_button_inventory.json => cyan_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_button_pressed.json => cyan_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_fence_gate.json => cyan_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_fence_gate_open.json => cyan_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_fence_gate_wall.json => cyan_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_fence_gate_wall_open.json => cyan_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_fence_inventory.json => cyan_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_fence_post.json => cyan_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_fence_side.json => cyan_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_pressure_plate.json => cyan_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_pressure_plate_down.json => cyan_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_slab.json => cyan_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_slab_top.json => cyan_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_stairs.json => cyan_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_stairs_inner.json => cyan_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{cyan_plank_stairs_outer.json => cyan_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_button.json => gray_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_button_inventory.json => gray_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_button_pressed.json => gray_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_fence_gate.json => gray_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_fence_gate_open.json => gray_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_fence_gate_wall.json => gray_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_fence_gate_wall_open.json => gray_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_fence_inventory.json => gray_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_fence_post.json => gray_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_fence_side.json => gray_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_pressure_plate.json => gray_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_pressure_plate_down.json => gray_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_slab.json => gray_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_slab_top.json => gray_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_stairs.json => gray_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_stairs_inner.json => gray_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{gray_plank_stairs_outer.json => gray_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_button.json => green_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_button_inventory.json => green_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_button_pressed.json => green_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_fence_gate.json => green_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_fence_gate_open.json => green_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_fence_gate_wall.json => green_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_fence_gate_wall_open.json => green_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_fence_inventory.json => green_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_fence_post.json => green_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_fence_side.json => green_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_pressure_plate.json => green_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_pressure_plate_down.json => green_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_slab.json => green_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_slab_top.json => green_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_stairs.json => green_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_stairs_inner.json => green_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{green_plank_stairs_outer.json => green_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_button.json => light_blue_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_button_inventory.json => light_blue_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_button_pressed.json => light_blue_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_fence_gate.json => light_blue_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_fence_gate_open.json => light_blue_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_fence_gate_wall.json => light_blue_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_fence_gate_wall_open.json => light_blue_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_fence_inventory.json => light_blue_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_fence_post.json => light_blue_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_fence_side.json => light_blue_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_pressure_plate.json => light_blue_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_pressure_plate_down.json => light_blue_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_slab.json => light_blue_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_slab_top.json => light_blue_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_stairs.json => light_blue_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_stairs_inner.json => light_blue_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_blue_plank_stairs_outer.json => light_blue_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_button.json => light_gray_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_button_inventory.json => light_gray_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_button_pressed.json => light_gray_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_fence_gate.json => light_gray_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_fence_gate_open.json => light_gray_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_fence_gate_wall.json => light_gray_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_fence_gate_wall_open.json => light_gray_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_fence_inventory.json => light_gray_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_fence_post.json => light_gray_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_fence_side.json => light_gray_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_pressure_plate.json => light_gray_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_pressure_plate_down.json => light_gray_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_slab.json => light_gray_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_slab_top.json => light_gray_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_stairs.json => light_gray_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_stairs_inner.json => light_gray_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{light_gray_plank_stairs_outer.json => light_gray_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_button.json => lime_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_button_inventory.json => lime_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_button_pressed.json => lime_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_fence_gate.json => lime_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_fence_gate_open.json => lime_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_fence_gate_wall.json => lime_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_fence_gate_wall_open.json => lime_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_fence_inventory.json => lime_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_fence_post.json => lime_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_fence_side.json => lime_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_pressure_plate.json => lime_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_pressure_plate_down.json => lime_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_slab.json => lime_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_slab_top.json => lime_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_stairs.json => lime_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_stairs_inner.json => lime_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{lime_plank_stairs_outer.json => lime_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_button.json => magenta_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_button_inventory.json => magenta_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_button_pressed.json => magenta_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_fence_gate.json => magenta_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_fence_gate_open.json => magenta_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_fence_gate_wall.json => magenta_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_fence_gate_wall_open.json => magenta_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_fence_inventory.json => magenta_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_fence_post.json => magenta_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_fence_side.json => magenta_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_pressure_plate.json => magenta_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_pressure_plate_down.json => magenta_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_slab.json => magenta_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_slab_top.json => magenta_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_stairs.json => magenta_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_stairs_inner.json => magenta_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{magenta_plank_stairs_outer.json => magenta_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_button.json => orange_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_button_inventory.json => orange_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_button_pressed.json => orange_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_fence_gate.json => orange_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_fence_gate_open.json => orange_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_fence_gate_wall.json => orange_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_fence_gate_wall_open.json => orange_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_fence_inventory.json => orange_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_fence_post.json => orange_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_fence_side.json => orange_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_pressure_plate.json => orange_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_pressure_plate_down.json => orange_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_slab.json => orange_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_slab_top.json => orange_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_stairs.json => orange_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_stairs_inner.json => orange_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{orange_plank_stairs_outer.json => orange_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_button.json => pink_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_button_inventory.json => pink_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_button_pressed.json => pink_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_fence_gate.json => pink_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_fence_gate_open.json => pink_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_fence_gate_wall.json => pink_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_fence_gate_wall_open.json => pink_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_fence_inventory.json => pink_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_fence_post.json => pink_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_fence_side.json => pink_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_pressure_plate.json => pink_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_pressure_plate_down.json => pink_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_slab.json => pink_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_slab_top.json => pink_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_stairs.json => pink_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_stairs_inner.json => pink_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{pink_plank_stairs_outer.json => pink_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_button.json => purple_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_button_inventory.json => purple_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_button_pressed.json => purple_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_fence_gate.json => purple_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_fence_gate_open.json => purple_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_fence_gate_wall.json => purple_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_fence_gate_wall_open.json => purple_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_fence_inventory.json => purple_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_fence_post.json => purple_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_fence_side.json => purple_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_pressure_plate.json => purple_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_pressure_plate_down.json => purple_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_slab.json => purple_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_slab_top.json => purple_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_stairs.json => purple_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_stairs_inner.json => purple_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{purple_plank_stairs_outer.json => purple_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_button.json => red_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_button_inventory.json => red_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_button_pressed.json => red_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_fence_gate.json => red_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_fence_gate_open.json => red_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_fence_gate_wall.json => red_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_fence_gate_wall_open.json => red_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_fence_inventory.json => red_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_fence_post.json => red_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_fence_side.json => red_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_pressure_plate.json => red_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_pressure_plate_down.json => red_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_slab.json => red_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_slab_top.json => red_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_stairs.json => red_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_stairs_inner.json => red_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{red_plank_stairs_outer.json => red_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_button.json => white_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_button_inventory.json => white_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_button_pressed.json => white_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_fence_gate.json => white_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_fence_gate_open.json => white_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_fence_gate_wall.json => white_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_fence_gate_wall_open.json => white_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_fence_inventory.json => white_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_fence_post.json => white_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_fence_side.json => white_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_pressure_plate.json => white_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_pressure_plate_down.json => white_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_slab.json => white_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_slab_top.json => white_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_stairs.json => white_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_stairs_inner.json => white_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{white_plank_stairs_outer.json => white_stairs_outer.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_button.json => yellow_button.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_button_inventory.json => yellow_button_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_button_pressed.json => yellow_button_pressed.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_fence_gate.json => yellow_fence_gate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_fence_gate_open.json => yellow_fence_gate_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_fence_gate_wall.json => yellow_fence_gate_wall.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_fence_gate_wall_open.json => yellow_fence_gate_wall_open.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_fence_inventory.json => yellow_fence_inventory.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_fence_post.json => yellow_fence_post.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_fence_side.json => yellow_fence_side.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_pressure_plate.json => yellow_pressure_plate.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_pressure_plate_down.json => yellow_pressure_plate_down.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_slab.json => yellow_slab.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_slab_top.json => yellow_slab_top.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_stairs.json => yellow_stairs.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_stairs_inner.json => yellow_stairs_inner.json} (100%) rename src/main/resources/assets/spectrum/models/block/{yellow_plank_stairs_outer.json => yellow_stairs_outer.json} (100%) create mode 100644 src/main/resources/assets/spectrum/models/item/black_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/black_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/black_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/black_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/black_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/black_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/black_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/black_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/black_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/black_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/black_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/black_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/blue_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/blue_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/blue_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/blue_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/blue_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/blue_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/blue_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/blue_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/blue_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/blue_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/blue_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/blue_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/brown_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/brown_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/brown_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/brown_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/brown_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/brown_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/brown_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/brown_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/brown_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/brown_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/brown_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/brown_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/cyan_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/cyan_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/cyan_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/cyan_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/cyan_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/cyan_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/cyan_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/cyan_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/cyan_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/cyan_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/cyan_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/cyan_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/gray_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/gray_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/gray_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/gray_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/gray_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/gray_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/gray_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/gray_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/gray_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/gray_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/gray_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/gray_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/green_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/green_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/green_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/green_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/green_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/green_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/green_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/green_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/green_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/green_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/green_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/green_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/light_blue_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/light_blue_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/light_blue_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/light_blue_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/light_blue_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/light_blue_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/light_blue_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/light_blue_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/light_blue_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/light_blue_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/light_blue_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/light_blue_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/light_gray_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/light_gray_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/light_gray_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/light_gray_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/light_gray_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/light_gray_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/light_gray_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/light_gray_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/light_gray_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/light_gray_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/light_gray_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/light_gray_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/lime_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/lime_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/lime_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/lime_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/lime_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/lime_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/lime_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/lime_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/lime_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/lime_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/lime_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/lime_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/magenta_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/magenta_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/magenta_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/magenta_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/magenta_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/magenta_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/magenta_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/magenta_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/magenta_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/magenta_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/magenta_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/magenta_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/orange_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/orange_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/orange_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/orange_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/orange_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/orange_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/orange_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/orange_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/orange_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/orange_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/orange_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/orange_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/pink_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/pink_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/pink_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/pink_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/pink_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/pink_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/pink_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/pink_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/pink_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/pink_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/pink_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/pink_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/purple_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/purple_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/purple_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/purple_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/purple_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/purple_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/purple_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/purple_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/purple_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/purple_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/purple_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/purple_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/red_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/red_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/red_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/red_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/red_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/red_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/red_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/red_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/red_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/red_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/red_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/red_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/white_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/white_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/white_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/white_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/white_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/white_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/white_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/white_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/white_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/white_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/white_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/white_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/yellow_button.json create mode 100644 src/main/resources/assets/spectrum/models/item/yellow_fence.json create mode 100644 src/main/resources/assets/spectrum/models/item/yellow_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/yellow_plank_button.json delete mode 100644 src/main/resources/assets/spectrum/models/item/yellow_plank_fence.json delete mode 100644 src/main/resources/assets/spectrum/models/item/yellow_plank_fence_gate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/yellow_plank_pressure_plate.json delete mode 100644 src/main/resources/assets/spectrum/models/item/yellow_plank_slab.json delete mode 100644 src/main/resources/assets/spectrum/models/item/yellow_plank_stairs.json create mode 100644 src/main/resources/assets/spectrum/models/item/yellow_pressure_plate.json create mode 100644 src/main/resources/assets/spectrum/models/item/yellow_slab.json create mode 100644 src/main/resources/assets/spectrum/models/item/yellow_stairs.json diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java index 4a4b624d26..9461d2373c 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBlocks.java @@ -309,117 +309,117 @@ public class SpectrumBlocks { public static final Block CRYSTAL_APOTHECARY = new CrystalApothecaryBlock(FabricBlockSettings.of(Material.STONE).hardness(3.0F)); public static final Block BLACK_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.BLACK); - public static final Block BLACK_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.BLACK); - public static final Block BLACK_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.BLACK); - public static final Block BLACK_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.BLACK); - public static final Block BLACK_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.BLACK); - public static final Block BLACK_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.BLACK); - public static final Block BLACK_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.BLACK); + public static final Block BLACK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.BLACK); + public static final Block BLACK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.BLACK); + public static final Block BLACK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.BLACK); + public static final Block BLACK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.BLACK); + public static final Block BLACK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.BLACK); + public static final Block BLACK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.BLACK); public static final Block BLUE_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.BLUE); - public static final Block BLUE_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.BLUE); - public static final Block BLUE_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.BLUE); - public static final Block BLUE_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.BLUE); - public static final Block BLUE_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.BLUE); - public static final Block BLUE_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.BLUE); - public static final Block BLUE_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.BLUE); + public static final Block BLUE_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.BLUE); + public static final Block BLUE_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.BLUE); + public static final Block BLUE_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.BLUE); + public static final Block BLUE_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.BLUE); + public static final Block BLUE_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.BLUE); + public static final Block BLUE_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.BLUE); public static final Block BROWN_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.BROWN); - public static final Block BROWN_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.BROWN); - public static final Block BROWN_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.BROWN); - public static final Block BROWN_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.BROWN); - public static final Block BROWN_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.BROWN); - public static final Block BROWN_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.BROWN); - public static final Block BROWN_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.BROWN); + public static final Block BROWN_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.BROWN); + public static final Block BROWN_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.BROWN); + public static final Block BROWN_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.BROWN); + public static final Block BROWN_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.BROWN); + public static final Block BROWN_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.BROWN); + public static final Block BROWN_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.BROWN); public static final Block CYAN_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.CYAN); - public static final Block CYAN_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.CYAN); - public static final Block CYAN_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.CYAN); - public static final Block CYAN_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.CYAN); - public static final Block CYAN_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.CYAN); - public static final Block CYAN_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.CYAN); - public static final Block CYAN_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.CYAN); + public static final Block CYAN_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.CYAN); + public static final Block CYAN_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.CYAN); + public static final Block CYAN_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.CYAN); + public static final Block CYAN_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.CYAN); + public static final Block CYAN_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.CYAN); + public static final Block CYAN_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.CYAN); public static final Block GRAY_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.GRAY); - public static final Block GRAY_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.GRAY); - public static final Block GRAY_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.GRAY); - public static final Block GRAY_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.GRAY); - public static final Block GRAY_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.GRAY); - public static final Block GRAY_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.GRAY); - public static final Block GRAY_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.GRAY); + public static final Block GRAY_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.GRAY); + public static final Block GRAY_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.GRAY); + public static final Block GRAY_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.GRAY); + public static final Block GRAY_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.GRAY); + public static final Block GRAY_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.GRAY); + public static final Block GRAY_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.GRAY); public static final Block GREEN_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.GREEN); - public static final Block GREEN_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.GREEN); - public static final Block GREEN_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.GREEN); - public static final Block GREEN_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.GREEN); - public static final Block GREEN_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.GREEN); - public static final Block GREEN_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.GREEN); - public static final Block GREEN_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.GREEN); + public static final Block GREEN_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.GREEN); + public static final Block GREEN_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.GREEN); + public static final Block GREEN_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.GREEN); + public static final Block GREEN_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.GREEN); + public static final Block GREEN_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.GREEN); + public static final Block GREEN_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.GREEN); public static final Block LIGHT_BLUE_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.LIGHT_BLUE); - public static final Block LIGHT_BLUE_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.LIGHT_BLUE); - public static final Block LIGHT_BLUE_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.LIGHT_BLUE); - public static final Block LIGHT_BLUE_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.LIGHT_BLUE); - public static final Block LIGHT_BLUE_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.LIGHT_BLUE); - public static final Block LIGHT_BLUE_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.LIGHT_BLUE); - public static final Block LIGHT_BLUE_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.LIGHT_BLUE); + public static final Block LIGHT_BLUE_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.LIGHT_BLUE); + public static final Block LIGHT_BLUE_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.LIGHT_BLUE); + public static final Block LIGHT_BLUE_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.LIGHT_BLUE); + public static final Block LIGHT_BLUE_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.LIGHT_BLUE); + public static final Block LIGHT_BLUE_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.LIGHT_BLUE); + public static final Block LIGHT_BLUE_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.LIGHT_BLUE); public static final Block LIGHT_GRAY_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.LIGHT_GRAY); - public static final Block LIGHT_GRAY_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.LIGHT_GRAY); - public static final Block LIGHT_GRAY_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.LIGHT_GRAY); - public static final Block LIGHT_GRAY_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.LIGHT_GRAY); - public static final Block LIGHT_GRAY_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.LIGHT_GRAY); - public static final Block LIGHT_GRAY_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.LIGHT_GRAY); - public static final Block LIGHT_GRAY_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.LIGHT_GRAY); + public static final Block LIGHT_GRAY_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.LIGHT_GRAY); + public static final Block LIGHT_GRAY_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.LIGHT_GRAY); + public static final Block LIGHT_GRAY_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.LIGHT_GRAY); + public static final Block LIGHT_GRAY_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.LIGHT_GRAY); + public static final Block LIGHT_GRAY_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.LIGHT_GRAY); + public static final Block LIGHT_GRAY_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.LIGHT_GRAY); public static final Block LIME_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.LIME); - public static final Block LIME_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.LIME); - public static final Block LIME_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.LIME); - public static final Block LIME_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.LIME); - public static final Block LIME_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.LIME); - public static final Block LIME_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.LIME); - public static final Block LIME_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.LIME); + public static final Block LIME_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.LIME); + public static final Block LIME_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.LIME); + public static final Block LIME_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.LIME); + public static final Block LIME_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.LIME); + public static final Block LIME_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.LIME); + public static final Block LIME_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.LIME); public static final Block MAGENTA_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.MAGENTA); - public static final Block MAGENTA_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.MAGENTA); - public static final Block MAGENTA_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.MAGENTA); - public static final Block MAGENTA_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.MAGENTA); - public static final Block MAGENTA_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.MAGENTA); - public static final Block MAGENTA_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.MAGENTA); - public static final Block MAGENTA_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.MAGENTA); + public static final Block MAGENTA_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.MAGENTA); + public static final Block MAGENTA_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.MAGENTA); + public static final Block MAGENTA_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.MAGENTA); + public static final Block MAGENTA_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.MAGENTA); + public static final Block MAGENTA_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.MAGENTA); + public static final Block MAGENTA_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.MAGENTA); public static final Block ORANGE_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.ORANGE); - public static final Block ORANGE_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.ORANGE); - public static final Block ORANGE_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.ORANGE); - public static final Block ORANGE_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.ORANGE); - public static final Block ORANGE_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.ORANGE); - public static final Block ORANGE_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.ORANGE); - public static final Block ORANGE_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.ORANGE); + public static final Block ORANGE_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.ORANGE); + public static final Block ORANGE_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.ORANGE); + public static final Block ORANGE_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.ORANGE); + public static final Block ORANGE_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.ORANGE); + public static final Block ORANGE_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.ORANGE); + public static final Block ORANGE_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.ORANGE); public static final Block PINK_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.PINK); - public static final Block PINK_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.PINK); - public static final Block PINK_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.PINK); - public static final Block PINK_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.PINK); - public static final Block PINK_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.PINK); - public static final Block PINK_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.PINK); - public static final Block PINK_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.PINK); + public static final Block PINK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.PINK); + public static final Block PINK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.PINK); + public static final Block PINK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.PINK); + public static final Block PINK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.PINK); + public static final Block PINK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.PINK); + public static final Block PINK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.PINK); public static final Block PURPLE_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.PURPLE); - public static final Block PURPLE_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.PURPLE); - public static final Block PURPLE_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.PURPLE); - public static final Block PURPLE_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.PURPLE); - public static final Block PURPLE_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.PURPLE); - public static final Block PURPLE_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.PURPLE); - public static final Block PURPLE_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.PURPLE); + public static final Block PURPLE_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.PURPLE); + public static final Block PURPLE_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.PURPLE); + public static final Block PURPLE_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.PURPLE); + public static final Block PURPLE_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.PURPLE); + public static final Block PURPLE_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.PURPLE); + public static final Block PURPLE_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.PURPLE); public static final Block RED_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.RED); - public static final Block RED_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.RED); - public static final Block RED_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.RED); - public static final Block RED_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.RED); - public static final Block RED_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.RED); - public static final Block RED_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.RED); - public static final Block RED_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.RED); + public static final Block RED_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.RED); + public static final Block RED_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.RED); + public static final Block RED_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.RED); + public static final Block RED_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.RED); + public static final Block RED_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.RED); + public static final Block RED_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.RED); public static final Block WHITE_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.WHITE); - public static final Block WHITE_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.WHITE); - public static final Block WHITE_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.WHITE); - public static final Block WHITE_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.WHITE); - public static final Block WHITE_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.WHITE); - public static final Block WHITE_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.WHITE); - public static final Block WHITE_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.WHITE); + public static final Block WHITE_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.WHITE); + public static final Block WHITE_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.WHITE); + public static final Block WHITE_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.WHITE); + public static final Block WHITE_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.WHITE); + public static final Block WHITE_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.WHITE); + public static final Block WHITE_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.WHITE); public static final Block YELLOW_PLANKS = new ColoredPlankBlock(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS), DyeColor.YELLOW); - public static final Block YELLOW_PLANK_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.YELLOW); - public static final Block YELLOW_PLANK_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.YELLOW); - public static final Block YELLOW_PLANK_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.YELLOW); - public static final Block YELLOW_PLANK_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.YELLOW); - public static final Block YELLOW_PLANK_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.YELLOW); - public static final Block YELLOW_PLANK_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.YELLOW); + public static final Block YELLOW_STAIRS = new ColoredStairsBlock(BLACK_PLANKS.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS), DyeColor.YELLOW); + public static final Block YELLOW_PRESSURE_PLATE = new ColoredPressurePlateBlock(PressurePlateBlock.ActivationRule.EVERYTHING, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE), DyeColor.YELLOW); + public static final Block YELLOW_FENCE = new ColoredFenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE), DyeColor.YELLOW); + public static final Block YELLOW_FENCE_GATE = new ColoredFenceGateBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE), DyeColor.YELLOW); + public static final Block YELLOW_BUTTON = new ColoredWoodenButtonBlock(FabricBlockSettings.copyOf(Blocks.OAK_BUTTON), DyeColor.YELLOW); + public static final Block YELLOW_SLAB = new ColoredSlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB), DyeColor.YELLOW); public static final Block PRESERVATION_CONTROLLER = new PreservationControllerBlock(FabricBlockSettings.of(Material.STONE).strength(-1.0F).dropsNothing().luminance(value -> 1).emissiveLighting(SpectrumBlocks::always).postProcess(SpectrumBlocks::always)); public static final Block DIKE_GATE = new DikeGateBlock(FabricBlockSettings.of(Material.GLASS).strength(-1.0F).dropsNothing().luminance(value -> 3).sounds(BlockSoundGroup.GLASS).nonOpaque().allowsSpawning(SpectrumBlocks::never).solidBlock(SpectrumBlocks::never).suffocates(SpectrumBlocks::never).blockVision(SpectrumBlocks::never)); @@ -1393,107 +1393,107 @@ private static void registerColoredWood(FabricItemSettings fabricItemSettings) { registerBlockWithItem("red_planks", RED_PLANKS, fabricItemSettings, DyeColor.RED); registerBlockWithItem("black_planks", BLACK_PLANKS, fabricItemSettings, DyeColor.BLACK); - registerBlockWithItem("white_plank_stairs", WHITE_PLANK_STAIRS, fabricItemSettings, DyeColor.WHITE); - registerBlockWithItem("orange_plank_stairs", ORANGE_PLANK_STAIRS, fabricItemSettings, DyeColor.ORANGE); - registerBlockWithItem("magenta_plank_stairs", MAGENTA_PLANK_STAIRS, fabricItemSettings, DyeColor.MAGENTA); - registerBlockWithItem("light_blue_plank_stairs", LIGHT_BLUE_PLANK_STAIRS, fabricItemSettings, DyeColor.LIGHT_BLUE); - registerBlockWithItem("yellow_plank_stairs", YELLOW_PLANK_STAIRS, fabricItemSettings, DyeColor.YELLOW); - registerBlockWithItem("lime_plank_stairs", LIME_PLANK_STAIRS, fabricItemSettings, DyeColor.LIME); - registerBlockWithItem("pink_plank_stairs", PINK_PLANK_STAIRS, fabricItemSettings, DyeColor.PINK); - registerBlockWithItem("gray_plank_stairs", GRAY_PLANK_STAIRS, fabricItemSettings, DyeColor.GRAY); - registerBlockWithItem("light_gray_plank_stairs", LIGHT_GRAY_PLANK_STAIRS, fabricItemSettings, DyeColor.LIGHT_GRAY); - registerBlockWithItem("cyan_plank_stairs", CYAN_PLANK_STAIRS, fabricItemSettings, DyeColor.CYAN); - registerBlockWithItem("purple_plank_stairs", PURPLE_PLANK_STAIRS, fabricItemSettings, DyeColor.PURPLE); - registerBlockWithItem("blue_plank_stairs", BLUE_PLANK_STAIRS, fabricItemSettings, DyeColor.BLUE); - registerBlockWithItem("brown_plank_stairs", BROWN_PLANK_STAIRS, fabricItemSettings, DyeColor.BROWN); - registerBlockWithItem("green_plank_stairs", GREEN_PLANK_STAIRS, fabricItemSettings, DyeColor.GREEN); - registerBlockWithItem("red_plank_stairs", RED_PLANK_STAIRS, fabricItemSettings, DyeColor.RED); - registerBlockWithItem("black_plank_stairs", BLACK_PLANK_STAIRS, fabricItemSettings, DyeColor.BLACK); - - registerBlockWithItem("white_plank_pressure_plate", WHITE_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.WHITE); - registerBlockWithItem("orange_plank_pressure_plate", ORANGE_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.ORANGE); - registerBlockWithItem("magenta_plank_pressure_plate", MAGENTA_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.MAGENTA); - registerBlockWithItem("light_blue_plank_pressure_plate", LIGHT_BLUE_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.LIGHT_BLUE); - registerBlockWithItem("yellow_plank_pressure_plate", YELLOW_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.YELLOW); - registerBlockWithItem("lime_plank_pressure_plate", LIME_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.LIME); - registerBlockWithItem("pink_plank_pressure_plate", PINK_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.PINK); - registerBlockWithItem("gray_plank_pressure_plate", GRAY_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.GRAY); - registerBlockWithItem("light_gray_plank_pressure_plate", LIGHT_GRAY_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.LIGHT_GRAY); - registerBlockWithItem("cyan_plank_pressure_plate", CYAN_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.CYAN); - registerBlockWithItem("purple_plank_pressure_plate", PURPLE_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.PURPLE); - registerBlockWithItem("blue_plank_pressure_plate", BLUE_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.BLUE); - registerBlockWithItem("brown_plank_pressure_plate", BROWN_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.BROWN); - registerBlockWithItem("green_plank_pressure_plate", GREEN_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.GREEN); - registerBlockWithItem("red_plank_pressure_plate", RED_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.RED); - registerBlockWithItem("black_plank_pressure_plate", BLACK_PLANK_PRESSURE_PLATE, fabricItemSettings, DyeColor.BLACK); - - registerBlockWithItem("white_plank_fence", WHITE_PLANK_FENCE, fabricItemSettings, DyeColor.WHITE); - registerBlockWithItem("orange_plank_fence", ORANGE_PLANK_FENCE, fabricItemSettings, DyeColor.ORANGE); - registerBlockWithItem("magenta_plank_fence", MAGENTA_PLANK_FENCE, fabricItemSettings, DyeColor.MAGENTA); - registerBlockWithItem("light_blue_plank_fence", LIGHT_BLUE_PLANK_FENCE, fabricItemSettings, DyeColor.LIGHT_BLUE); - registerBlockWithItem("yellow_plank_fence", YELLOW_PLANK_FENCE, fabricItemSettings, DyeColor.YELLOW); - registerBlockWithItem("lime_plank_fence", LIME_PLANK_FENCE, fabricItemSettings, DyeColor.LIME); - registerBlockWithItem("pink_plank_fence", PINK_PLANK_FENCE, fabricItemSettings, DyeColor.PINK); - registerBlockWithItem("gray_plank_fence", GRAY_PLANK_FENCE, fabricItemSettings, DyeColor.GRAY); - registerBlockWithItem("light_gray_plank_fence", LIGHT_GRAY_PLANK_FENCE, fabricItemSettings, DyeColor.LIGHT_GRAY); - registerBlockWithItem("cyan_plank_fence", CYAN_PLANK_FENCE, fabricItemSettings, DyeColor.CYAN); - registerBlockWithItem("purple_plank_fence", PURPLE_PLANK_FENCE, fabricItemSettings, DyeColor.PURPLE); - registerBlockWithItem("blue_plank_fence", BLUE_PLANK_FENCE, fabricItemSettings, DyeColor.BLUE); - registerBlockWithItem("brown_plank_fence", BROWN_PLANK_FENCE, fabricItemSettings, DyeColor.BROWN); - registerBlockWithItem("green_plank_fence", GREEN_PLANK_FENCE, fabricItemSettings, DyeColor.GREEN); - registerBlockWithItem("red_plank_fence", RED_PLANK_FENCE, fabricItemSettings, DyeColor.RED); - registerBlockWithItem("black_plank_fence", BLACK_PLANK_FENCE, fabricItemSettings, DyeColor.BLACK); - - registerBlockWithItem("white_plank_fence_gate", WHITE_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.WHITE); - registerBlockWithItem("orange_plank_fence_gate", ORANGE_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.ORANGE); - registerBlockWithItem("magenta_plank_fence_gate", MAGENTA_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.MAGENTA); - registerBlockWithItem("light_blue_plank_fence_gate", LIGHT_BLUE_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.LIGHT_BLUE); - registerBlockWithItem("yellow_plank_fence_gate", YELLOW_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.YELLOW); - registerBlockWithItem("lime_plank_fence_gate", LIME_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.LIME); - registerBlockWithItem("pink_plank_fence_gate", PINK_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.PINK); - registerBlockWithItem("gray_plank_fence_gate", GRAY_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.GRAY); - registerBlockWithItem("light_gray_plank_fence_gate", LIGHT_GRAY_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.LIGHT_GRAY); - registerBlockWithItem("cyan_plank_fence_gate", CYAN_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.CYAN); - registerBlockWithItem("purple_plank_fence_gate", PURPLE_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.PURPLE); - registerBlockWithItem("blue_plank_fence_gate", BLUE_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.BLUE); - registerBlockWithItem("brown_plank_fence_gate", BROWN_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.BROWN); - registerBlockWithItem("green_plank_fence_gate", GREEN_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.GREEN); - registerBlockWithItem("red_plank_fence_gate", RED_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.RED); - registerBlockWithItem("black_plank_fence_gate", BLACK_PLANK_FENCE_GATE, fabricItemSettings, DyeColor.BLACK); - - registerBlockWithItem("white_plank_button", WHITE_PLANK_BUTTON, fabricItemSettings, DyeColor.WHITE); - registerBlockWithItem("orange_plank_button", ORANGE_PLANK_BUTTON, fabricItemSettings, DyeColor.ORANGE); - registerBlockWithItem("magenta_plank_button", MAGENTA_PLANK_BUTTON, fabricItemSettings, DyeColor.MAGENTA); - registerBlockWithItem("light_blue_plank_button", LIGHT_BLUE_PLANK_BUTTON, fabricItemSettings, DyeColor.LIGHT_BLUE); - registerBlockWithItem("yellow_plank_button", YELLOW_PLANK_BUTTON, fabricItemSettings, DyeColor.YELLOW); - registerBlockWithItem("lime_plank_button", LIME_PLANK_BUTTON, fabricItemSettings, DyeColor.LIME); - registerBlockWithItem("pink_plank_button", PINK_PLANK_BUTTON, fabricItemSettings, DyeColor.PINK); - registerBlockWithItem("gray_plank_button", GRAY_PLANK_BUTTON, fabricItemSettings, DyeColor.GRAY); - registerBlockWithItem("light_gray_plank_button", LIGHT_GRAY_PLANK_BUTTON, fabricItemSettings, DyeColor.LIGHT_GRAY); - registerBlockWithItem("cyan_plank_button", CYAN_PLANK_BUTTON, fabricItemSettings, DyeColor.CYAN); - registerBlockWithItem("purple_plank_button", PURPLE_PLANK_BUTTON, fabricItemSettings, DyeColor.PURPLE); - registerBlockWithItem("blue_plank_button", BLUE_PLANK_BUTTON, fabricItemSettings, DyeColor.BLUE); - registerBlockWithItem("brown_plank_button", BROWN_PLANK_BUTTON, fabricItemSettings, DyeColor.BROWN); - registerBlockWithItem("green_plank_button", GREEN_PLANK_BUTTON, fabricItemSettings, DyeColor.GREEN); - registerBlockWithItem("red_plank_button", RED_PLANK_BUTTON, fabricItemSettings, DyeColor.RED); - registerBlockWithItem("black_plank_button", BLACK_PLANK_BUTTON, fabricItemSettings, DyeColor.BLACK); - - registerBlockWithItem("white_plank_slab", WHITE_PLANK_SLAB, fabricItemSettings, DyeColor.WHITE); - registerBlockWithItem("orange_plank_slab", ORANGE_PLANK_SLAB, fabricItemSettings, DyeColor.ORANGE); - registerBlockWithItem("magenta_plank_slab", MAGENTA_PLANK_SLAB, fabricItemSettings, DyeColor.MAGENTA); - registerBlockWithItem("light_blue_plank_slab", LIGHT_BLUE_PLANK_SLAB, fabricItemSettings, DyeColor.LIGHT_BLUE); - registerBlockWithItem("yellow_plank_slab", YELLOW_PLANK_SLAB, fabricItemSettings, DyeColor.YELLOW); - registerBlockWithItem("lime_plank_slab", LIME_PLANK_SLAB, fabricItemSettings, DyeColor.LIME); - registerBlockWithItem("pink_plank_slab", PINK_PLANK_SLAB, fabricItemSettings, DyeColor.PINK); - registerBlockWithItem("gray_plank_slab", GRAY_PLANK_SLAB, fabricItemSettings, DyeColor.GRAY); - registerBlockWithItem("light_gray_plank_slab", LIGHT_GRAY_PLANK_SLAB, fabricItemSettings, DyeColor.LIGHT_GRAY); - registerBlockWithItem("cyan_plank_slab", CYAN_PLANK_SLAB, fabricItemSettings, DyeColor.CYAN); - registerBlockWithItem("purple_plank_slab", PURPLE_PLANK_SLAB, fabricItemSettings, DyeColor.PURPLE); - registerBlockWithItem("blue_plank_slab", BLUE_PLANK_SLAB, fabricItemSettings, DyeColor.BLUE); - registerBlockWithItem("brown_plank_slab", BROWN_PLANK_SLAB, fabricItemSettings, DyeColor.BROWN); - registerBlockWithItem("green_plank_slab", GREEN_PLANK_SLAB, fabricItemSettings, DyeColor.GREEN); - registerBlockWithItem("red_plank_slab", RED_PLANK_SLAB, fabricItemSettings, DyeColor.RED); - registerBlockWithItem("black_plank_slab", BLACK_PLANK_SLAB, fabricItemSettings, DyeColor.BLACK); + registerBlockWithItem("white_stairs", WHITE_STAIRS, fabricItemSettings, DyeColor.WHITE); + registerBlockWithItem("orange_stairs", ORANGE_STAIRS, fabricItemSettings, DyeColor.ORANGE); + registerBlockWithItem("magenta_stairs", MAGENTA_STAIRS, fabricItemSettings, DyeColor.MAGENTA); + registerBlockWithItem("light_blue_stairs", LIGHT_BLUE_STAIRS, fabricItemSettings, DyeColor.LIGHT_BLUE); + registerBlockWithItem("yellow_stairs", YELLOW_STAIRS, fabricItemSettings, DyeColor.YELLOW); + registerBlockWithItem("lime_stairs", LIME_STAIRS, fabricItemSettings, DyeColor.LIME); + registerBlockWithItem("pink_stairs", PINK_STAIRS, fabricItemSettings, DyeColor.PINK); + registerBlockWithItem("gray_stairs", GRAY_STAIRS, fabricItemSettings, DyeColor.GRAY); + registerBlockWithItem("light_gray_stairs", LIGHT_GRAY_STAIRS, fabricItemSettings, DyeColor.LIGHT_GRAY); + registerBlockWithItem("cyan_stairs", CYAN_STAIRS, fabricItemSettings, DyeColor.CYAN); + registerBlockWithItem("purple_stairs", PURPLE_STAIRS, fabricItemSettings, DyeColor.PURPLE); + registerBlockWithItem("blue_stairs", BLUE_STAIRS, fabricItemSettings, DyeColor.BLUE); + registerBlockWithItem("brown_stairs", BROWN_STAIRS, fabricItemSettings, DyeColor.BROWN); + registerBlockWithItem("green_stairs", GREEN_STAIRS, fabricItemSettings, DyeColor.GREEN); + registerBlockWithItem("red_stairs", RED_STAIRS, fabricItemSettings, DyeColor.RED); + registerBlockWithItem("black_stairs", BLACK_STAIRS, fabricItemSettings, DyeColor.BLACK); + + registerBlockWithItem("white_pressure_plate", WHITE_PRESSURE_PLATE, fabricItemSettings, DyeColor.WHITE); + registerBlockWithItem("orange_pressure_plate", ORANGE_PRESSURE_PLATE, fabricItemSettings, DyeColor.ORANGE); + registerBlockWithItem("magenta_pressure_plate", MAGENTA_PRESSURE_PLATE, fabricItemSettings, DyeColor.MAGENTA); + registerBlockWithItem("light_blue_pressure_plate", LIGHT_BLUE_PRESSURE_PLATE, fabricItemSettings, DyeColor.LIGHT_BLUE); + registerBlockWithItem("yellow_pressure_plate", YELLOW_PRESSURE_PLATE, fabricItemSettings, DyeColor.YELLOW); + registerBlockWithItem("lime_pressure_plate", LIME_PRESSURE_PLATE, fabricItemSettings, DyeColor.LIME); + registerBlockWithItem("pink_pressure_plate", PINK_PRESSURE_PLATE, fabricItemSettings, DyeColor.PINK); + registerBlockWithItem("gray_pressure_plate", GRAY_PRESSURE_PLATE, fabricItemSettings, DyeColor.GRAY); + registerBlockWithItem("light_gray_pressure_plate", LIGHT_GRAY_PRESSURE_PLATE, fabricItemSettings, DyeColor.LIGHT_GRAY); + registerBlockWithItem("cyan_pressure_plate", CYAN_PRESSURE_PLATE, fabricItemSettings, DyeColor.CYAN); + registerBlockWithItem("purple_pressure_plate", PURPLE_PRESSURE_PLATE, fabricItemSettings, DyeColor.PURPLE); + registerBlockWithItem("blue_pressure_plate", BLUE_PRESSURE_PLATE, fabricItemSettings, DyeColor.BLUE); + registerBlockWithItem("brown_pressure_plate", BROWN_PRESSURE_PLATE, fabricItemSettings, DyeColor.BROWN); + registerBlockWithItem("green_pressure_plate", GREEN_PRESSURE_PLATE, fabricItemSettings, DyeColor.GREEN); + registerBlockWithItem("red_pressure_plate", RED_PRESSURE_PLATE, fabricItemSettings, DyeColor.RED); + registerBlockWithItem("black_pressure_plate", BLACK_PRESSURE_PLATE, fabricItemSettings, DyeColor.BLACK); + + registerBlockWithItem("white_fence", WHITE_FENCE, fabricItemSettings, DyeColor.WHITE); + registerBlockWithItem("orange_fence", ORANGE_FENCE, fabricItemSettings, DyeColor.ORANGE); + registerBlockWithItem("magenta_fence", MAGENTA_FENCE, fabricItemSettings, DyeColor.MAGENTA); + registerBlockWithItem("light_blue_fence", LIGHT_BLUE_FENCE, fabricItemSettings, DyeColor.LIGHT_BLUE); + registerBlockWithItem("yellow_fence", YELLOW_FENCE, fabricItemSettings, DyeColor.YELLOW); + registerBlockWithItem("lime_fence", LIME_FENCE, fabricItemSettings, DyeColor.LIME); + registerBlockWithItem("pink_fence", PINK_FENCE, fabricItemSettings, DyeColor.PINK); + registerBlockWithItem("gray_fence", GRAY_FENCE, fabricItemSettings, DyeColor.GRAY); + registerBlockWithItem("light_gray_fence", LIGHT_GRAY_FENCE, fabricItemSettings, DyeColor.LIGHT_GRAY); + registerBlockWithItem("cyan_fence", CYAN_FENCE, fabricItemSettings, DyeColor.CYAN); + registerBlockWithItem("purple_fence", PURPLE_FENCE, fabricItemSettings, DyeColor.PURPLE); + registerBlockWithItem("blue_fence", BLUE_FENCE, fabricItemSettings, DyeColor.BLUE); + registerBlockWithItem("brown_fence", BROWN_FENCE, fabricItemSettings, DyeColor.BROWN); + registerBlockWithItem("green_fence", GREEN_FENCE, fabricItemSettings, DyeColor.GREEN); + registerBlockWithItem("red_fence", RED_FENCE, fabricItemSettings, DyeColor.RED); + registerBlockWithItem("black_fence", BLACK_FENCE, fabricItemSettings, DyeColor.BLACK); + + registerBlockWithItem("white_fence_gate", WHITE_FENCE_GATE, fabricItemSettings, DyeColor.WHITE); + registerBlockWithItem("orange_fence_gate", ORANGE_FENCE_GATE, fabricItemSettings, DyeColor.ORANGE); + registerBlockWithItem("magenta_fence_gate", MAGENTA_FENCE_GATE, fabricItemSettings, DyeColor.MAGENTA); + registerBlockWithItem("light_blue_fence_gate", LIGHT_BLUE_FENCE_GATE, fabricItemSettings, DyeColor.LIGHT_BLUE); + registerBlockWithItem("yellow_fence_gate", YELLOW_FENCE_GATE, fabricItemSettings, DyeColor.YELLOW); + registerBlockWithItem("lime_fence_gate", LIME_FENCE_GATE, fabricItemSettings, DyeColor.LIME); + registerBlockWithItem("pink_fence_gate", PINK_FENCE_GATE, fabricItemSettings, DyeColor.PINK); + registerBlockWithItem("gray_fence_gate", GRAY_FENCE_GATE, fabricItemSettings, DyeColor.GRAY); + registerBlockWithItem("light_gray_fence_gate", LIGHT_GRAY_FENCE_GATE, fabricItemSettings, DyeColor.LIGHT_GRAY); + registerBlockWithItem("cyan_fence_gate", CYAN_FENCE_GATE, fabricItemSettings, DyeColor.CYAN); + registerBlockWithItem("purple_fence_gate", PURPLE_FENCE_GATE, fabricItemSettings, DyeColor.PURPLE); + registerBlockWithItem("blue_fence_gate", BLUE_FENCE_GATE, fabricItemSettings, DyeColor.BLUE); + registerBlockWithItem("brown_fence_gate", BROWN_FENCE_GATE, fabricItemSettings, DyeColor.BROWN); + registerBlockWithItem("green_fence_gate", GREEN_FENCE_GATE, fabricItemSettings, DyeColor.GREEN); + registerBlockWithItem("red_fence_gate", RED_FENCE_GATE, fabricItemSettings, DyeColor.RED); + registerBlockWithItem("black_fence_gate", BLACK_FENCE_GATE, fabricItemSettings, DyeColor.BLACK); + + registerBlockWithItem("white_button", WHITE_BUTTON, fabricItemSettings, DyeColor.WHITE); + registerBlockWithItem("orange_button", ORANGE_BUTTON, fabricItemSettings, DyeColor.ORANGE); + registerBlockWithItem("magenta_button", MAGENTA_BUTTON, fabricItemSettings, DyeColor.MAGENTA); + registerBlockWithItem("light_blue_button", LIGHT_BLUE_BUTTON, fabricItemSettings, DyeColor.LIGHT_BLUE); + registerBlockWithItem("yellow_button", YELLOW_BUTTON, fabricItemSettings, DyeColor.YELLOW); + registerBlockWithItem("lime_button", LIME_BUTTON, fabricItemSettings, DyeColor.LIME); + registerBlockWithItem("pink_button", PINK_BUTTON, fabricItemSettings, DyeColor.PINK); + registerBlockWithItem("gray_button", GRAY_BUTTON, fabricItemSettings, DyeColor.GRAY); + registerBlockWithItem("light_gray_button", LIGHT_GRAY_BUTTON, fabricItemSettings, DyeColor.LIGHT_GRAY); + registerBlockWithItem("cyan_button", CYAN_BUTTON, fabricItemSettings, DyeColor.CYAN); + registerBlockWithItem("purple_button", PURPLE_BUTTON, fabricItemSettings, DyeColor.PURPLE); + registerBlockWithItem("blue_button", BLUE_BUTTON, fabricItemSettings, DyeColor.BLUE); + registerBlockWithItem("brown_button", BROWN_BUTTON, fabricItemSettings, DyeColor.BROWN); + registerBlockWithItem("green_button", GREEN_BUTTON, fabricItemSettings, DyeColor.GREEN); + registerBlockWithItem("red_button", RED_BUTTON, fabricItemSettings, DyeColor.RED); + registerBlockWithItem("black_button", BLACK_BUTTON, fabricItemSettings, DyeColor.BLACK); + + registerBlockWithItem("white_slab", WHITE_SLAB, fabricItemSettings, DyeColor.WHITE); + registerBlockWithItem("orange_slab", ORANGE_SLAB, fabricItemSettings, DyeColor.ORANGE); + registerBlockWithItem("magenta_slab", MAGENTA_SLAB, fabricItemSettings, DyeColor.MAGENTA); + registerBlockWithItem("light_blue_slab", LIGHT_BLUE_SLAB, fabricItemSettings, DyeColor.LIGHT_BLUE); + registerBlockWithItem("yellow_slab", YELLOW_SLAB, fabricItemSettings, DyeColor.YELLOW); + registerBlockWithItem("lime_slab", LIME_SLAB, fabricItemSettings, DyeColor.LIME); + registerBlockWithItem("pink_slab", PINK_SLAB, fabricItemSettings, DyeColor.PINK); + registerBlockWithItem("gray_slab", GRAY_SLAB, fabricItemSettings, DyeColor.GRAY); + registerBlockWithItem("light_gray_slab", LIGHT_GRAY_SLAB, fabricItemSettings, DyeColor.LIGHT_GRAY); + registerBlockWithItem("cyan_slab", CYAN_SLAB, fabricItemSettings, DyeColor.CYAN); + registerBlockWithItem("purple_slab", PURPLE_SLAB, fabricItemSettings, DyeColor.PURPLE); + registerBlockWithItem("blue_slab", BLUE_SLAB, fabricItemSettings, DyeColor.BLUE); + registerBlockWithItem("brown_slab", BROWN_SLAB, fabricItemSettings, DyeColor.BROWN); + registerBlockWithItem("green_slab", GREEN_SLAB, fabricItemSettings, DyeColor.GREEN); + registerBlockWithItem("red_slab", RED_SLAB, fabricItemSettings, DyeColor.RED); + registerBlockWithItem("black_slab", BLACK_SLAB, fabricItemSettings, DyeColor.BLACK); } private static void registerGlowBlocks(FabricItemSettings fabricItemSettings) { diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java index 35cbf55181..6ae5cf2a2a 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java @@ -678,102 +678,102 @@ public static void registerFuelRegistry() { FuelRegistry.INSTANCE.add(SpectrumBlocks.RED_PLANKS.asItem(), 300); FuelRegistry.INSTANCE.add(SpectrumBlocks.WHITE_PLANKS.asItem(), 300); FuelRegistry.INSTANCE.add(SpectrumBlocks.YELLOW_PLANKS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BLACK_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BLUE_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BROWN_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.CYAN_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.GRAY_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.GREEN_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_BLUE_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_GRAY_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIME_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.MAGENTA_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.ORANGE_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.PINK_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.PURPLE_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.RED_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.WHITE_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.YELLOW_PLANK_STAIRS.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BLACK_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BLUE_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BROWN_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.CYAN_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.GRAY_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.GREEN_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_BLUE_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_GRAY_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIME_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.MAGENTA_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.ORANGE_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.PINK_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.PURPLE_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.RED_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.WHITE_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.YELLOW_PLANK_PRESSURE_PLATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BLACK_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BLUE_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BROWN_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.CYAN_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.GRAY_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.GREEN_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_BLUE_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_GRAY_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIME_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.MAGENTA_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.ORANGE_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.PINK_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.PURPLE_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.RED_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.WHITE_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.YELLOW_PLANK_FENCE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BLACK_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BLUE_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BROWN_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.CYAN_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.GRAY_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.GREEN_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_BLUE_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_GRAY_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIME_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.MAGENTA_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.ORANGE_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.PINK_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.PURPLE_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.RED_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.WHITE_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.YELLOW_PLANK_FENCE_GATE.asItem(), 300); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BLACK_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BLUE_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BROWN_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.CYAN_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.GRAY_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.GREEN_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_BLUE_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_GRAY_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIME_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.MAGENTA_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.ORANGE_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.PINK_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.PURPLE_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.RED_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.WHITE_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.YELLOW_PLANK_BUTTON.asItem(), 100); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BLACK_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BLUE_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.BROWN_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.CYAN_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.GRAY_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.GREEN_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_BLUE_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_GRAY_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.LIME_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.MAGENTA_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.ORANGE_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.PINK_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.PURPLE_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.RED_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.WHITE_PLANK_SLAB.asItem(), 150); - FuelRegistry.INSTANCE.add(SpectrumBlocks.YELLOW_PLANK_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BLACK_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BLUE_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BROWN_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.CYAN_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.GRAY_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.GREEN_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_BLUE_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_GRAY_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIME_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.MAGENTA_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.ORANGE_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.PINK_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.PURPLE_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.RED_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.WHITE_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.YELLOW_STAIRS.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BLACK_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BLUE_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BROWN_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.CYAN_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.GRAY_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.GREEN_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_BLUE_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_GRAY_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIME_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.MAGENTA_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.ORANGE_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.PINK_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.PURPLE_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.RED_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.WHITE_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.YELLOW_PRESSURE_PLATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BLACK_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BLUE_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BROWN_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.CYAN_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.GRAY_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.GREEN_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_BLUE_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_GRAY_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIME_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.MAGENTA_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.ORANGE_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.PINK_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.PURPLE_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.RED_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.WHITE_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.YELLOW_FENCE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BLACK_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BLUE_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BROWN_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.CYAN_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.GRAY_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.GREEN_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_BLUE_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_GRAY_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIME_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.MAGENTA_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.ORANGE_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.PINK_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.PURPLE_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.RED_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.WHITE_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.YELLOW_FENCE_GATE.asItem(), 300); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BLACK_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BLUE_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BROWN_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.CYAN_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.GRAY_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.GREEN_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_BLUE_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_GRAY_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIME_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.MAGENTA_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.ORANGE_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.PINK_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.PURPLE_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.RED_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.WHITE_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.YELLOW_BUTTON.asItem(), 100); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BLACK_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BLUE_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.BROWN_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.CYAN_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.GRAY_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.GREEN_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_BLUE_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIGHT_GRAY_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.LIME_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.MAGENTA_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.ORANGE_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.PINK_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.PURPLE_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.RED_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.WHITE_SLAB.asItem(), 150); + FuelRegistry.INSTANCE.add(SpectrumBlocks.YELLOW_SLAB.asItem(), 150); } } diff --git a/src/main/resources/assets/spectrum/blockstates/red_plank_button.json b/src/main/resources/assets/spectrum/blockstates/black_button.json similarity index 60% rename from src/main/resources/assets/spectrum/blockstates/red_plank_button.json rename to src/main/resources/assets/spectrum/blockstates/black_button.json index 49aba94514..1f95369549 100644 --- a/src/main/resources/assets/spectrum/blockstates/red_plank_button.json +++ b/src/main/resources/assets/spectrum/blockstates/black_button.json @@ -1,115 +1,115 @@ { "variants": { "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/red_plank_button", + "model": "spectrum:block/black_button", "y": 270, "x": 180 }, "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/red_plank_button_pressed", + "model": "spectrum:block/black_button_pressed", "y": 270, "x": 180 }, "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/red_plank_button", + "model": "spectrum:block/black_button", "y": 180, "x": 180 }, "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/red_plank_button_pressed", + "model": "spectrum:block/black_button_pressed", "y": 180, "x": 180 }, "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/red_plank_button", + "model": "spectrum:block/black_button", "x": 180 }, "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/red_plank_button_pressed", + "model": "spectrum:block/black_button_pressed", "x": 180 }, "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/red_plank_button", + "model": "spectrum:block/black_button", "y": 90, "x": 180 }, "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/red_plank_button_pressed", + "model": "spectrum:block/black_button_pressed", "y": 90, "x": 180 }, "face=floor,facing=east,powered=false": { - "model": "spectrum:block/red_plank_button", + "model": "spectrum:block/black_button", "y": 90 }, "face=floor,facing=east,powered=true": { - "model": "spectrum:block/red_plank_button_pressed", + "model": "spectrum:block/black_button_pressed", "y": 90 }, "face=floor,facing=north,powered=false": { - "model": "spectrum:block/red_plank_button" + "model": "spectrum:block/black_button" }, "face=floor,facing=north,powered=true": { - "model": "spectrum:block/red_plank_button_pressed" + "model": "spectrum:block/black_button_pressed" }, "face=floor,facing=south,powered=false": { - "model": "spectrum:block/red_plank_button", + "model": "spectrum:block/black_button", "y": 180 }, "face=floor,facing=south,powered=true": { - "model": "spectrum:block/red_plank_button_pressed", + "model": "spectrum:block/black_button_pressed", "y": 180 }, "face=floor,facing=west,powered=false": { - "model": "spectrum:block/red_plank_button", + "model": "spectrum:block/black_button", "y": 270 }, "face=floor,facing=west,powered=true": { - "model": "spectrum:block/red_plank_button_pressed", + "model": "spectrum:block/black_button_pressed", "y": 270 }, "face=wall,facing=east,powered=false": { - "model": "spectrum:block/red_plank_button", + "model": "spectrum:block/black_button", "y": 90, "x": 90, "uvlock": true }, "face=wall,facing=east,powered=true": { - "model": "spectrum:block/red_plank_button_pressed", + "model": "spectrum:block/black_button_pressed", "y": 90, "x": 90, "uvlock": true }, "face=wall,facing=north,powered=false": { - "model": "spectrum:block/red_plank_button", + "model": "spectrum:block/black_button", "x": 90, "uvlock": true }, "face=wall,facing=north,powered=true": { - "model": "spectrum:block/red_plank_button_pressed", + "model": "spectrum:block/black_button_pressed", "x": 90, "uvlock": true }, "face=wall,facing=south,powered=false": { - "model": "spectrum:block/red_plank_button", + "model": "spectrum:block/black_button", "y": 180, "x": 90, "uvlock": true }, "face=wall,facing=south,powered=true": { - "model": "spectrum:block/red_plank_button_pressed", + "model": "spectrum:block/black_button_pressed", "y": 180, "x": 90, "uvlock": true }, "face=wall,facing=west,powered=false": { - "model": "spectrum:block/red_plank_button", + "model": "spectrum:block/black_button", "y": 270, "x": 90, "uvlock": true }, "face=wall,facing=west,powered=true": { - "model": "spectrum:block/red_plank_button_pressed", + "model": "spectrum:block/black_button_pressed", "y": 270, "x": 90, "uvlock": true diff --git a/src/main/resources/assets/spectrum/blockstates/red_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/black_fence.json similarity index 66% rename from src/main/resources/assets/spectrum/blockstates/red_plank_fence.json rename to src/main/resources/assets/spectrum/blockstates/black_fence.json index 511fd59049..3acc94da56 100644 --- a/src/main/resources/assets/spectrum/blockstates/red_plank_fence.json +++ b/src/main/resources/assets/spectrum/blockstates/black_fence.json @@ -2,7 +2,7 @@ "multipart": [ { "apply": { - "model": "spectrum:block/red_plank_fence_post" + "model": "spectrum:block/black_fence_post" } }, { @@ -10,7 +10,7 @@ "north": "true" }, "apply": { - "model": "spectrum:block/red_plank_fence_side", + "model": "spectrum:block/black_fence_side", "uvlock": true } }, @@ -19,7 +19,7 @@ "east": "true" }, "apply": { - "model": "spectrum:block/red_plank_fence_side", + "model": "spectrum:block/black_fence_side", "y": 90, "uvlock": true } @@ -29,7 +29,7 @@ "south": "true" }, "apply": { - "model": "spectrum:block/red_plank_fence_side", + "model": "spectrum:block/black_fence_side", "y": 180, "uvlock": true } @@ -39,7 +39,7 @@ "west": "true" }, "apply": { - "model": "spectrum:block/red_plank_fence_side", + "model": "spectrum:block/black_fence_side", "y": 270, "uvlock": true } diff --git a/src/main/resources/assets/spectrum/blockstates/red_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/black_fence_gate.json similarity index 60% rename from src/main/resources/assets/spectrum/blockstates/red_plank_fence_gate.json rename to src/main/resources/assets/spectrum/blockstates/black_fence_gate.json index 0b733c95a8..d2cfddb614 100644 --- a/src/main/resources/assets/spectrum/blockstates/red_plank_fence_gate.json +++ b/src/main/resources/assets/spectrum/blockstates/black_fence_gate.json @@ -3,78 +3,78 @@ "facing=east,in_wall=false,open=false": { "uvlock": true, "y": 270, - "model": "spectrum:block/red_plank_fence_gate" + "model": "spectrum:block/black_fence_gate" }, "facing=east,in_wall=false,open=true": { "uvlock": true, "y": 270, - "model": "spectrum:block/red_plank_fence_gate_open" + "model": "spectrum:block/black_fence_gate_open" }, "facing=east,in_wall=true,open=false": { "uvlock": true, "y": 270, - "model": "spectrum:block/red_plank_fence_gate_wall" + "model": "spectrum:block/black_fence_gate_wall" }, "facing=east,in_wall=true,open=true": { "uvlock": true, "y": 270, - "model": "spectrum:block/red_plank_fence_gate_wall_open" + "model": "spectrum:block/black_fence_gate_wall_open" }, "facing=north,in_wall=false,open=false": { "uvlock": true, "y": 180, - "model": "spectrum:block/red_plank_fence_gate" + "model": "spectrum:block/black_fence_gate" }, "facing=north,in_wall=false,open=true": { "uvlock": true, "y": 180, - "model": "spectrum:block/red_plank_fence_gate_open" + "model": "spectrum:block/black_fence_gate_open" }, "facing=north,in_wall=true,open=false": { "uvlock": true, "y": 180, - "model": "spectrum:block/red_plank_fence_gate_wall" + "model": "spectrum:block/black_fence_gate_wall" }, "facing=north,in_wall=true,open=true": { "uvlock": true, "y": 180, - "model": "spectrum:block/red_plank_fence_gate_wall_open" + "model": "spectrum:block/black_fence_gate_wall_open" }, "facing=south,in_wall=false,open=false": { "uvlock": true, - "model": "spectrum:block/red_plank_fence_gate" + "model": "spectrum:block/black_fence_gate" }, "facing=south,in_wall=false,open=true": { "uvlock": true, - "model": "spectrum:block/red_plank_fence_gate_open" + "model": "spectrum:block/black_fence_gate_open" }, "facing=south,in_wall=true,open=false": { "uvlock": true, - "model": "spectrum:block/red_plank_fence_gate_wall" + "model": "spectrum:block/black_fence_gate_wall" }, "facing=south,in_wall=true,open=true": { "uvlock": true, - "model": "spectrum:block/red_plank_fence_gate_wall_open" + "model": "spectrum:block/black_fence_gate_wall_open" }, "facing=west,in_wall=false,open=false": { "uvlock": true, "y": 90, - "model": "spectrum:block/red_plank_fence_gate" + "model": "spectrum:block/black_fence_gate" }, "facing=west,in_wall=false,open=true": { "uvlock": true, "y": 90, - "model": "spectrum:block/red_plank_fence_gate_open" + "model": "spectrum:block/black_fence_gate_open" }, "facing=west,in_wall=true,open=false": { "uvlock": true, "y": 90, - "model": "spectrum:block/red_plank_fence_gate_wall" + "model": "spectrum:block/black_fence_gate_wall" }, "facing=west,in_wall=true,open=true": { "uvlock": true, "y": 90, - "model": "spectrum:block/red_plank_fence_gate_wall_open" + "model": "spectrum:block/black_fence_gate_wall_open" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/black_plank_button.json b/src/main/resources/assets/spectrum/blockstates/black_plank_button.json deleted file mode 100644 index edbf8e1efd..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/black_plank_button.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/black_plank_button", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/black_plank_button_pressed", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/black_plank_button", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/black_plank_button_pressed", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/black_plank_button", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/black_plank_button_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/black_plank_button", - "y": 90, - "x": 180 - }, - "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/black_plank_button_pressed", - "y": 90, - "x": 180 - }, - "face=floor,facing=east,powered=false": { - "model": "spectrum:block/black_plank_button", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "spectrum:block/black_plank_button_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "spectrum:block/black_plank_button" - }, - "face=floor,facing=north,powered=true": { - "model": "spectrum:block/black_plank_button_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "spectrum:block/black_plank_button", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "spectrum:block/black_plank_button_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "spectrum:block/black_plank_button", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "spectrum:block/black_plank_button_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "spectrum:block/black_plank_button", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=east,powered=true": { - "model": "spectrum:block/black_plank_button_pressed", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=false": { - "model": "spectrum:block/black_plank_button", - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=true": { - "model": "spectrum:block/black_plank_button_pressed", - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=false": { - "model": "spectrum:block/black_plank_button", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=true": { - "model": "spectrum:block/black_plank_button_pressed", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=false": { - "model": "spectrum:block/black_plank_button", - "y": 270, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=true": { - "model": "spectrum:block/black_plank_button_pressed", - "y": 270, - "x": 90, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/black_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/black_plank_fence.json deleted file mode 100644 index 925489df15..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/black_plank_fence.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "spectrum:block/black_plank_fence_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "spectrum:block/black_plank_fence_side", - "uvlock": true - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "spectrum:block/black_plank_fence_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "spectrum:block/black_plank_fence_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "spectrum:block/black_plank_fence_side", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/black_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/black_plank_fence_gate.json deleted file mode 100644 index 18d14010db..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/black_plank_fence_gate.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "variants": { - "facing=east,in_wall=false,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/black_plank_fence_gate" - }, - "facing=east,in_wall=false,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/black_plank_fence_gate_open" - }, - "facing=east,in_wall=true,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/black_plank_fence_gate_wall" - }, - "facing=east,in_wall=true,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/black_plank_fence_gate_wall_open" - }, - "facing=north,in_wall=false,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/black_plank_fence_gate" - }, - "facing=north,in_wall=false,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/black_plank_fence_gate_open" - }, - "facing=north,in_wall=true,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/black_plank_fence_gate_wall" - }, - "facing=north,in_wall=true,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/black_plank_fence_gate_wall_open" - }, - "facing=south,in_wall=false,open=false": { - "uvlock": true, - "model": "spectrum:block/black_plank_fence_gate" - }, - "facing=south,in_wall=false,open=true": { - "uvlock": true, - "model": "spectrum:block/black_plank_fence_gate_open" - }, - "facing=south,in_wall=true,open=false": { - "uvlock": true, - "model": "spectrum:block/black_plank_fence_gate_wall" - }, - "facing=south,in_wall=true,open=true": { - "uvlock": true, - "model": "spectrum:block/black_plank_fence_gate_wall_open" - }, - "facing=west,in_wall=false,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/black_plank_fence_gate" - }, - "facing=west,in_wall=false,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/black_plank_fence_gate_open" - }, - "facing=west,in_wall=true,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/black_plank_fence_gate_wall" - }, - "facing=west,in_wall=true,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/black_plank_fence_gate_wall_open" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/black_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/black_plank_pressure_plate.json deleted file mode 100644 index 6eb0535fe2..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/black_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/black_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/black_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/black_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/black_plank_stairs.json deleted file mode 100644 index d8da8f094d..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/black_plank_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/black_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/black_plank_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/black_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/black_plank_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/black_plank_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/black_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/black_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/black_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/black_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "spectrum:block/black_plank_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/black_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/black_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/black_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/black_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/black_plank_stairs", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/black_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/black_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/black_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/black_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=straight": { - "model": "spectrum:block/black_plank_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/black_plank_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/black_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/black_plank_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/black_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/black_plank_stairs", - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/black_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/black_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/black_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/black_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "spectrum:block/black_plank_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/black_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/black_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/black_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/black_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/black_plank_stairs", - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/black_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/black_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/black_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/black_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "spectrum:block/black_plank_stairs", - "x": 180, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/black_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/black_pressure_plate.json new file mode 100644 index 0000000000..892711dba8 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/black_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/black_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/black_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/black_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/black_slab.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/black_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/black_slab.json index aa21fae403..55451b70dc 100644 --- a/src/main/resources/assets/spectrum/blockstates/black_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/black_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/black_plank_slab" + "model": "spectrum:block/black_slab" }, "type=double": { "model": "spectrum:block/black_planks" }, "type=top": { - "model": "spectrum:block/black_plank_slab_top" + "model": "spectrum:block/black_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/red_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/black_stairs.json similarity index 63% rename from src/main/resources/assets/spectrum/blockstates/red_plank_stairs.json rename to src/main/resources/assets/spectrum/blockstates/black_stairs.json index db6a408892..ad86a59e71 100644 --- a/src/main/resources/assets/spectrum/blockstates/red_plank_stairs.json +++ b/src/main/resources/assets/spectrum/blockstates/black_stairs.json @@ -1,206 +1,206 @@ { "variants": { "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "y": 270, "uvlock": true }, "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/red_plank_stairs_inner" + "model": "spectrum:block/black_stairs_inner" }, "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "y": 270, "uvlock": true }, "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/red_plank_stairs_outer" + "model": "spectrum:block/black_stairs_outer" }, "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/red_plank_stairs" + "model": "spectrum:block/black_stairs" }, "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "x": 180, "uvlock": true }, "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "x": 180, "y": 90, "uvlock": true }, "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "x": 180, "uvlock": true }, "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "x": 180, "y": 90, "uvlock": true }, "facing=east,half=top,shape=straight": { - "model": "spectrum:block/red_plank_stairs", + "model": "spectrum:block/black_stairs", "x": 180, "uvlock": true }, "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "y": 180, "uvlock": true }, "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "y": 270, "uvlock": true }, "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "y": 180, "uvlock": true }, "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "y": 270, "uvlock": true }, "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/red_plank_stairs", + "model": "spectrum:block/black_stairs", "y": 270, "uvlock": true }, "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "x": 180, "y": 270, "uvlock": true }, "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "x": 180, "uvlock": true }, "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "x": 180, "y": 270, "uvlock": true }, "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "x": 180, "uvlock": true }, "facing=north,half=top,shape=straight": { - "model": "spectrum:block/red_plank_stairs", + "model": "spectrum:block/black_stairs", "x": 180, "y": 270, "uvlock": true }, "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/red_plank_stairs_inner" + "model": "spectrum:block/black_stairs_inner" }, "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "y": 90, "uvlock": true }, "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/red_plank_stairs_outer" + "model": "spectrum:block/black_stairs_outer" }, "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "y": 90, "uvlock": true }, "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/red_plank_stairs", + "model": "spectrum:block/black_stairs", "y": 90, "uvlock": true }, "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "x": 180, "y": 90, "uvlock": true }, "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "x": 180, "y": 180, "uvlock": true }, "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "x": 180, "y": 90, "uvlock": true }, "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "x": 180, "y": 180, "uvlock": true }, "facing=south,half=top,shape=straight": { - "model": "spectrum:block/red_plank_stairs", + "model": "spectrum:block/black_stairs", "x": 180, "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "y": 180, "uvlock": true }, "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "y": 180, "uvlock": true }, "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/red_plank_stairs", + "model": "spectrum:block/black_stairs", "y": 180, "uvlock": true }, "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "x": 180, "y": 180, "uvlock": true }, "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/red_plank_stairs_inner", + "model": "spectrum:block/black_stairs_inner", "x": 180, "y": 270, "uvlock": true }, "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "x": 180, "y": 180, "uvlock": true }, "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/red_plank_stairs_outer", + "model": "spectrum:block/black_stairs_outer", "x": 180, "y": 270, "uvlock": true }, "facing=west,half=top,shape=straight": { - "model": "spectrum:block/red_plank_stairs", + "model": "spectrum:block/black_stairs", "x": 180, "y": 180, "uvlock": true diff --git a/src/main/resources/assets/spectrum/blockstates/lime_plank_button.json b/src/main/resources/assets/spectrum/blockstates/blue_button.json similarity index 60% rename from src/main/resources/assets/spectrum/blockstates/lime_plank_button.json rename to src/main/resources/assets/spectrum/blockstates/blue_button.json index 8b48594cd8..55578a2490 100644 --- a/src/main/resources/assets/spectrum/blockstates/lime_plank_button.json +++ b/src/main/resources/assets/spectrum/blockstates/blue_button.json @@ -1,115 +1,115 @@ { "variants": { "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/lime_plank_button", + "model": "spectrum:block/blue_button", "y": 270, "x": 180 }, "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/lime_plank_button_pressed", + "model": "spectrum:block/blue_button_pressed", "y": 270, "x": 180 }, "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/lime_plank_button", + "model": "spectrum:block/blue_button", "y": 180, "x": 180 }, "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/lime_plank_button_pressed", + "model": "spectrum:block/blue_button_pressed", "y": 180, "x": 180 }, "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/lime_plank_button", + "model": "spectrum:block/blue_button", "x": 180 }, "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/lime_plank_button_pressed", + "model": "spectrum:block/blue_button_pressed", "x": 180 }, "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/lime_plank_button", + "model": "spectrum:block/blue_button", "y": 90, "x": 180 }, "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/lime_plank_button_pressed", + "model": "spectrum:block/blue_button_pressed", "y": 90, "x": 180 }, "face=floor,facing=east,powered=false": { - "model": "spectrum:block/lime_plank_button", + "model": "spectrum:block/blue_button", "y": 90 }, "face=floor,facing=east,powered=true": { - "model": "spectrum:block/lime_plank_button_pressed", + "model": "spectrum:block/blue_button_pressed", "y": 90 }, "face=floor,facing=north,powered=false": { - "model": "spectrum:block/lime_plank_button" + "model": "spectrum:block/blue_button" }, "face=floor,facing=north,powered=true": { - "model": "spectrum:block/lime_plank_button_pressed" + "model": "spectrum:block/blue_button_pressed" }, "face=floor,facing=south,powered=false": { - "model": "spectrum:block/lime_plank_button", + "model": "spectrum:block/blue_button", "y": 180 }, "face=floor,facing=south,powered=true": { - "model": "spectrum:block/lime_plank_button_pressed", + "model": "spectrum:block/blue_button_pressed", "y": 180 }, "face=floor,facing=west,powered=false": { - "model": "spectrum:block/lime_plank_button", + "model": "spectrum:block/blue_button", "y": 270 }, "face=floor,facing=west,powered=true": { - "model": "spectrum:block/lime_plank_button_pressed", + "model": "spectrum:block/blue_button_pressed", "y": 270 }, "face=wall,facing=east,powered=false": { - "model": "spectrum:block/lime_plank_button", + "model": "spectrum:block/blue_button", "y": 90, "x": 90, "uvlock": true }, "face=wall,facing=east,powered=true": { - "model": "spectrum:block/lime_plank_button_pressed", + "model": "spectrum:block/blue_button_pressed", "y": 90, "x": 90, "uvlock": true }, "face=wall,facing=north,powered=false": { - "model": "spectrum:block/lime_plank_button", + "model": "spectrum:block/blue_button", "x": 90, "uvlock": true }, "face=wall,facing=north,powered=true": { - "model": "spectrum:block/lime_plank_button_pressed", + "model": "spectrum:block/blue_button_pressed", "x": 90, "uvlock": true }, "face=wall,facing=south,powered=false": { - "model": "spectrum:block/lime_plank_button", + "model": "spectrum:block/blue_button", "y": 180, "x": 90, "uvlock": true }, "face=wall,facing=south,powered=true": { - "model": "spectrum:block/lime_plank_button_pressed", + "model": "spectrum:block/blue_button_pressed", "y": 180, "x": 90, "uvlock": true }, "face=wall,facing=west,powered=false": { - "model": "spectrum:block/lime_plank_button", + "model": "spectrum:block/blue_button", "y": 270, "x": 90, "uvlock": true }, "face=wall,facing=west,powered=true": { - "model": "spectrum:block/lime_plank_button_pressed", + "model": "spectrum:block/blue_button_pressed", "y": 270, "x": 90, "uvlock": true diff --git a/src/main/resources/assets/spectrum/blockstates/gray_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/blue_fence.json similarity index 66% rename from src/main/resources/assets/spectrum/blockstates/gray_plank_fence.json rename to src/main/resources/assets/spectrum/blockstates/blue_fence.json index 999ebb0181..240602b7c8 100644 --- a/src/main/resources/assets/spectrum/blockstates/gray_plank_fence.json +++ b/src/main/resources/assets/spectrum/blockstates/blue_fence.json @@ -2,7 +2,7 @@ "multipart": [ { "apply": { - "model": "spectrum:block/gray_plank_fence_post" + "model": "spectrum:block/blue_fence_post" } }, { @@ -10,7 +10,7 @@ "north": "true" }, "apply": { - "model": "spectrum:block/gray_plank_fence_side", + "model": "spectrum:block/blue_fence_side", "uvlock": true } }, @@ -19,7 +19,7 @@ "east": "true" }, "apply": { - "model": "spectrum:block/gray_plank_fence_side", + "model": "spectrum:block/blue_fence_side", "y": 90, "uvlock": true } @@ -29,7 +29,7 @@ "south": "true" }, "apply": { - "model": "spectrum:block/gray_plank_fence_side", + "model": "spectrum:block/blue_fence_side", "y": 180, "uvlock": true } @@ -39,7 +39,7 @@ "west": "true" }, "apply": { - "model": "spectrum:block/gray_plank_fence_side", + "model": "spectrum:block/blue_fence_side", "y": 270, "uvlock": true } diff --git a/src/main/resources/assets/spectrum/blockstates/cyan_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/blue_fence_gate.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/cyan_plank_fence_gate.json rename to src/main/resources/assets/spectrum/blockstates/blue_fence_gate.json index 8136187cc3..024c50833a 100644 --- a/src/main/resources/assets/spectrum/blockstates/cyan_plank_fence_gate.json +++ b/src/main/resources/assets/spectrum/blockstates/blue_fence_gate.json @@ -3,78 +3,78 @@ "facing=east,in_wall=false,open=false": { "uvlock": true, "y": 270, - "model": "spectrum:block/cyan_plank_fence_gate" + "model": "spectrum:block/blue_fence_gate" }, "facing=east,in_wall=false,open=true": { "uvlock": true, "y": 270, - "model": "spectrum:block/cyan_plank_fence_gate_open" + "model": "spectrum:block/blue_fence_gate_open" }, "facing=east,in_wall=true,open=false": { "uvlock": true, "y": 270, - "model": "spectrum:block/cyan_plank_fence_gate_wall" + "model": "spectrum:block/blue_fence_gate_wall" }, "facing=east,in_wall=true,open=true": { "uvlock": true, "y": 270, - "model": "spectrum:block/cyan_plank_fence_gate_wall_open" + "model": "spectrum:block/blue_fence_gate_wall_open" }, "facing=north,in_wall=false,open=false": { "uvlock": true, "y": 180, - "model": "spectrum:block/cyan_plank_fence_gate" + "model": "spectrum:block/blue_fence_gate" }, "facing=north,in_wall=false,open=true": { "uvlock": true, "y": 180, - "model": "spectrum:block/cyan_plank_fence_gate_open" + "model": "spectrum:block/blue_fence_gate_open" }, "facing=north,in_wall=true,open=false": { "uvlock": true, "y": 180, - "model": "spectrum:block/cyan_plank_fence_gate_wall" + "model": "spectrum:block/blue_fence_gate_wall" }, "facing=north,in_wall=true,open=true": { "uvlock": true, "y": 180, - "model": "spectrum:block/cyan_plank_fence_gate_wall_open" + "model": "spectrum:block/blue_fence_gate_wall_open" }, "facing=south,in_wall=false,open=false": { "uvlock": true, - "model": "spectrum:block/cyan_plank_fence_gate" + "model": "spectrum:block/blue_fence_gate" }, "facing=south,in_wall=false,open=true": { "uvlock": true, - "model": "spectrum:block/cyan_plank_fence_gate_open" + "model": "spectrum:block/blue_fence_gate_open" }, "facing=south,in_wall=true,open=false": { "uvlock": true, - "model": "spectrum:block/cyan_plank_fence_gate_wall" + "model": "spectrum:block/blue_fence_gate_wall" }, "facing=south,in_wall=true,open=true": { "uvlock": true, - "model": "spectrum:block/cyan_plank_fence_gate_wall_open" + "model": "spectrum:block/blue_fence_gate_wall_open" }, "facing=west,in_wall=false,open=false": { "uvlock": true, "y": 90, - "model": "spectrum:block/cyan_plank_fence_gate" + "model": "spectrum:block/blue_fence_gate" }, "facing=west,in_wall=false,open=true": { "uvlock": true, "y": 90, - "model": "spectrum:block/cyan_plank_fence_gate_open" + "model": "spectrum:block/blue_fence_gate_open" }, "facing=west,in_wall=true,open=false": { "uvlock": true, "y": 90, - "model": "spectrum:block/cyan_plank_fence_gate_wall" + "model": "spectrum:block/blue_fence_gate_wall" }, "facing=west,in_wall=true,open=true": { "uvlock": true, "y": 90, - "model": "spectrum:block/cyan_plank_fence_gate_wall_open" + "model": "spectrum:block/blue_fence_gate_wall_open" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/blue_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/blue_plank_pressure_plate.json deleted file mode 100644 index ccf35b8f3c..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/blue_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/blue_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/blue_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/blue_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/blue_pressure_plate.json new file mode 100644 index 0000000000..4af2220811 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/blue_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/blue_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/blue_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/blue_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/blue_slab.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/blue_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/blue_slab.json index a67bffc9c7..562ec9c2fa 100644 --- a/src/main/resources/assets/spectrum/blockstates/blue_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/blue_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/blue_plank_slab" + "model": "spectrum:block/blue_slab" }, "type=double": { "model": "spectrum:block/blue_planks" }, "type=top": { - "model": "spectrum:block/blue_plank_slab_top" + "model": "spectrum:block/blue_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/lime_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/blue_stairs.json similarity index 62% rename from src/main/resources/assets/spectrum/blockstates/lime_plank_stairs.json rename to src/main/resources/assets/spectrum/blockstates/blue_stairs.json index 2e8a476f14..8f91b2533f 100644 --- a/src/main/resources/assets/spectrum/blockstates/lime_plank_stairs.json +++ b/src/main/resources/assets/spectrum/blockstates/blue_stairs.json @@ -1,206 +1,206 @@ { "variants": { "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "y": 270, "uvlock": true }, "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/lime_plank_stairs_inner" + "model": "spectrum:block/blue_stairs_inner" }, "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "y": 270, "uvlock": true }, "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/lime_plank_stairs_outer" + "model": "spectrum:block/blue_stairs_outer" }, "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/lime_plank_stairs" + "model": "spectrum:block/blue_stairs" }, "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "x": 180, "uvlock": true }, "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "x": 180, "y": 90, "uvlock": true }, "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "x": 180, "uvlock": true }, "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "x": 180, "y": 90, "uvlock": true }, "facing=east,half=top,shape=straight": { - "model": "spectrum:block/lime_plank_stairs", + "model": "spectrum:block/blue_stairs", "x": 180, "uvlock": true }, "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "y": 180, "uvlock": true }, "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "y": 270, "uvlock": true }, "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "y": 180, "uvlock": true }, "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "y": 270, "uvlock": true }, "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/lime_plank_stairs", + "model": "spectrum:block/blue_stairs", "y": 270, "uvlock": true }, "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "x": 180, "y": 270, "uvlock": true }, "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "x": 180, "uvlock": true }, "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "x": 180, "y": 270, "uvlock": true }, "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "x": 180, "uvlock": true }, "facing=north,half=top,shape=straight": { - "model": "spectrum:block/lime_plank_stairs", + "model": "spectrum:block/blue_stairs", "x": 180, "y": 270, "uvlock": true }, "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/lime_plank_stairs_inner" + "model": "spectrum:block/blue_stairs_inner" }, "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "y": 90, "uvlock": true }, "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/lime_plank_stairs_outer" + "model": "spectrum:block/blue_stairs_outer" }, "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "y": 90, "uvlock": true }, "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/lime_plank_stairs", + "model": "spectrum:block/blue_stairs", "y": 90, "uvlock": true }, "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "x": 180, "y": 90, "uvlock": true }, "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "x": 180, "y": 180, "uvlock": true }, "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "x": 180, "y": 90, "uvlock": true }, "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "x": 180, "y": 180, "uvlock": true }, "facing=south,half=top,shape=straight": { - "model": "spectrum:block/lime_plank_stairs", + "model": "spectrum:block/blue_stairs", "x": 180, "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "y": 180, "uvlock": true }, "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "y": 180, "uvlock": true }, "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/lime_plank_stairs", + "model": "spectrum:block/blue_stairs", "y": 180, "uvlock": true }, "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "x": 180, "y": 180, "uvlock": true }, "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/lime_plank_stairs_inner", + "model": "spectrum:block/blue_stairs_inner", "x": 180, "y": 270, "uvlock": true }, "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "x": 180, "y": 180, "uvlock": true }, "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/lime_plank_stairs_outer", + "model": "spectrum:block/blue_stairs_outer", "x": 180, "y": 270, "uvlock": true }, "facing=west,half=top,shape=straight": { - "model": "spectrum:block/lime_plank_stairs", + "model": "spectrum:block/blue_stairs", "x": 180, "y": 180, "uvlock": true diff --git a/src/main/resources/assets/spectrum/blockstates/cyan_plank_button.json b/src/main/resources/assets/spectrum/blockstates/brown_button.json similarity index 60% rename from src/main/resources/assets/spectrum/blockstates/cyan_plank_button.json rename to src/main/resources/assets/spectrum/blockstates/brown_button.json index 79a12a60cf..a99bdb11eb 100644 --- a/src/main/resources/assets/spectrum/blockstates/cyan_plank_button.json +++ b/src/main/resources/assets/spectrum/blockstates/brown_button.json @@ -1,115 +1,115 @@ { "variants": { "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/cyan_plank_button", + "model": "spectrum:block/brown_button", "y": 270, "x": 180 }, "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/cyan_plank_button_pressed", + "model": "spectrum:block/brown_button_pressed", "y": 270, "x": 180 }, "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/cyan_plank_button", + "model": "spectrum:block/brown_button", "y": 180, "x": 180 }, "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/cyan_plank_button_pressed", + "model": "spectrum:block/brown_button_pressed", "y": 180, "x": 180 }, "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/cyan_plank_button", + "model": "spectrum:block/brown_button", "x": 180 }, "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/cyan_plank_button_pressed", + "model": "spectrum:block/brown_button_pressed", "x": 180 }, "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/cyan_plank_button", + "model": "spectrum:block/brown_button", "y": 90, "x": 180 }, "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/cyan_plank_button_pressed", + "model": "spectrum:block/brown_button_pressed", "y": 90, "x": 180 }, "face=floor,facing=east,powered=false": { - "model": "spectrum:block/cyan_plank_button", + "model": "spectrum:block/brown_button", "y": 90 }, "face=floor,facing=east,powered=true": { - "model": "spectrum:block/cyan_plank_button_pressed", + "model": "spectrum:block/brown_button_pressed", "y": 90 }, "face=floor,facing=north,powered=false": { - "model": "spectrum:block/cyan_plank_button" + "model": "spectrum:block/brown_button" }, "face=floor,facing=north,powered=true": { - "model": "spectrum:block/cyan_plank_button_pressed" + "model": "spectrum:block/brown_button_pressed" }, "face=floor,facing=south,powered=false": { - "model": "spectrum:block/cyan_plank_button", + "model": "spectrum:block/brown_button", "y": 180 }, "face=floor,facing=south,powered=true": { - "model": "spectrum:block/cyan_plank_button_pressed", + "model": "spectrum:block/brown_button_pressed", "y": 180 }, "face=floor,facing=west,powered=false": { - "model": "spectrum:block/cyan_plank_button", + "model": "spectrum:block/brown_button", "y": 270 }, "face=floor,facing=west,powered=true": { - "model": "spectrum:block/cyan_plank_button_pressed", + "model": "spectrum:block/brown_button_pressed", "y": 270 }, "face=wall,facing=east,powered=false": { - "model": "spectrum:block/cyan_plank_button", + "model": "spectrum:block/brown_button", "y": 90, "x": 90, "uvlock": true }, "face=wall,facing=east,powered=true": { - "model": "spectrum:block/cyan_plank_button_pressed", + "model": "spectrum:block/brown_button_pressed", "y": 90, "x": 90, "uvlock": true }, "face=wall,facing=north,powered=false": { - "model": "spectrum:block/cyan_plank_button", + "model": "spectrum:block/brown_button", "x": 90, "uvlock": true }, "face=wall,facing=north,powered=true": { - "model": "spectrum:block/cyan_plank_button_pressed", + "model": "spectrum:block/brown_button_pressed", "x": 90, "uvlock": true }, "face=wall,facing=south,powered=false": { - "model": "spectrum:block/cyan_plank_button", + "model": "spectrum:block/brown_button", "y": 180, "x": 90, "uvlock": true }, "face=wall,facing=south,powered=true": { - "model": "spectrum:block/cyan_plank_button_pressed", + "model": "spectrum:block/brown_button_pressed", "y": 180, "x": 90, "uvlock": true }, "face=wall,facing=west,powered=false": { - "model": "spectrum:block/cyan_plank_button", + "model": "spectrum:block/brown_button", "y": 270, "x": 90, "uvlock": true }, "face=wall,facing=west,powered=true": { - "model": "spectrum:block/cyan_plank_button_pressed", + "model": "spectrum:block/brown_button_pressed", "y": 270, "x": 90, "uvlock": true diff --git a/src/main/resources/assets/spectrum/blockstates/lime_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/brown_fence.json similarity index 66% rename from src/main/resources/assets/spectrum/blockstates/lime_plank_fence.json rename to src/main/resources/assets/spectrum/blockstates/brown_fence.json index 587b2a854e..2a005c97ba 100644 --- a/src/main/resources/assets/spectrum/blockstates/lime_plank_fence.json +++ b/src/main/resources/assets/spectrum/blockstates/brown_fence.json @@ -2,7 +2,7 @@ "multipart": [ { "apply": { - "model": "spectrum:block/lime_plank_fence_post" + "model": "spectrum:block/brown_fence_post" } }, { @@ -10,7 +10,7 @@ "north": "true" }, "apply": { - "model": "spectrum:block/lime_plank_fence_side", + "model": "spectrum:block/brown_fence_side", "uvlock": true } }, @@ -19,7 +19,7 @@ "east": "true" }, "apply": { - "model": "spectrum:block/lime_plank_fence_side", + "model": "spectrum:block/brown_fence_side", "y": 90, "uvlock": true } @@ -29,7 +29,7 @@ "south": "true" }, "apply": { - "model": "spectrum:block/lime_plank_fence_side", + "model": "spectrum:block/brown_fence_side", "y": 180, "uvlock": true } @@ -39,7 +39,7 @@ "west": "true" }, "apply": { - "model": "spectrum:block/lime_plank_fence_side", + "model": "spectrum:block/brown_fence_side", "y": 270, "uvlock": true } diff --git a/src/main/resources/assets/spectrum/blockstates/lime_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/brown_fence_gate.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/lime_plank_fence_gate.json rename to src/main/resources/assets/spectrum/blockstates/brown_fence_gate.json index f1449655e3..46538fbc1c 100644 --- a/src/main/resources/assets/spectrum/blockstates/lime_plank_fence_gate.json +++ b/src/main/resources/assets/spectrum/blockstates/brown_fence_gate.json @@ -3,78 +3,78 @@ "facing=east,in_wall=false,open=false": { "uvlock": true, "y": 270, - "model": "spectrum:block/lime_plank_fence_gate" + "model": "spectrum:block/brown_fence_gate" }, "facing=east,in_wall=false,open=true": { "uvlock": true, "y": 270, - "model": "spectrum:block/lime_plank_fence_gate_open" + "model": "spectrum:block/brown_fence_gate_open" }, "facing=east,in_wall=true,open=false": { "uvlock": true, "y": 270, - "model": "spectrum:block/lime_plank_fence_gate_wall" + "model": "spectrum:block/brown_fence_gate_wall" }, "facing=east,in_wall=true,open=true": { "uvlock": true, "y": 270, - "model": "spectrum:block/lime_plank_fence_gate_wall_open" + "model": "spectrum:block/brown_fence_gate_wall_open" }, "facing=north,in_wall=false,open=false": { "uvlock": true, "y": 180, - "model": "spectrum:block/lime_plank_fence_gate" + "model": "spectrum:block/brown_fence_gate" }, "facing=north,in_wall=false,open=true": { "uvlock": true, "y": 180, - "model": "spectrum:block/lime_plank_fence_gate_open" + "model": "spectrum:block/brown_fence_gate_open" }, "facing=north,in_wall=true,open=false": { "uvlock": true, "y": 180, - "model": "spectrum:block/lime_plank_fence_gate_wall" + "model": "spectrum:block/brown_fence_gate_wall" }, "facing=north,in_wall=true,open=true": { "uvlock": true, "y": 180, - "model": "spectrum:block/lime_plank_fence_gate_wall_open" + "model": "spectrum:block/brown_fence_gate_wall_open" }, "facing=south,in_wall=false,open=false": { "uvlock": true, - "model": "spectrum:block/lime_plank_fence_gate" + "model": "spectrum:block/brown_fence_gate" }, "facing=south,in_wall=false,open=true": { "uvlock": true, - "model": "spectrum:block/lime_plank_fence_gate_open" + "model": "spectrum:block/brown_fence_gate_open" }, "facing=south,in_wall=true,open=false": { "uvlock": true, - "model": "spectrum:block/lime_plank_fence_gate_wall" + "model": "spectrum:block/brown_fence_gate_wall" }, "facing=south,in_wall=true,open=true": { "uvlock": true, - "model": "spectrum:block/lime_plank_fence_gate_wall_open" + "model": "spectrum:block/brown_fence_gate_wall_open" }, "facing=west,in_wall=false,open=false": { "uvlock": true, "y": 90, - "model": "spectrum:block/lime_plank_fence_gate" + "model": "spectrum:block/brown_fence_gate" }, "facing=west,in_wall=false,open=true": { "uvlock": true, "y": 90, - "model": "spectrum:block/lime_plank_fence_gate_open" + "model": "spectrum:block/brown_fence_gate_open" }, "facing=west,in_wall=true,open=false": { "uvlock": true, "y": 90, - "model": "spectrum:block/lime_plank_fence_gate_wall" + "model": "spectrum:block/brown_fence_gate_wall" }, "facing=west,in_wall=true,open=true": { "uvlock": true, "y": 90, - "model": "spectrum:block/lime_plank_fence_gate_wall_open" + "model": "spectrum:block/brown_fence_gate_wall_open" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/brown_plank_button.json b/src/main/resources/assets/spectrum/blockstates/brown_plank_button.json deleted file mode 100644 index 2da206231b..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/brown_plank_button.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/brown_plank_button", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/brown_plank_button_pressed", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/brown_plank_button", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/brown_plank_button_pressed", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/brown_plank_button", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/brown_plank_button_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/brown_plank_button", - "y": 90, - "x": 180 - }, - "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/brown_plank_button_pressed", - "y": 90, - "x": 180 - }, - "face=floor,facing=east,powered=false": { - "model": "spectrum:block/brown_plank_button", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "spectrum:block/brown_plank_button_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "spectrum:block/brown_plank_button" - }, - "face=floor,facing=north,powered=true": { - "model": "spectrum:block/brown_plank_button_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "spectrum:block/brown_plank_button", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "spectrum:block/brown_plank_button_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "spectrum:block/brown_plank_button", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "spectrum:block/brown_plank_button_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "spectrum:block/brown_plank_button", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=east,powered=true": { - "model": "spectrum:block/brown_plank_button_pressed", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=false": { - "model": "spectrum:block/brown_plank_button", - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=true": { - "model": "spectrum:block/brown_plank_button_pressed", - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=false": { - "model": "spectrum:block/brown_plank_button", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=true": { - "model": "spectrum:block/brown_plank_button_pressed", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=false": { - "model": "spectrum:block/brown_plank_button", - "y": 270, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=true": { - "model": "spectrum:block/brown_plank_button_pressed", - "y": 270, - "x": 90, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/brown_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/brown_plank_fence.json deleted file mode 100644 index a6ed8643f0..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/brown_plank_fence.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "spectrum:block/brown_plank_fence_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "spectrum:block/brown_plank_fence_side", - "uvlock": true - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "spectrum:block/brown_plank_fence_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "spectrum:block/brown_plank_fence_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "spectrum:block/brown_plank_fence_side", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/brown_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/brown_plank_fence_gate.json deleted file mode 100644 index 4a4165ce8c..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/brown_plank_fence_gate.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "variants": { - "facing=east,in_wall=false,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/brown_plank_fence_gate" - }, - "facing=east,in_wall=false,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/brown_plank_fence_gate_open" - }, - "facing=east,in_wall=true,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/brown_plank_fence_gate_wall" - }, - "facing=east,in_wall=true,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/brown_plank_fence_gate_wall_open" - }, - "facing=north,in_wall=false,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/brown_plank_fence_gate" - }, - "facing=north,in_wall=false,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/brown_plank_fence_gate_open" - }, - "facing=north,in_wall=true,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/brown_plank_fence_gate_wall" - }, - "facing=north,in_wall=true,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/brown_plank_fence_gate_wall_open" - }, - "facing=south,in_wall=false,open=false": { - "uvlock": true, - "model": "spectrum:block/brown_plank_fence_gate" - }, - "facing=south,in_wall=false,open=true": { - "uvlock": true, - "model": "spectrum:block/brown_plank_fence_gate_open" - }, - "facing=south,in_wall=true,open=false": { - "uvlock": true, - "model": "spectrum:block/brown_plank_fence_gate_wall" - }, - "facing=south,in_wall=true,open=true": { - "uvlock": true, - "model": "spectrum:block/brown_plank_fence_gate_wall_open" - }, - "facing=west,in_wall=false,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/brown_plank_fence_gate" - }, - "facing=west,in_wall=false,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/brown_plank_fence_gate_open" - }, - "facing=west,in_wall=true,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/brown_plank_fence_gate_wall" - }, - "facing=west,in_wall=true,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/brown_plank_fence_gate_wall_open" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/brown_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/brown_plank_pressure_plate.json deleted file mode 100644 index e95d50a245..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/brown_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/brown_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/brown_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/brown_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/brown_plank_stairs.json deleted file mode 100644 index 8d6fd8323d..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/brown_plank_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/brown_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/brown_plank_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/brown_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/brown_plank_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/brown_plank_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/brown_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/brown_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/brown_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/brown_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "spectrum:block/brown_plank_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/brown_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/brown_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/brown_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/brown_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/brown_plank_stairs", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/brown_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/brown_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/brown_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/brown_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=straight": { - "model": "spectrum:block/brown_plank_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/brown_plank_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/brown_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/brown_plank_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/brown_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/brown_plank_stairs", - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/brown_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/brown_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/brown_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/brown_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "spectrum:block/brown_plank_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/brown_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/brown_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/brown_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/brown_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/brown_plank_stairs", - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/brown_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/brown_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/brown_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/brown_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "spectrum:block/brown_plank_stairs", - "x": 180, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/brown_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/brown_pressure_plate.json new file mode 100644 index 0000000000..91fa23e962 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/brown_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/brown_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/brown_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/brown_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/brown_slab.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/brown_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/brown_slab.json index 24f7053e4e..6c7d18153e 100644 --- a/src/main/resources/assets/spectrum/blockstates/brown_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/brown_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/brown_plank_slab" + "model": "spectrum:block/brown_slab" }, "type=double": { "model": "spectrum:block/brown_planks" }, "type=top": { - "model": "spectrum:block/brown_plank_slab_top" + "model": "spectrum:block/brown_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/cyan_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/brown_stairs.json similarity index 62% rename from src/main/resources/assets/spectrum/blockstates/cyan_plank_stairs.json rename to src/main/resources/assets/spectrum/blockstates/brown_stairs.json index 017076c1a3..d584918ab9 100644 --- a/src/main/resources/assets/spectrum/blockstates/cyan_plank_stairs.json +++ b/src/main/resources/assets/spectrum/blockstates/brown_stairs.json @@ -1,206 +1,206 @@ { "variants": { "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "y": 270, "uvlock": true }, "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/cyan_plank_stairs_inner" + "model": "spectrum:block/brown_stairs_inner" }, "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "y": 270, "uvlock": true }, "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/cyan_plank_stairs_outer" + "model": "spectrum:block/brown_stairs_outer" }, "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/cyan_plank_stairs" + "model": "spectrum:block/brown_stairs" }, "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "x": 180, "uvlock": true }, "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "x": 180, "y": 90, "uvlock": true }, "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "x": 180, "uvlock": true }, "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "x": 180, "y": 90, "uvlock": true }, "facing=east,half=top,shape=straight": { - "model": "spectrum:block/cyan_plank_stairs", + "model": "spectrum:block/brown_stairs", "x": 180, "uvlock": true }, "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "y": 180, "uvlock": true }, "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "y": 270, "uvlock": true }, "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "y": 180, "uvlock": true }, "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "y": 270, "uvlock": true }, "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/cyan_plank_stairs", + "model": "spectrum:block/brown_stairs", "y": 270, "uvlock": true }, "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "x": 180, "y": 270, "uvlock": true }, "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "x": 180, "uvlock": true }, "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "x": 180, "y": 270, "uvlock": true }, "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "x": 180, "uvlock": true }, "facing=north,half=top,shape=straight": { - "model": "spectrum:block/cyan_plank_stairs", + "model": "spectrum:block/brown_stairs", "x": 180, "y": 270, "uvlock": true }, "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/cyan_plank_stairs_inner" + "model": "spectrum:block/brown_stairs_inner" }, "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "y": 90, "uvlock": true }, "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/cyan_plank_stairs_outer" + "model": "spectrum:block/brown_stairs_outer" }, "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "y": 90, "uvlock": true }, "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/cyan_plank_stairs", + "model": "spectrum:block/brown_stairs", "y": 90, "uvlock": true }, "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "x": 180, "y": 90, "uvlock": true }, "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "x": 180, "y": 180, "uvlock": true }, "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "x": 180, "y": 90, "uvlock": true }, "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "x": 180, "y": 180, "uvlock": true }, "facing=south,half=top,shape=straight": { - "model": "spectrum:block/cyan_plank_stairs", + "model": "spectrum:block/brown_stairs", "x": 180, "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "y": 180, "uvlock": true }, "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "y": 180, "uvlock": true }, "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/cyan_plank_stairs", + "model": "spectrum:block/brown_stairs", "y": 180, "uvlock": true }, "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "x": 180, "y": 180, "uvlock": true }, "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/cyan_plank_stairs_inner", + "model": "spectrum:block/brown_stairs_inner", "x": 180, "y": 270, "uvlock": true }, "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "x": 180, "y": 180, "uvlock": true }, "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/cyan_plank_stairs_outer", + "model": "spectrum:block/brown_stairs_outer", "x": 180, "y": 270, "uvlock": true }, "facing=west,half=top,shape=straight": { - "model": "spectrum:block/cyan_plank_stairs", + "model": "spectrum:block/brown_stairs", "x": 180, "y": 180, "uvlock": true diff --git a/src/main/resources/assets/spectrum/blockstates/blue_plank_button.json b/src/main/resources/assets/spectrum/blockstates/cyan_button.json similarity index 60% rename from src/main/resources/assets/spectrum/blockstates/blue_plank_button.json rename to src/main/resources/assets/spectrum/blockstates/cyan_button.json index 06db871801..9afd3a21be 100644 --- a/src/main/resources/assets/spectrum/blockstates/blue_plank_button.json +++ b/src/main/resources/assets/spectrum/blockstates/cyan_button.json @@ -1,115 +1,115 @@ { "variants": { "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/blue_plank_button", + "model": "spectrum:block/cyan_button", "y": 270, "x": 180 }, "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/blue_plank_button_pressed", + "model": "spectrum:block/cyan_button_pressed", "y": 270, "x": 180 }, "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/blue_plank_button", + "model": "spectrum:block/cyan_button", "y": 180, "x": 180 }, "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/blue_plank_button_pressed", + "model": "spectrum:block/cyan_button_pressed", "y": 180, "x": 180 }, "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/blue_plank_button", + "model": "spectrum:block/cyan_button", "x": 180 }, "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/blue_plank_button_pressed", + "model": "spectrum:block/cyan_button_pressed", "x": 180 }, "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/blue_plank_button", + "model": "spectrum:block/cyan_button", "y": 90, "x": 180 }, "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/blue_plank_button_pressed", + "model": "spectrum:block/cyan_button_pressed", "y": 90, "x": 180 }, "face=floor,facing=east,powered=false": { - "model": "spectrum:block/blue_plank_button", + "model": "spectrum:block/cyan_button", "y": 90 }, "face=floor,facing=east,powered=true": { - "model": "spectrum:block/blue_plank_button_pressed", + "model": "spectrum:block/cyan_button_pressed", "y": 90 }, "face=floor,facing=north,powered=false": { - "model": "spectrum:block/blue_plank_button" + "model": "spectrum:block/cyan_button" }, "face=floor,facing=north,powered=true": { - "model": "spectrum:block/blue_plank_button_pressed" + "model": "spectrum:block/cyan_button_pressed" }, "face=floor,facing=south,powered=false": { - "model": "spectrum:block/blue_plank_button", + "model": "spectrum:block/cyan_button", "y": 180 }, "face=floor,facing=south,powered=true": { - "model": "spectrum:block/blue_plank_button_pressed", + "model": "spectrum:block/cyan_button_pressed", "y": 180 }, "face=floor,facing=west,powered=false": { - "model": "spectrum:block/blue_plank_button", + "model": "spectrum:block/cyan_button", "y": 270 }, "face=floor,facing=west,powered=true": { - "model": "spectrum:block/blue_plank_button_pressed", + "model": "spectrum:block/cyan_button_pressed", "y": 270 }, "face=wall,facing=east,powered=false": { - "model": "spectrum:block/blue_plank_button", + "model": "spectrum:block/cyan_button", "y": 90, "x": 90, "uvlock": true }, "face=wall,facing=east,powered=true": { - "model": "spectrum:block/blue_plank_button_pressed", + "model": "spectrum:block/cyan_button_pressed", "y": 90, "x": 90, "uvlock": true }, "face=wall,facing=north,powered=false": { - "model": "spectrum:block/blue_plank_button", + "model": "spectrum:block/cyan_button", "x": 90, "uvlock": true }, "face=wall,facing=north,powered=true": { - "model": "spectrum:block/blue_plank_button_pressed", + "model": "spectrum:block/cyan_button_pressed", "x": 90, "uvlock": true }, "face=wall,facing=south,powered=false": { - "model": "spectrum:block/blue_plank_button", + "model": "spectrum:block/cyan_button", "y": 180, "x": 90, "uvlock": true }, "face=wall,facing=south,powered=true": { - "model": "spectrum:block/blue_plank_button_pressed", + "model": "spectrum:block/cyan_button_pressed", "y": 180, "x": 90, "uvlock": true }, "face=wall,facing=west,powered=false": { - "model": "spectrum:block/blue_plank_button", + "model": "spectrum:block/cyan_button", "y": 270, "x": 90, "uvlock": true }, "face=wall,facing=west,powered=true": { - "model": "spectrum:block/blue_plank_button_pressed", + "model": "spectrum:block/cyan_button_pressed", "y": 270, "x": 90, "uvlock": true diff --git a/src/main/resources/assets/spectrum/blockstates/cyan_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/cyan_fence.json similarity index 66% rename from src/main/resources/assets/spectrum/blockstates/cyan_plank_fence.json rename to src/main/resources/assets/spectrum/blockstates/cyan_fence.json index 98770af9a3..05c80c5fa1 100644 --- a/src/main/resources/assets/spectrum/blockstates/cyan_plank_fence.json +++ b/src/main/resources/assets/spectrum/blockstates/cyan_fence.json @@ -2,7 +2,7 @@ "multipart": [ { "apply": { - "model": "spectrum:block/cyan_plank_fence_post" + "model": "spectrum:block/cyan_fence_post" } }, { @@ -10,7 +10,7 @@ "north": "true" }, "apply": { - "model": "spectrum:block/cyan_plank_fence_side", + "model": "spectrum:block/cyan_fence_side", "uvlock": true } }, @@ -19,7 +19,7 @@ "east": "true" }, "apply": { - "model": "spectrum:block/cyan_plank_fence_side", + "model": "spectrum:block/cyan_fence_side", "y": 90, "uvlock": true } @@ -29,7 +29,7 @@ "south": "true" }, "apply": { - "model": "spectrum:block/cyan_plank_fence_side", + "model": "spectrum:block/cyan_fence_side", "y": 180, "uvlock": true } @@ -39,7 +39,7 @@ "west": "true" }, "apply": { - "model": "spectrum:block/cyan_plank_fence_side", + "model": "spectrum:block/cyan_fence_side", "y": 270, "uvlock": true } diff --git a/src/main/resources/assets/spectrum/blockstates/blue_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/cyan_fence_gate.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/blue_plank_fence_gate.json rename to src/main/resources/assets/spectrum/blockstates/cyan_fence_gate.json index 4ed6d5b04b..eb4d89c936 100644 --- a/src/main/resources/assets/spectrum/blockstates/blue_plank_fence_gate.json +++ b/src/main/resources/assets/spectrum/blockstates/cyan_fence_gate.json @@ -3,78 +3,78 @@ "facing=east,in_wall=false,open=false": { "uvlock": true, "y": 270, - "model": "spectrum:block/blue_plank_fence_gate" + "model": "spectrum:block/cyan_fence_gate" }, "facing=east,in_wall=false,open=true": { "uvlock": true, "y": 270, - "model": "spectrum:block/blue_plank_fence_gate_open" + "model": "spectrum:block/cyan_fence_gate_open" }, "facing=east,in_wall=true,open=false": { "uvlock": true, "y": 270, - "model": "spectrum:block/blue_plank_fence_gate_wall" + "model": "spectrum:block/cyan_fence_gate_wall" }, "facing=east,in_wall=true,open=true": { "uvlock": true, "y": 270, - "model": "spectrum:block/blue_plank_fence_gate_wall_open" + "model": "spectrum:block/cyan_fence_gate_wall_open" }, "facing=north,in_wall=false,open=false": { "uvlock": true, "y": 180, - "model": "spectrum:block/blue_plank_fence_gate" + "model": "spectrum:block/cyan_fence_gate" }, "facing=north,in_wall=false,open=true": { "uvlock": true, "y": 180, - "model": "spectrum:block/blue_plank_fence_gate_open" + "model": "spectrum:block/cyan_fence_gate_open" }, "facing=north,in_wall=true,open=false": { "uvlock": true, "y": 180, - "model": "spectrum:block/blue_plank_fence_gate_wall" + "model": "spectrum:block/cyan_fence_gate_wall" }, "facing=north,in_wall=true,open=true": { "uvlock": true, "y": 180, - "model": "spectrum:block/blue_plank_fence_gate_wall_open" + "model": "spectrum:block/cyan_fence_gate_wall_open" }, "facing=south,in_wall=false,open=false": { "uvlock": true, - "model": "spectrum:block/blue_plank_fence_gate" + "model": "spectrum:block/cyan_fence_gate" }, "facing=south,in_wall=false,open=true": { "uvlock": true, - "model": "spectrum:block/blue_plank_fence_gate_open" + "model": "spectrum:block/cyan_fence_gate_open" }, "facing=south,in_wall=true,open=false": { "uvlock": true, - "model": "spectrum:block/blue_plank_fence_gate_wall" + "model": "spectrum:block/cyan_fence_gate_wall" }, "facing=south,in_wall=true,open=true": { "uvlock": true, - "model": "spectrum:block/blue_plank_fence_gate_wall_open" + "model": "spectrum:block/cyan_fence_gate_wall_open" }, "facing=west,in_wall=false,open=false": { "uvlock": true, "y": 90, - "model": "spectrum:block/blue_plank_fence_gate" + "model": "spectrum:block/cyan_fence_gate" }, "facing=west,in_wall=false,open=true": { "uvlock": true, "y": 90, - "model": "spectrum:block/blue_plank_fence_gate_open" + "model": "spectrum:block/cyan_fence_gate_open" }, "facing=west,in_wall=true,open=false": { "uvlock": true, "y": 90, - "model": "spectrum:block/blue_plank_fence_gate_wall" + "model": "spectrum:block/cyan_fence_gate_wall" }, "facing=west,in_wall=true,open=true": { "uvlock": true, "y": 90, - "model": "spectrum:block/blue_plank_fence_gate_wall_open" + "model": "spectrum:block/cyan_fence_gate_wall_open" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/cyan_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/cyan_plank_pressure_plate.json deleted file mode 100644 index 4f5bd7223e..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/cyan_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/cyan_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/cyan_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/cyan_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/cyan_pressure_plate.json new file mode 100644 index 0000000000..1d14f11613 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/cyan_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/cyan_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/cyan_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/cyan_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/cyan_slab.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/cyan_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/cyan_slab.json index ea9a470320..ca98a3ea78 100644 --- a/src/main/resources/assets/spectrum/blockstates/cyan_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/cyan_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/cyan_plank_slab" + "model": "spectrum:block/cyan_slab" }, "type=double": { "model": "spectrum:block/cyan_planks" }, "type=top": { - "model": "spectrum:block/cyan_plank_slab_top" + "model": "spectrum:block/cyan_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/blue_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/cyan_stairs.json similarity index 62% rename from src/main/resources/assets/spectrum/blockstates/blue_plank_stairs.json rename to src/main/resources/assets/spectrum/blockstates/cyan_stairs.json index 96ac342284..3a31728326 100644 --- a/src/main/resources/assets/spectrum/blockstates/blue_plank_stairs.json +++ b/src/main/resources/assets/spectrum/blockstates/cyan_stairs.json @@ -1,206 +1,206 @@ { "variants": { "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "y": 270, "uvlock": true }, "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/blue_plank_stairs_inner" + "model": "spectrum:block/cyan_stairs_inner" }, "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "y": 270, "uvlock": true }, "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/blue_plank_stairs_outer" + "model": "spectrum:block/cyan_stairs_outer" }, "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/blue_plank_stairs" + "model": "spectrum:block/cyan_stairs" }, "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "x": 180, "uvlock": true }, "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "x": 180, "y": 90, "uvlock": true }, "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "x": 180, "uvlock": true }, "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "x": 180, "y": 90, "uvlock": true }, "facing=east,half=top,shape=straight": { - "model": "spectrum:block/blue_plank_stairs", + "model": "spectrum:block/cyan_stairs", "x": 180, "uvlock": true }, "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "y": 180, "uvlock": true }, "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "y": 270, "uvlock": true }, "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "y": 180, "uvlock": true }, "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "y": 270, "uvlock": true }, "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/blue_plank_stairs", + "model": "spectrum:block/cyan_stairs", "y": 270, "uvlock": true }, "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "x": 180, "y": 270, "uvlock": true }, "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "x": 180, "uvlock": true }, "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "x": 180, "y": 270, "uvlock": true }, "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "x": 180, "uvlock": true }, "facing=north,half=top,shape=straight": { - "model": "spectrum:block/blue_plank_stairs", + "model": "spectrum:block/cyan_stairs", "x": 180, "y": 270, "uvlock": true }, "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/blue_plank_stairs_inner" + "model": "spectrum:block/cyan_stairs_inner" }, "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "y": 90, "uvlock": true }, "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/blue_plank_stairs_outer" + "model": "spectrum:block/cyan_stairs_outer" }, "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "y": 90, "uvlock": true }, "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/blue_plank_stairs", + "model": "spectrum:block/cyan_stairs", "y": 90, "uvlock": true }, "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "x": 180, "y": 90, "uvlock": true }, "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "x": 180, "y": 180, "uvlock": true }, "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "x": 180, "y": 90, "uvlock": true }, "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "x": 180, "y": 180, "uvlock": true }, "facing=south,half=top,shape=straight": { - "model": "spectrum:block/blue_plank_stairs", + "model": "spectrum:block/cyan_stairs", "x": 180, "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "y": 180, "uvlock": true }, "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "y": 180, "uvlock": true }, "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/blue_plank_stairs", + "model": "spectrum:block/cyan_stairs", "y": 180, "uvlock": true }, "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "x": 180, "y": 180, "uvlock": true }, "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/blue_plank_stairs_inner", + "model": "spectrum:block/cyan_stairs_inner", "x": 180, "y": 270, "uvlock": true }, "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "x": 180, "y": 180, "uvlock": true }, "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/blue_plank_stairs_outer", + "model": "spectrum:block/cyan_stairs_outer", "x": 180, "y": 270, "uvlock": true }, "facing=west,half=top,shape=straight": { - "model": "spectrum:block/blue_plank_stairs", + "model": "spectrum:block/cyan_stairs", "x": 180, "y": 180, "uvlock": true diff --git a/src/main/resources/assets/spectrum/blockstates/gray_button.json b/src/main/resources/assets/spectrum/blockstates/gray_button.json new file mode 100644 index 0000000000..78fd64a760 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/gray_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "spectrum:block/gray_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "spectrum:block/gray_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "spectrum:block/gray_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "spectrum:block/gray_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "spectrum:block/gray_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "spectrum:block/gray_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "spectrum:block/gray_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "spectrum:block/gray_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "spectrum:block/gray_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "spectrum:block/gray_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "spectrum:block/gray_button" + }, + "face=floor,facing=north,powered=true": { + "model": "spectrum:block/gray_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "spectrum:block/gray_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "spectrum:block/gray_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "spectrum:block/gray_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "spectrum:block/gray_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "spectrum:block/gray_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "spectrum:block/gray_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "spectrum:block/gray_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "spectrum:block/gray_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "spectrum:block/gray_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "spectrum:block/gray_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "spectrum:block/gray_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "spectrum:block/gray_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/gray_fence.json b/src/main/resources/assets/spectrum/blockstates/gray_fence.json new file mode 100644 index 0000000000..cc99b84b27 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/gray_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "spectrum:block/gray_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "spectrum:block/gray_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "spectrum:block/gray_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "spectrum:block/gray_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "spectrum:block/gray_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/gray_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/gray_fence_gate.json new file mode 100644 index 0000000000..156f6d9067 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/gray_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/gray_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/gray_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/gray_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/gray_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/gray_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/gray_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/gray_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/gray_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "spectrum:block/gray_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "spectrum:block/gray_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "spectrum:block/gray_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "spectrum:block/gray_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/gray_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/gray_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/gray_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/gray_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/gray_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/gray_plank_pressure_plate.json deleted file mode 100644 index 023ff90eaa..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/gray_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/gray_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/gray_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/gray_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/gray_pressure_plate.json new file mode 100644 index 0000000000..9a14718d40 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/gray_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/gray_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/gray_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/gray_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/gray_slab.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/gray_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/gray_slab.json index 2e9cca433b..c601ed1316 100644 --- a/src/main/resources/assets/spectrum/blockstates/gray_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/gray_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/gray_plank_slab" + "model": "spectrum:block/gray_slab" }, "type=double": { "model": "spectrum:block/gray_planks" }, "type=top": { - "model": "spectrum:block/gray_plank_slab_top" + "model": "spectrum:block/gray_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/gray_stairs.json b/src/main/resources/assets/spectrum/blockstates/gray_stairs.json new file mode 100644 index 0000000000..b5f1d6357d --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/gray_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "spectrum:block/gray_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "spectrum:block/gray_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "spectrum:block/gray_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "spectrum:block/gray_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "spectrum:block/gray_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "spectrum:block/gray_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "spectrum:block/gray_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "spectrum:block/gray_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "spectrum:block/gray_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "spectrum:block/gray_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "spectrum:block/gray_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "spectrum:block/gray_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "spectrum:block/gray_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "spectrum:block/gray_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "spectrum:block/gray_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "spectrum:block/gray_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "spectrum:block/gray_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "spectrum:block/gray_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "spectrum:block/gray_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "spectrum:block/gray_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "spectrum:block/gray_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "spectrum:block/gray_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "spectrum:block/gray_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "spectrum:block/gray_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "spectrum:block/gray_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "spectrum:block/gray_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "spectrum:block/gray_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "spectrum:block/gray_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "spectrum:block/gray_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "spectrum:block/gray_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "spectrum:block/gray_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "spectrum:block/gray_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "spectrum:block/gray_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "spectrum:block/gray_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "spectrum:block/gray_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "spectrum:block/gray_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "spectrum:block/gray_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "spectrum:block/gray_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "spectrum:block/gray_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "spectrum:block/gray_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/green_button.json b/src/main/resources/assets/spectrum/blockstates/green_button.json new file mode 100644 index 0000000000..04f1df89a6 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/green_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "spectrum:block/green_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "spectrum:block/green_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "spectrum:block/green_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "spectrum:block/green_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "spectrum:block/green_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "spectrum:block/green_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "spectrum:block/green_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "spectrum:block/green_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "spectrum:block/green_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "spectrum:block/green_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "spectrum:block/green_button" + }, + "face=floor,facing=north,powered=true": { + "model": "spectrum:block/green_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "spectrum:block/green_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "spectrum:block/green_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "spectrum:block/green_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "spectrum:block/green_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "spectrum:block/green_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "spectrum:block/green_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "spectrum:block/green_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "spectrum:block/green_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "spectrum:block/green_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "spectrum:block/green_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "spectrum:block/green_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "spectrum:block/green_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/green_fence.json b/src/main/resources/assets/spectrum/blockstates/green_fence.json new file mode 100644 index 0000000000..f4558059f3 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/green_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "spectrum:block/green_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "spectrum:block/green_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "spectrum:block/green_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "spectrum:block/green_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "spectrum:block/green_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/green_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/green_fence_gate.json new file mode 100644 index 0000000000..4b22a4b9f8 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/green_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/green_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/green_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/green_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/green_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/green_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/green_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/green_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/green_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "spectrum:block/green_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "spectrum:block/green_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "spectrum:block/green_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "spectrum:block/green_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/green_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/green_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/green_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/green_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/green_plank_button.json b/src/main/resources/assets/spectrum/blockstates/green_plank_button.json deleted file mode 100644 index bbf53ea506..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/green_plank_button.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/green_plank_button", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/green_plank_button_pressed", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/green_plank_button", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/green_plank_button_pressed", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/green_plank_button", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/green_plank_button_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/green_plank_button", - "y": 90, - "x": 180 - }, - "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/green_plank_button_pressed", - "y": 90, - "x": 180 - }, - "face=floor,facing=east,powered=false": { - "model": "spectrum:block/green_plank_button", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "spectrum:block/green_plank_button_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "spectrum:block/green_plank_button" - }, - "face=floor,facing=north,powered=true": { - "model": "spectrum:block/green_plank_button_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "spectrum:block/green_plank_button", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "spectrum:block/green_plank_button_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "spectrum:block/green_plank_button", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "spectrum:block/green_plank_button_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "spectrum:block/green_plank_button", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=east,powered=true": { - "model": "spectrum:block/green_plank_button_pressed", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=false": { - "model": "spectrum:block/green_plank_button", - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=true": { - "model": "spectrum:block/green_plank_button_pressed", - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=false": { - "model": "spectrum:block/green_plank_button", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=true": { - "model": "spectrum:block/green_plank_button_pressed", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=false": { - "model": "spectrum:block/green_plank_button", - "y": 270, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=true": { - "model": "spectrum:block/green_plank_button_pressed", - "y": 270, - "x": 90, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/green_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/green_plank_fence.json deleted file mode 100644 index a2fd755932..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/green_plank_fence.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "spectrum:block/green_plank_fence_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "spectrum:block/green_plank_fence_side", - "uvlock": true - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "spectrum:block/green_plank_fence_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "spectrum:block/green_plank_fence_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "spectrum:block/green_plank_fence_side", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/green_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/green_plank_fence_gate.json deleted file mode 100644 index 755debe234..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/green_plank_fence_gate.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "variants": { - "facing=east,in_wall=false,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/green_plank_fence_gate" - }, - "facing=east,in_wall=false,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/green_plank_fence_gate_open" - }, - "facing=east,in_wall=true,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/green_plank_fence_gate_wall" - }, - "facing=east,in_wall=true,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/green_plank_fence_gate_wall_open" - }, - "facing=north,in_wall=false,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/green_plank_fence_gate" - }, - "facing=north,in_wall=false,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/green_plank_fence_gate_open" - }, - "facing=north,in_wall=true,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/green_plank_fence_gate_wall" - }, - "facing=north,in_wall=true,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/green_plank_fence_gate_wall_open" - }, - "facing=south,in_wall=false,open=false": { - "uvlock": true, - "model": "spectrum:block/green_plank_fence_gate" - }, - "facing=south,in_wall=false,open=true": { - "uvlock": true, - "model": "spectrum:block/green_plank_fence_gate_open" - }, - "facing=south,in_wall=true,open=false": { - "uvlock": true, - "model": "spectrum:block/green_plank_fence_gate_wall" - }, - "facing=south,in_wall=true,open=true": { - "uvlock": true, - "model": "spectrum:block/green_plank_fence_gate_wall_open" - }, - "facing=west,in_wall=false,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/green_plank_fence_gate" - }, - "facing=west,in_wall=false,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/green_plank_fence_gate_open" - }, - "facing=west,in_wall=true,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/green_plank_fence_gate_wall" - }, - "facing=west,in_wall=true,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/green_plank_fence_gate_wall_open" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/green_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/green_plank_pressure_plate.json deleted file mode 100644 index 5a80131c74..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/green_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/green_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/green_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/green_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/green_plank_stairs.json deleted file mode 100644 index a1951fc311..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/green_plank_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/green_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/green_plank_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/green_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/green_plank_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/green_plank_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/green_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/green_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/green_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/green_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "spectrum:block/green_plank_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/green_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/green_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/green_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/green_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/green_plank_stairs", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/green_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/green_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/green_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/green_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=straight": { - "model": "spectrum:block/green_plank_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/green_plank_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/green_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/green_plank_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/green_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/green_plank_stairs", - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/green_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/green_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/green_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/green_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "spectrum:block/green_plank_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/green_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/green_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/green_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/green_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/green_plank_stairs", - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/green_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/green_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/green_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/green_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "spectrum:block/green_plank_stairs", - "x": 180, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/green_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/green_pressure_plate.json new file mode 100644 index 0000000000..bc03e42d84 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/green_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/green_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/green_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/green_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/green_slab.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/green_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/green_slab.json index 69079af4aa..02152a5f3b 100644 --- a/src/main/resources/assets/spectrum/blockstates/green_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/green_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/green_plank_slab" + "model": "spectrum:block/green_slab" }, "type=double": { "model": "spectrum:block/green_planks" }, "type=top": { - "model": "spectrum:block/green_plank_slab_top" + "model": "spectrum:block/green_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/green_stairs.json b/src/main/resources/assets/spectrum/blockstates/green_stairs.json new file mode 100644 index 0000000000..8d3ac9e021 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/green_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "spectrum:block/green_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "spectrum:block/green_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "spectrum:block/green_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "spectrum:block/green_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "spectrum:block/green_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "spectrum:block/green_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "spectrum:block/green_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "spectrum:block/green_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "spectrum:block/green_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "spectrum:block/green_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "spectrum:block/green_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "spectrum:block/green_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "spectrum:block/green_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "spectrum:block/green_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "spectrum:block/green_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "spectrum:block/green_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "spectrum:block/green_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "spectrum:block/green_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "spectrum:block/green_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "spectrum:block/green_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "spectrum:block/green_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "spectrum:block/green_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "spectrum:block/green_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "spectrum:block/green_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "spectrum:block/green_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "spectrum:block/green_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "spectrum:block/green_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "spectrum:block/green_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "spectrum:block/green_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "spectrum:block/green_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "spectrum:block/green_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "spectrum:block/green_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "spectrum:block/green_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "spectrum:block/green_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "spectrum:block/green_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "spectrum:block/green_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "spectrum:block/green_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "spectrum:block/green_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "spectrum:block/green_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "spectrum:block/green_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/gray_plank_button.json b/src/main/resources/assets/spectrum/blockstates/light_blue_button.json similarity index 60% rename from src/main/resources/assets/spectrum/blockstates/gray_plank_button.json rename to src/main/resources/assets/spectrum/blockstates/light_blue_button.json index 84843cf41c..55d9797f79 100644 --- a/src/main/resources/assets/spectrum/blockstates/gray_plank_button.json +++ b/src/main/resources/assets/spectrum/blockstates/light_blue_button.json @@ -1,115 +1,115 @@ { "variants": { "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/gray_plank_button", + "model": "spectrum:block/light_blue_button", "y": 270, "x": 180 }, "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/gray_plank_button_pressed", + "model": "spectrum:block/light_blue_button_pressed", "y": 270, "x": 180 }, "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/gray_plank_button", + "model": "spectrum:block/light_blue_button", "y": 180, "x": 180 }, "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/gray_plank_button_pressed", + "model": "spectrum:block/light_blue_button_pressed", "y": 180, "x": 180 }, "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/gray_plank_button", + "model": "spectrum:block/light_blue_button", "x": 180 }, "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/gray_plank_button_pressed", + "model": "spectrum:block/light_blue_button_pressed", "x": 180 }, "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/gray_plank_button", + "model": "spectrum:block/light_blue_button", "y": 90, "x": 180 }, "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/gray_plank_button_pressed", + "model": "spectrum:block/light_blue_button_pressed", "y": 90, "x": 180 }, "face=floor,facing=east,powered=false": { - "model": "spectrum:block/gray_plank_button", + "model": "spectrum:block/light_blue_button", "y": 90 }, "face=floor,facing=east,powered=true": { - "model": "spectrum:block/gray_plank_button_pressed", + "model": "spectrum:block/light_blue_button_pressed", "y": 90 }, "face=floor,facing=north,powered=false": { - "model": "spectrum:block/gray_plank_button" + "model": "spectrum:block/light_blue_button" }, "face=floor,facing=north,powered=true": { - "model": "spectrum:block/gray_plank_button_pressed" + "model": "spectrum:block/light_blue_button_pressed" }, "face=floor,facing=south,powered=false": { - "model": "spectrum:block/gray_plank_button", + "model": "spectrum:block/light_blue_button", "y": 180 }, "face=floor,facing=south,powered=true": { - "model": "spectrum:block/gray_plank_button_pressed", + "model": "spectrum:block/light_blue_button_pressed", "y": 180 }, "face=floor,facing=west,powered=false": { - "model": "spectrum:block/gray_plank_button", + "model": "spectrum:block/light_blue_button", "y": 270 }, "face=floor,facing=west,powered=true": { - "model": "spectrum:block/gray_plank_button_pressed", + "model": "spectrum:block/light_blue_button_pressed", "y": 270 }, "face=wall,facing=east,powered=false": { - "model": "spectrum:block/gray_plank_button", + "model": "spectrum:block/light_blue_button", "y": 90, "x": 90, "uvlock": true }, "face=wall,facing=east,powered=true": { - "model": "spectrum:block/gray_plank_button_pressed", + "model": "spectrum:block/light_blue_button_pressed", "y": 90, "x": 90, "uvlock": true }, "face=wall,facing=north,powered=false": { - "model": "spectrum:block/gray_plank_button", + "model": "spectrum:block/light_blue_button", "x": 90, "uvlock": true }, "face=wall,facing=north,powered=true": { - "model": "spectrum:block/gray_plank_button_pressed", + "model": "spectrum:block/light_blue_button_pressed", "x": 90, "uvlock": true }, "face=wall,facing=south,powered=false": { - "model": "spectrum:block/gray_plank_button", + "model": "spectrum:block/light_blue_button", "y": 180, "x": 90, "uvlock": true }, "face=wall,facing=south,powered=true": { - "model": "spectrum:block/gray_plank_button_pressed", + "model": "spectrum:block/light_blue_button_pressed", "y": 180, "x": 90, "uvlock": true }, "face=wall,facing=west,powered=false": { - "model": "spectrum:block/gray_plank_button", + "model": "spectrum:block/light_blue_button", "y": 270, "x": 90, "uvlock": true }, "face=wall,facing=west,powered=true": { - "model": "spectrum:block/gray_plank_button_pressed", + "model": "spectrum:block/light_blue_button_pressed", "y": 270, "x": 90, "uvlock": true diff --git a/src/main/resources/assets/spectrum/blockstates/blue_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/light_blue_fence.json similarity index 66% rename from src/main/resources/assets/spectrum/blockstates/blue_plank_fence.json rename to src/main/resources/assets/spectrum/blockstates/light_blue_fence.json index 8539aebcc6..00d095e92a 100644 --- a/src/main/resources/assets/spectrum/blockstates/blue_plank_fence.json +++ b/src/main/resources/assets/spectrum/blockstates/light_blue_fence.json @@ -2,7 +2,7 @@ "multipart": [ { "apply": { - "model": "spectrum:block/blue_plank_fence_post" + "model": "spectrum:block/light_blue_fence_post" } }, { @@ -10,7 +10,7 @@ "north": "true" }, "apply": { - "model": "spectrum:block/blue_plank_fence_side", + "model": "spectrum:block/light_blue_fence_side", "uvlock": true } }, @@ -19,7 +19,7 @@ "east": "true" }, "apply": { - "model": "spectrum:block/blue_plank_fence_side", + "model": "spectrum:block/light_blue_fence_side", "y": 90, "uvlock": true } @@ -29,7 +29,7 @@ "south": "true" }, "apply": { - "model": "spectrum:block/blue_plank_fence_side", + "model": "spectrum:block/light_blue_fence_side", "y": 180, "uvlock": true } @@ -39,7 +39,7 @@ "west": "true" }, "apply": { - "model": "spectrum:block/blue_plank_fence_side", + "model": "spectrum:block/light_blue_fence_side", "y": 270, "uvlock": true } diff --git a/src/main/resources/assets/spectrum/blockstates/gray_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/light_blue_fence_gate.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/gray_plank_fence_gate.json rename to src/main/resources/assets/spectrum/blockstates/light_blue_fence_gate.json index 664b872acf..e194022134 100644 --- a/src/main/resources/assets/spectrum/blockstates/gray_plank_fence_gate.json +++ b/src/main/resources/assets/spectrum/blockstates/light_blue_fence_gate.json @@ -3,78 +3,78 @@ "facing=east,in_wall=false,open=false": { "uvlock": true, "y": 270, - "model": "spectrum:block/gray_plank_fence_gate" + "model": "spectrum:block/light_blue_fence_gate" }, "facing=east,in_wall=false,open=true": { "uvlock": true, "y": 270, - "model": "spectrum:block/gray_plank_fence_gate_open" + "model": "spectrum:block/light_blue_fence_gate_open" }, "facing=east,in_wall=true,open=false": { "uvlock": true, "y": 270, - "model": "spectrum:block/gray_plank_fence_gate_wall" + "model": "spectrum:block/light_blue_fence_gate_wall" }, "facing=east,in_wall=true,open=true": { "uvlock": true, "y": 270, - "model": "spectrum:block/gray_plank_fence_gate_wall_open" + "model": "spectrum:block/light_blue_fence_gate_wall_open" }, "facing=north,in_wall=false,open=false": { "uvlock": true, "y": 180, - "model": "spectrum:block/gray_plank_fence_gate" + "model": "spectrum:block/light_blue_fence_gate" }, "facing=north,in_wall=false,open=true": { "uvlock": true, "y": 180, - "model": "spectrum:block/gray_plank_fence_gate_open" + "model": "spectrum:block/light_blue_fence_gate_open" }, "facing=north,in_wall=true,open=false": { "uvlock": true, "y": 180, - "model": "spectrum:block/gray_plank_fence_gate_wall" + "model": "spectrum:block/light_blue_fence_gate_wall" }, "facing=north,in_wall=true,open=true": { "uvlock": true, "y": 180, - "model": "spectrum:block/gray_plank_fence_gate_wall_open" + "model": "spectrum:block/light_blue_fence_gate_wall_open" }, "facing=south,in_wall=false,open=false": { "uvlock": true, - "model": "spectrum:block/gray_plank_fence_gate" + "model": "spectrum:block/light_blue_fence_gate" }, "facing=south,in_wall=false,open=true": { "uvlock": true, - "model": "spectrum:block/gray_plank_fence_gate_open" + "model": "spectrum:block/light_blue_fence_gate_open" }, "facing=south,in_wall=true,open=false": { "uvlock": true, - "model": "spectrum:block/gray_plank_fence_gate_wall" + "model": "spectrum:block/light_blue_fence_gate_wall" }, "facing=south,in_wall=true,open=true": { "uvlock": true, - "model": "spectrum:block/gray_plank_fence_gate_wall_open" + "model": "spectrum:block/light_blue_fence_gate_wall_open" }, "facing=west,in_wall=false,open=false": { "uvlock": true, "y": 90, - "model": "spectrum:block/gray_plank_fence_gate" + "model": "spectrum:block/light_blue_fence_gate" }, "facing=west,in_wall=false,open=true": { "uvlock": true, "y": 90, - "model": "spectrum:block/gray_plank_fence_gate_open" + "model": "spectrum:block/light_blue_fence_gate_open" }, "facing=west,in_wall=true,open=false": { "uvlock": true, "y": 90, - "model": "spectrum:block/gray_plank_fence_gate_wall" + "model": "spectrum:block/light_blue_fence_gate_wall" }, "facing=west,in_wall=true,open=true": { "uvlock": true, "y": 90, - "model": "spectrum:block/gray_plank_fence_gate_wall_open" + "model": "spectrum:block/light_blue_fence_gate_wall_open" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_blue_plank_button.json b/src/main/resources/assets/spectrum/blockstates/light_blue_plank_button.json deleted file mode 100644 index 70b4e91d85..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/light_blue_plank_button.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/light_blue_plank_button", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/light_blue_plank_button_pressed", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/light_blue_plank_button", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/light_blue_plank_button_pressed", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/light_blue_plank_button", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/light_blue_plank_button_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/light_blue_plank_button", - "y": 90, - "x": 180 - }, - "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/light_blue_plank_button_pressed", - "y": 90, - "x": 180 - }, - "face=floor,facing=east,powered=false": { - "model": "spectrum:block/light_blue_plank_button", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "spectrum:block/light_blue_plank_button_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "spectrum:block/light_blue_plank_button" - }, - "face=floor,facing=north,powered=true": { - "model": "spectrum:block/light_blue_plank_button_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "spectrum:block/light_blue_plank_button", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "spectrum:block/light_blue_plank_button_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "spectrum:block/light_blue_plank_button", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "spectrum:block/light_blue_plank_button_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "spectrum:block/light_blue_plank_button", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=east,powered=true": { - "model": "spectrum:block/light_blue_plank_button_pressed", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=false": { - "model": "spectrum:block/light_blue_plank_button", - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=true": { - "model": "spectrum:block/light_blue_plank_button_pressed", - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=false": { - "model": "spectrum:block/light_blue_plank_button", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=true": { - "model": "spectrum:block/light_blue_plank_button_pressed", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=false": { - "model": "spectrum:block/light_blue_plank_button", - "y": 270, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=true": { - "model": "spectrum:block/light_blue_plank_button_pressed", - "y": 270, - "x": 90, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_blue_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/light_blue_plank_fence.json deleted file mode 100644 index fb79278bce..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/light_blue_plank_fence.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "spectrum:block/light_blue_plank_fence_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "spectrum:block/light_blue_plank_fence_side", - "uvlock": true - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "spectrum:block/light_blue_plank_fence_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "spectrum:block/light_blue_plank_fence_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "spectrum:block/light_blue_plank_fence_side", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_blue_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/light_blue_plank_fence_gate.json deleted file mode 100644 index 88e8b1df4a..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/light_blue_plank_fence_gate.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "variants": { - "facing=east,in_wall=false,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/light_blue_plank_fence_gate" - }, - "facing=east,in_wall=false,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/light_blue_plank_fence_gate_open" - }, - "facing=east,in_wall=true,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/light_blue_plank_fence_gate_wall" - }, - "facing=east,in_wall=true,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/light_blue_plank_fence_gate_wall_open" - }, - "facing=north,in_wall=false,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/light_blue_plank_fence_gate" - }, - "facing=north,in_wall=false,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/light_blue_plank_fence_gate_open" - }, - "facing=north,in_wall=true,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/light_blue_plank_fence_gate_wall" - }, - "facing=north,in_wall=true,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/light_blue_plank_fence_gate_wall_open" - }, - "facing=south,in_wall=false,open=false": { - "uvlock": true, - "model": "spectrum:block/light_blue_plank_fence_gate" - }, - "facing=south,in_wall=false,open=true": { - "uvlock": true, - "model": "spectrum:block/light_blue_plank_fence_gate_open" - }, - "facing=south,in_wall=true,open=false": { - "uvlock": true, - "model": "spectrum:block/light_blue_plank_fence_gate_wall" - }, - "facing=south,in_wall=true,open=true": { - "uvlock": true, - "model": "spectrum:block/light_blue_plank_fence_gate_wall_open" - }, - "facing=west,in_wall=false,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/light_blue_plank_fence_gate" - }, - "facing=west,in_wall=false,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/light_blue_plank_fence_gate_open" - }, - "facing=west,in_wall=true,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/light_blue_plank_fence_gate_wall" - }, - "facing=west,in_wall=true,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/light_blue_plank_fence_gate_wall_open" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_blue_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/light_blue_plank_pressure_plate.json deleted file mode 100644 index e4434227b6..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/light_blue_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/light_blue_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/light_blue_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_blue_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/light_blue_plank_stairs.json deleted file mode 100644 index 734e2e8a02..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/light_blue_plank_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/light_blue_plank_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/light_blue_plank_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/light_blue_plank_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "spectrum:block/light_blue_plank_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/light_blue_plank_stairs", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=straight": { - "model": "spectrum:block/light_blue_plank_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/light_blue_plank_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/light_blue_plank_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/light_blue_plank_stairs", - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "spectrum:block/light_blue_plank_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/light_blue_plank_stairs", - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/light_blue_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/light_blue_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "spectrum:block/light_blue_plank_stairs", - "x": 180, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_blue_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/light_blue_pressure_plate.json new file mode 100644 index 0000000000..f6a89404a8 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/light_blue_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/light_blue_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/light_blue_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_blue_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/light_blue_slab.json similarity index 57% rename from src/main/resources/assets/spectrum/blockstates/light_blue_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/light_blue_slab.json index 8d6d394fd1..b550ac6740 100644 --- a/src/main/resources/assets/spectrum/blockstates/light_blue_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/light_blue_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/light_blue_plank_slab" + "model": "spectrum:block/light_blue_slab" }, "type=double": { "model": "spectrum:block/light_blue_planks" }, "type=top": { - "model": "spectrum:block/light_blue_plank_slab_top" + "model": "spectrum:block/light_blue_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/gray_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/light_blue_stairs.json similarity index 62% rename from src/main/resources/assets/spectrum/blockstates/gray_plank_stairs.json rename to src/main/resources/assets/spectrum/blockstates/light_blue_stairs.json index ab349bb5b3..25404d0593 100644 --- a/src/main/resources/assets/spectrum/blockstates/gray_plank_stairs.json +++ b/src/main/resources/assets/spectrum/blockstates/light_blue_stairs.json @@ -1,206 +1,206 @@ { "variants": { "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "y": 270, "uvlock": true }, "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/gray_plank_stairs_inner" + "model": "spectrum:block/light_blue_stairs_inner" }, "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "y": 270, "uvlock": true }, "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/gray_plank_stairs_outer" + "model": "spectrum:block/light_blue_stairs_outer" }, "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/gray_plank_stairs" + "model": "spectrum:block/light_blue_stairs" }, "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "x": 180, "uvlock": true }, "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "x": 180, "y": 90, "uvlock": true }, "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "x": 180, "uvlock": true }, "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "x": 180, "y": 90, "uvlock": true }, "facing=east,half=top,shape=straight": { - "model": "spectrum:block/gray_plank_stairs", + "model": "spectrum:block/light_blue_stairs", "x": 180, "uvlock": true }, "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "y": 180, "uvlock": true }, "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "y": 270, "uvlock": true }, "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "y": 180, "uvlock": true }, "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "y": 270, "uvlock": true }, "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/gray_plank_stairs", + "model": "spectrum:block/light_blue_stairs", "y": 270, "uvlock": true }, "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "x": 180, "y": 270, "uvlock": true }, "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "x": 180, "uvlock": true }, "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "x": 180, "y": 270, "uvlock": true }, "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "x": 180, "uvlock": true }, "facing=north,half=top,shape=straight": { - "model": "spectrum:block/gray_plank_stairs", + "model": "spectrum:block/light_blue_stairs", "x": 180, "y": 270, "uvlock": true }, "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/gray_plank_stairs_inner" + "model": "spectrum:block/light_blue_stairs_inner" }, "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "y": 90, "uvlock": true }, "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/gray_plank_stairs_outer" + "model": "spectrum:block/light_blue_stairs_outer" }, "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "y": 90, "uvlock": true }, "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/gray_plank_stairs", + "model": "spectrum:block/light_blue_stairs", "y": 90, "uvlock": true }, "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "x": 180, "y": 90, "uvlock": true }, "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "x": 180, "y": 180, "uvlock": true }, "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "x": 180, "y": 90, "uvlock": true }, "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "x": 180, "y": 180, "uvlock": true }, "facing=south,half=top,shape=straight": { - "model": "spectrum:block/gray_plank_stairs", + "model": "spectrum:block/light_blue_stairs", "x": 180, "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "y": 180, "uvlock": true }, "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "y": 90, "uvlock": true }, "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "y": 180, "uvlock": true }, "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/gray_plank_stairs", + "model": "spectrum:block/light_blue_stairs", "y": 180, "uvlock": true }, "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "x": 180, "y": 180, "uvlock": true }, "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/gray_plank_stairs_inner", + "model": "spectrum:block/light_blue_stairs_inner", "x": 180, "y": 270, "uvlock": true }, "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "x": 180, "y": 180, "uvlock": true }, "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/gray_plank_stairs_outer", + "model": "spectrum:block/light_blue_stairs_outer", "x": 180, "y": 270, "uvlock": true }, "facing=west,half=top,shape=straight": { - "model": "spectrum:block/gray_plank_stairs", + "model": "spectrum:block/light_blue_stairs", "x": 180, "y": 180, "uvlock": true diff --git a/src/main/resources/assets/spectrum/blockstates/light_gray_button.json b/src/main/resources/assets/spectrum/blockstates/light_gray_button.json new file mode 100644 index 0000000000..2da1aa8ced --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/light_gray_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "spectrum:block/light_gray_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "spectrum:block/light_gray_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "spectrum:block/light_gray_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "spectrum:block/light_gray_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "spectrum:block/light_gray_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "spectrum:block/light_gray_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "spectrum:block/light_gray_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "spectrum:block/light_gray_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "spectrum:block/light_gray_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "spectrum:block/light_gray_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "spectrum:block/light_gray_button" + }, + "face=floor,facing=north,powered=true": { + "model": "spectrum:block/light_gray_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "spectrum:block/light_gray_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "spectrum:block/light_gray_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "spectrum:block/light_gray_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "spectrum:block/light_gray_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "spectrum:block/light_gray_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "spectrum:block/light_gray_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "spectrum:block/light_gray_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "spectrum:block/light_gray_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "spectrum:block/light_gray_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "spectrum:block/light_gray_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "spectrum:block/light_gray_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "spectrum:block/light_gray_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_gray_fence.json b/src/main/resources/assets/spectrum/blockstates/light_gray_fence.json new file mode 100644 index 0000000000..4c47757546 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/light_gray_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "spectrum:block/light_gray_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "spectrum:block/light_gray_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "spectrum:block/light_gray_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "spectrum:block/light_gray_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "spectrum:block/light_gray_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_gray_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/light_gray_fence_gate.json new file mode 100644 index 0000000000..9d13bf6024 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/light_gray_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/light_gray_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/light_gray_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/light_gray_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/light_gray_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/light_gray_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/light_gray_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/light_gray_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/light_gray_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "spectrum:block/light_gray_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "spectrum:block/light_gray_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "spectrum:block/light_gray_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "spectrum:block/light_gray_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/light_gray_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/light_gray_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/light_gray_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/light_gray_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_gray_plank_button.json b/src/main/resources/assets/spectrum/blockstates/light_gray_plank_button.json deleted file mode 100644 index 5e3705c3d3..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/light_gray_plank_button.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/light_gray_plank_button", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/light_gray_plank_button_pressed", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/light_gray_plank_button", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/light_gray_plank_button_pressed", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/light_gray_plank_button", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/light_gray_plank_button_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/light_gray_plank_button", - "y": 90, - "x": 180 - }, - "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/light_gray_plank_button_pressed", - "y": 90, - "x": 180 - }, - "face=floor,facing=east,powered=false": { - "model": "spectrum:block/light_gray_plank_button", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "spectrum:block/light_gray_plank_button_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "spectrum:block/light_gray_plank_button" - }, - "face=floor,facing=north,powered=true": { - "model": "spectrum:block/light_gray_plank_button_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "spectrum:block/light_gray_plank_button", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "spectrum:block/light_gray_plank_button_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "spectrum:block/light_gray_plank_button", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "spectrum:block/light_gray_plank_button_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "spectrum:block/light_gray_plank_button", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=east,powered=true": { - "model": "spectrum:block/light_gray_plank_button_pressed", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=false": { - "model": "spectrum:block/light_gray_plank_button", - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=true": { - "model": "spectrum:block/light_gray_plank_button_pressed", - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=false": { - "model": "spectrum:block/light_gray_plank_button", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=true": { - "model": "spectrum:block/light_gray_plank_button_pressed", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=false": { - "model": "spectrum:block/light_gray_plank_button", - "y": 270, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=true": { - "model": "spectrum:block/light_gray_plank_button_pressed", - "y": 270, - "x": 90, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_gray_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/light_gray_plank_fence.json deleted file mode 100644 index 86ca4c052a..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/light_gray_plank_fence.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "spectrum:block/light_gray_plank_fence_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "spectrum:block/light_gray_plank_fence_side", - "uvlock": true - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "spectrum:block/light_gray_plank_fence_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "spectrum:block/light_gray_plank_fence_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "spectrum:block/light_gray_plank_fence_side", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_gray_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/light_gray_plank_fence_gate.json deleted file mode 100644 index e3454871b2..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/light_gray_plank_fence_gate.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "variants": { - "facing=east,in_wall=false,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/light_gray_plank_fence_gate" - }, - "facing=east,in_wall=false,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/light_gray_plank_fence_gate_open" - }, - "facing=east,in_wall=true,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/light_gray_plank_fence_gate_wall" - }, - "facing=east,in_wall=true,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/light_gray_plank_fence_gate_wall_open" - }, - "facing=north,in_wall=false,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/light_gray_plank_fence_gate" - }, - "facing=north,in_wall=false,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/light_gray_plank_fence_gate_open" - }, - "facing=north,in_wall=true,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/light_gray_plank_fence_gate_wall" - }, - "facing=north,in_wall=true,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/light_gray_plank_fence_gate_wall_open" - }, - "facing=south,in_wall=false,open=false": { - "uvlock": true, - "model": "spectrum:block/light_gray_plank_fence_gate" - }, - "facing=south,in_wall=false,open=true": { - "uvlock": true, - "model": "spectrum:block/light_gray_plank_fence_gate_open" - }, - "facing=south,in_wall=true,open=false": { - "uvlock": true, - "model": "spectrum:block/light_gray_plank_fence_gate_wall" - }, - "facing=south,in_wall=true,open=true": { - "uvlock": true, - "model": "spectrum:block/light_gray_plank_fence_gate_wall_open" - }, - "facing=west,in_wall=false,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/light_gray_plank_fence_gate" - }, - "facing=west,in_wall=false,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/light_gray_plank_fence_gate_open" - }, - "facing=west,in_wall=true,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/light_gray_plank_fence_gate_wall" - }, - "facing=west,in_wall=true,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/light_gray_plank_fence_gate_wall_open" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_gray_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/light_gray_plank_pressure_plate.json deleted file mode 100644 index be93ed17a2..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/light_gray_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/light_gray_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/light_gray_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_gray_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/light_gray_plank_stairs.json deleted file mode 100644 index bb196e0307..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/light_gray_plank_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/light_gray_plank_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/light_gray_plank_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/light_gray_plank_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "spectrum:block/light_gray_plank_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/light_gray_plank_stairs", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=straight": { - "model": "spectrum:block/light_gray_plank_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/light_gray_plank_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/light_gray_plank_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/light_gray_plank_stairs", - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "spectrum:block/light_gray_plank_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/light_gray_plank_stairs", - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/light_gray_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/light_gray_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "spectrum:block/light_gray_plank_stairs", - "x": 180, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_gray_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/light_gray_pressure_plate.json new file mode 100644 index 0000000000..c5f05a34f4 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/light_gray_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/light_gray_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/light_gray_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_gray_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/light_gray_slab.json similarity index 57% rename from src/main/resources/assets/spectrum/blockstates/light_gray_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/light_gray_slab.json index 647b758d55..afbdfbab26 100644 --- a/src/main/resources/assets/spectrum/blockstates/light_gray_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/light_gray_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/light_gray_plank_slab" + "model": "spectrum:block/light_gray_slab" }, "type=double": { "model": "spectrum:block/light_gray_planks" }, "type=top": { - "model": "spectrum:block/light_gray_plank_slab_top" + "model": "spectrum:block/light_gray_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/light_gray_stairs.json b/src/main/resources/assets/spectrum/blockstates/light_gray_stairs.json new file mode 100644 index 0000000000..1c0d8359fd --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/light_gray_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "spectrum:block/light_gray_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "spectrum:block/light_gray_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "spectrum:block/light_gray_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "spectrum:block/light_gray_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "spectrum:block/light_gray_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "spectrum:block/light_gray_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "spectrum:block/light_gray_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "spectrum:block/light_gray_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "spectrum:block/light_gray_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "spectrum:block/light_gray_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "spectrum:block/light_gray_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "spectrum:block/light_gray_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "spectrum:block/light_gray_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "spectrum:block/light_gray_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "spectrum:block/light_gray_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "spectrum:block/light_gray_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "spectrum:block/light_gray_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "spectrum:block/light_gray_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "spectrum:block/light_gray_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "spectrum:block/light_gray_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "spectrum:block/light_gray_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "spectrum:block/light_gray_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "spectrum:block/light_gray_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "spectrum:block/light_gray_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "spectrum:block/light_gray_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "spectrum:block/light_gray_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "spectrum:block/light_gray_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "spectrum:block/light_gray_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "spectrum:block/light_gray_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "spectrum:block/light_gray_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "spectrum:block/light_gray_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "spectrum:block/light_gray_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "spectrum:block/light_gray_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "spectrum:block/light_gray_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "spectrum:block/light_gray_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "spectrum:block/light_gray_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "spectrum:block/light_gray_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "spectrum:block/light_gray_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "spectrum:block/light_gray_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "spectrum:block/light_gray_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/lime_button.json b/src/main/resources/assets/spectrum/blockstates/lime_button.json new file mode 100644 index 0000000000..6c4f9fceed --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/lime_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "spectrum:block/lime_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "spectrum:block/lime_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "spectrum:block/lime_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "spectrum:block/lime_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "spectrum:block/lime_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "spectrum:block/lime_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "spectrum:block/lime_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "spectrum:block/lime_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "spectrum:block/lime_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "spectrum:block/lime_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "spectrum:block/lime_button" + }, + "face=floor,facing=north,powered=true": { + "model": "spectrum:block/lime_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "spectrum:block/lime_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "spectrum:block/lime_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "spectrum:block/lime_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "spectrum:block/lime_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "spectrum:block/lime_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "spectrum:block/lime_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "spectrum:block/lime_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "spectrum:block/lime_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "spectrum:block/lime_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "spectrum:block/lime_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "spectrum:block/lime_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "spectrum:block/lime_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/lime_fence.json b/src/main/resources/assets/spectrum/blockstates/lime_fence.json new file mode 100644 index 0000000000..d11cfb1932 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/lime_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "spectrum:block/lime_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "spectrum:block/lime_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "spectrum:block/lime_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "spectrum:block/lime_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "spectrum:block/lime_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/lime_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/lime_fence_gate.json new file mode 100644 index 0000000000..220bea058a --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/lime_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/lime_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/lime_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/lime_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/lime_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/lime_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/lime_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/lime_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/lime_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "spectrum:block/lime_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "spectrum:block/lime_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "spectrum:block/lime_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "spectrum:block/lime_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/lime_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/lime_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/lime_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/lime_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/lime_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/lime_plank_pressure_plate.json deleted file mode 100644 index 4a786566e0..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/lime_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/lime_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/lime_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/lime_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/lime_pressure_plate.json new file mode 100644 index 0000000000..72bfd4438b --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/lime_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/lime_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/lime_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/lime_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/lime_slab.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/lime_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/lime_slab.json index 30a3462b11..4739a7a3e4 100644 --- a/src/main/resources/assets/spectrum/blockstates/lime_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/lime_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/lime_plank_slab" + "model": "spectrum:block/lime_slab" }, "type=double": { "model": "spectrum:block/lime_planks" }, "type=top": { - "model": "spectrum:block/lime_plank_slab_top" + "model": "spectrum:block/lime_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/lime_stairs.json b/src/main/resources/assets/spectrum/blockstates/lime_stairs.json new file mode 100644 index 0000000000..a4e59d5edb --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/lime_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "spectrum:block/lime_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "spectrum:block/lime_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "spectrum:block/lime_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "spectrum:block/lime_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "spectrum:block/lime_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "spectrum:block/lime_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "spectrum:block/lime_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "spectrum:block/lime_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "spectrum:block/lime_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "spectrum:block/lime_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "spectrum:block/lime_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "spectrum:block/lime_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "spectrum:block/lime_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "spectrum:block/lime_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "spectrum:block/lime_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "spectrum:block/lime_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "spectrum:block/lime_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "spectrum:block/lime_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "spectrum:block/lime_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "spectrum:block/lime_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "spectrum:block/lime_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "spectrum:block/lime_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "spectrum:block/lime_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "spectrum:block/lime_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "spectrum:block/lime_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "spectrum:block/lime_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "spectrum:block/lime_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "spectrum:block/lime_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "spectrum:block/lime_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "spectrum:block/lime_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "spectrum:block/lime_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "spectrum:block/lime_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "spectrum:block/lime_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "spectrum:block/lime_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "spectrum:block/lime_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "spectrum:block/lime_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "spectrum:block/lime_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "spectrum:block/lime_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "spectrum:block/lime_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "spectrum:block/lime_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/magenta_button.json b/src/main/resources/assets/spectrum/blockstates/magenta_button.json new file mode 100644 index 0000000000..a755a0199a --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/magenta_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "spectrum:block/magenta_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "spectrum:block/magenta_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "spectrum:block/magenta_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "spectrum:block/magenta_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "spectrum:block/magenta_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "spectrum:block/magenta_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "spectrum:block/magenta_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "spectrum:block/magenta_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "spectrum:block/magenta_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "spectrum:block/magenta_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "spectrum:block/magenta_button" + }, + "face=floor,facing=north,powered=true": { + "model": "spectrum:block/magenta_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "spectrum:block/magenta_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "spectrum:block/magenta_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "spectrum:block/magenta_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "spectrum:block/magenta_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "spectrum:block/magenta_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "spectrum:block/magenta_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "spectrum:block/magenta_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "spectrum:block/magenta_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "spectrum:block/magenta_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "spectrum:block/magenta_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "spectrum:block/magenta_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "spectrum:block/magenta_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/magenta_fence.json b/src/main/resources/assets/spectrum/blockstates/magenta_fence.json new file mode 100644 index 0000000000..62d8725d4f --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/magenta_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "spectrum:block/magenta_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "spectrum:block/magenta_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "spectrum:block/magenta_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "spectrum:block/magenta_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "spectrum:block/magenta_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/magenta_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/magenta_fence_gate.json new file mode 100644 index 0000000000..25beda59a2 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/magenta_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/magenta_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/magenta_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/magenta_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/magenta_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/magenta_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/magenta_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/magenta_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/magenta_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "spectrum:block/magenta_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "spectrum:block/magenta_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "spectrum:block/magenta_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "spectrum:block/magenta_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/magenta_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/magenta_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/magenta_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/magenta_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/magenta_plank_button.json b/src/main/resources/assets/spectrum/blockstates/magenta_plank_button.json deleted file mode 100644 index c312c41891..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/magenta_plank_button.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/magenta_plank_button", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/magenta_plank_button_pressed", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/magenta_plank_button", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/magenta_plank_button_pressed", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/magenta_plank_button", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/magenta_plank_button_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/magenta_plank_button", - "y": 90, - "x": 180 - }, - "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/magenta_plank_button_pressed", - "y": 90, - "x": 180 - }, - "face=floor,facing=east,powered=false": { - "model": "spectrum:block/magenta_plank_button", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "spectrum:block/magenta_plank_button_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "spectrum:block/magenta_plank_button" - }, - "face=floor,facing=north,powered=true": { - "model": "spectrum:block/magenta_plank_button_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "spectrum:block/magenta_plank_button", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "spectrum:block/magenta_plank_button_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "spectrum:block/magenta_plank_button", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "spectrum:block/magenta_plank_button_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "spectrum:block/magenta_plank_button", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=east,powered=true": { - "model": "spectrum:block/magenta_plank_button_pressed", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=false": { - "model": "spectrum:block/magenta_plank_button", - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=true": { - "model": "spectrum:block/magenta_plank_button_pressed", - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=false": { - "model": "spectrum:block/magenta_plank_button", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=true": { - "model": "spectrum:block/magenta_plank_button_pressed", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=false": { - "model": "spectrum:block/magenta_plank_button", - "y": 270, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=true": { - "model": "spectrum:block/magenta_plank_button_pressed", - "y": 270, - "x": 90, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/magenta_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/magenta_plank_fence.json deleted file mode 100644 index 7870a6dd28..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/magenta_plank_fence.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "spectrum:block/magenta_plank_fence_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "spectrum:block/magenta_plank_fence_side", - "uvlock": true - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "spectrum:block/magenta_plank_fence_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "spectrum:block/magenta_plank_fence_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "spectrum:block/magenta_plank_fence_side", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/magenta_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/magenta_plank_fence_gate.json deleted file mode 100644 index b4cd2c8b22..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/magenta_plank_fence_gate.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "variants": { - "facing=east,in_wall=false,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/magenta_plank_fence_gate" - }, - "facing=east,in_wall=false,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/magenta_plank_fence_gate_open" - }, - "facing=east,in_wall=true,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/magenta_plank_fence_gate_wall" - }, - "facing=east,in_wall=true,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/magenta_plank_fence_gate_wall_open" - }, - "facing=north,in_wall=false,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/magenta_plank_fence_gate" - }, - "facing=north,in_wall=false,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/magenta_plank_fence_gate_open" - }, - "facing=north,in_wall=true,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/magenta_plank_fence_gate_wall" - }, - "facing=north,in_wall=true,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/magenta_plank_fence_gate_wall_open" - }, - "facing=south,in_wall=false,open=false": { - "uvlock": true, - "model": "spectrum:block/magenta_plank_fence_gate" - }, - "facing=south,in_wall=false,open=true": { - "uvlock": true, - "model": "spectrum:block/magenta_plank_fence_gate_open" - }, - "facing=south,in_wall=true,open=false": { - "uvlock": true, - "model": "spectrum:block/magenta_plank_fence_gate_wall" - }, - "facing=south,in_wall=true,open=true": { - "uvlock": true, - "model": "spectrum:block/magenta_plank_fence_gate_wall_open" - }, - "facing=west,in_wall=false,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/magenta_plank_fence_gate" - }, - "facing=west,in_wall=false,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/magenta_plank_fence_gate_open" - }, - "facing=west,in_wall=true,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/magenta_plank_fence_gate_wall" - }, - "facing=west,in_wall=true,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/magenta_plank_fence_gate_wall_open" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/magenta_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/magenta_plank_pressure_plate.json deleted file mode 100644 index ab2985251a..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/magenta_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/magenta_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/magenta_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/magenta_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/magenta_plank_stairs.json deleted file mode 100644 index 30fa2f338d..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/magenta_plank_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/magenta_plank_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/magenta_plank_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/magenta_plank_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "spectrum:block/magenta_plank_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/magenta_plank_stairs", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=straight": { - "model": "spectrum:block/magenta_plank_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/magenta_plank_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/magenta_plank_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/magenta_plank_stairs", - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "spectrum:block/magenta_plank_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/magenta_plank_stairs", - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/magenta_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/magenta_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "spectrum:block/magenta_plank_stairs", - "x": 180, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/magenta_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/magenta_pressure_plate.json new file mode 100644 index 0000000000..28996a6d5e --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/magenta_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/magenta_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/magenta_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/magenta_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/magenta_slab.json similarity index 58% rename from src/main/resources/assets/spectrum/blockstates/magenta_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/magenta_slab.json index 76abb20456..562c956d14 100644 --- a/src/main/resources/assets/spectrum/blockstates/magenta_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/magenta_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/magenta_plank_slab" + "model": "spectrum:block/magenta_slab" }, "type=double": { "model": "spectrum:block/magenta_planks" }, "type=top": { - "model": "spectrum:block/magenta_plank_slab_top" + "model": "spectrum:block/magenta_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/magenta_stairs.json b/src/main/resources/assets/spectrum/blockstates/magenta_stairs.json new file mode 100644 index 0000000000..c4b421fa25 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/magenta_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "spectrum:block/magenta_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "spectrum:block/magenta_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "spectrum:block/magenta_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "spectrum:block/magenta_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "spectrum:block/magenta_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "spectrum:block/magenta_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "spectrum:block/magenta_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "spectrum:block/magenta_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "spectrum:block/magenta_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "spectrum:block/magenta_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "spectrum:block/magenta_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "spectrum:block/magenta_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "spectrum:block/magenta_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "spectrum:block/magenta_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "spectrum:block/magenta_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "spectrum:block/magenta_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "spectrum:block/magenta_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "spectrum:block/magenta_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "spectrum:block/magenta_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "spectrum:block/magenta_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "spectrum:block/magenta_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "spectrum:block/magenta_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "spectrum:block/magenta_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "spectrum:block/magenta_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "spectrum:block/magenta_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "spectrum:block/magenta_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "spectrum:block/magenta_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "spectrum:block/magenta_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "spectrum:block/magenta_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "spectrum:block/magenta_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "spectrum:block/magenta_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "spectrum:block/magenta_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "spectrum:block/magenta_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "spectrum:block/magenta_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "spectrum:block/magenta_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "spectrum:block/magenta_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "spectrum:block/magenta_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "spectrum:block/magenta_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "spectrum:block/magenta_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "spectrum:block/magenta_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/orange_button.json b/src/main/resources/assets/spectrum/blockstates/orange_button.json new file mode 100644 index 0000000000..126c29f2f2 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/orange_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "spectrum:block/orange_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "spectrum:block/orange_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "spectrum:block/orange_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "spectrum:block/orange_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "spectrum:block/orange_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "spectrum:block/orange_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "spectrum:block/orange_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "spectrum:block/orange_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "spectrum:block/orange_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "spectrum:block/orange_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "spectrum:block/orange_button" + }, + "face=floor,facing=north,powered=true": { + "model": "spectrum:block/orange_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "spectrum:block/orange_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "spectrum:block/orange_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "spectrum:block/orange_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "spectrum:block/orange_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "spectrum:block/orange_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "spectrum:block/orange_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "spectrum:block/orange_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "spectrum:block/orange_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "spectrum:block/orange_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "spectrum:block/orange_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "spectrum:block/orange_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "spectrum:block/orange_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/orange_fence.json b/src/main/resources/assets/spectrum/blockstates/orange_fence.json new file mode 100644 index 0000000000..b4247327cd --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/orange_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "spectrum:block/orange_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "spectrum:block/orange_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "spectrum:block/orange_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "spectrum:block/orange_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "spectrum:block/orange_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/orange_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/orange_fence_gate.json new file mode 100644 index 0000000000..7724206929 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/orange_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/orange_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/orange_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/orange_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/orange_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/orange_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/orange_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/orange_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/orange_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "spectrum:block/orange_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "spectrum:block/orange_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "spectrum:block/orange_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "spectrum:block/orange_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/orange_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/orange_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/orange_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/orange_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/orange_plank_button.json b/src/main/resources/assets/spectrum/blockstates/orange_plank_button.json deleted file mode 100644 index 820954746a..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/orange_plank_button.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/orange_plank_button", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/orange_plank_button_pressed", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/orange_plank_button", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/orange_plank_button_pressed", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/orange_plank_button", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/orange_plank_button_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/orange_plank_button", - "y": 90, - "x": 180 - }, - "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/orange_plank_button_pressed", - "y": 90, - "x": 180 - }, - "face=floor,facing=east,powered=false": { - "model": "spectrum:block/orange_plank_button", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "spectrum:block/orange_plank_button_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "spectrum:block/orange_plank_button" - }, - "face=floor,facing=north,powered=true": { - "model": "spectrum:block/orange_plank_button_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "spectrum:block/orange_plank_button", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "spectrum:block/orange_plank_button_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "spectrum:block/orange_plank_button", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "spectrum:block/orange_plank_button_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "spectrum:block/orange_plank_button", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=east,powered=true": { - "model": "spectrum:block/orange_plank_button_pressed", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=false": { - "model": "spectrum:block/orange_plank_button", - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=true": { - "model": "spectrum:block/orange_plank_button_pressed", - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=false": { - "model": "spectrum:block/orange_plank_button", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=true": { - "model": "spectrum:block/orange_plank_button_pressed", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=false": { - "model": "spectrum:block/orange_plank_button", - "y": 270, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=true": { - "model": "spectrum:block/orange_plank_button_pressed", - "y": 270, - "x": 90, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/orange_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/orange_plank_fence.json deleted file mode 100644 index 91853ac395..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/orange_plank_fence.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "spectrum:block/orange_plank_fence_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "spectrum:block/orange_plank_fence_side", - "uvlock": true - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "spectrum:block/orange_plank_fence_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "spectrum:block/orange_plank_fence_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "spectrum:block/orange_plank_fence_side", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/orange_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/orange_plank_fence_gate.json deleted file mode 100644 index a77c7645bd..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/orange_plank_fence_gate.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "variants": { - "facing=east,in_wall=false,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/orange_plank_fence_gate" - }, - "facing=east,in_wall=false,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/orange_plank_fence_gate_open" - }, - "facing=east,in_wall=true,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/orange_plank_fence_gate_wall" - }, - "facing=east,in_wall=true,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/orange_plank_fence_gate_wall_open" - }, - "facing=north,in_wall=false,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/orange_plank_fence_gate" - }, - "facing=north,in_wall=false,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/orange_plank_fence_gate_open" - }, - "facing=north,in_wall=true,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/orange_plank_fence_gate_wall" - }, - "facing=north,in_wall=true,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/orange_plank_fence_gate_wall_open" - }, - "facing=south,in_wall=false,open=false": { - "uvlock": true, - "model": "spectrum:block/orange_plank_fence_gate" - }, - "facing=south,in_wall=false,open=true": { - "uvlock": true, - "model": "spectrum:block/orange_plank_fence_gate_open" - }, - "facing=south,in_wall=true,open=false": { - "uvlock": true, - "model": "spectrum:block/orange_plank_fence_gate_wall" - }, - "facing=south,in_wall=true,open=true": { - "uvlock": true, - "model": "spectrum:block/orange_plank_fence_gate_wall_open" - }, - "facing=west,in_wall=false,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/orange_plank_fence_gate" - }, - "facing=west,in_wall=false,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/orange_plank_fence_gate_open" - }, - "facing=west,in_wall=true,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/orange_plank_fence_gate_wall" - }, - "facing=west,in_wall=true,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/orange_plank_fence_gate_wall_open" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/orange_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/orange_plank_pressure_plate.json deleted file mode 100644 index cf0dd3e06f..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/orange_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/orange_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/orange_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/orange_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/orange_plank_stairs.json deleted file mode 100644 index 44d13138b1..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/orange_plank_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/orange_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/orange_plank_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/orange_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/orange_plank_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/orange_plank_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/orange_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/orange_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/orange_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/orange_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "spectrum:block/orange_plank_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/orange_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/orange_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/orange_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/orange_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/orange_plank_stairs", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/orange_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/orange_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/orange_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/orange_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=straight": { - "model": "spectrum:block/orange_plank_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/orange_plank_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/orange_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/orange_plank_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/orange_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/orange_plank_stairs", - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/orange_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/orange_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/orange_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/orange_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "spectrum:block/orange_plank_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/orange_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/orange_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/orange_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/orange_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/orange_plank_stairs", - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/orange_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/orange_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/orange_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/orange_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "spectrum:block/orange_plank_stairs", - "x": 180, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/orange_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/orange_pressure_plate.json new file mode 100644 index 0000000000..69fa458270 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/orange_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/orange_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/orange_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/orange_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/orange_slab.json similarity index 58% rename from src/main/resources/assets/spectrum/blockstates/orange_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/orange_slab.json index af18fe50dd..b7f795ca3e 100644 --- a/src/main/resources/assets/spectrum/blockstates/orange_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/orange_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/orange_plank_slab" + "model": "spectrum:block/orange_slab" }, "type=double": { "model": "spectrum:block/orange_planks" }, "type=top": { - "model": "spectrum:block/orange_plank_slab_top" + "model": "spectrum:block/orange_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/orange_stairs.json b/src/main/resources/assets/spectrum/blockstates/orange_stairs.json new file mode 100644 index 0000000000..707708b521 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/orange_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "spectrum:block/orange_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "spectrum:block/orange_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "spectrum:block/orange_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "spectrum:block/orange_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "spectrum:block/orange_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "spectrum:block/orange_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "spectrum:block/orange_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "spectrum:block/orange_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "spectrum:block/orange_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "spectrum:block/orange_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "spectrum:block/orange_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "spectrum:block/orange_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "spectrum:block/orange_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "spectrum:block/orange_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "spectrum:block/orange_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "spectrum:block/orange_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "spectrum:block/orange_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "spectrum:block/orange_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "spectrum:block/orange_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "spectrum:block/orange_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "spectrum:block/orange_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "spectrum:block/orange_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "spectrum:block/orange_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "spectrum:block/orange_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "spectrum:block/orange_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "spectrum:block/orange_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "spectrum:block/orange_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "spectrum:block/orange_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "spectrum:block/orange_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "spectrum:block/orange_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "spectrum:block/orange_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "spectrum:block/orange_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "spectrum:block/orange_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "spectrum:block/orange_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "spectrum:block/orange_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "spectrum:block/orange_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "spectrum:block/orange_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "spectrum:block/orange_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "spectrum:block/orange_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "spectrum:block/orange_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/pink_button.json b/src/main/resources/assets/spectrum/blockstates/pink_button.json new file mode 100644 index 0000000000..7642ec307d --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/pink_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "spectrum:block/pink_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "spectrum:block/pink_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "spectrum:block/pink_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "spectrum:block/pink_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "spectrum:block/pink_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "spectrum:block/pink_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "spectrum:block/pink_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "spectrum:block/pink_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "spectrum:block/pink_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "spectrum:block/pink_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "spectrum:block/pink_button" + }, + "face=floor,facing=north,powered=true": { + "model": "spectrum:block/pink_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "spectrum:block/pink_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "spectrum:block/pink_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "spectrum:block/pink_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "spectrum:block/pink_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "spectrum:block/pink_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "spectrum:block/pink_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "spectrum:block/pink_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "spectrum:block/pink_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "spectrum:block/pink_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "spectrum:block/pink_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "spectrum:block/pink_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "spectrum:block/pink_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/pink_fence.json b/src/main/resources/assets/spectrum/blockstates/pink_fence.json new file mode 100644 index 0000000000..8aa29785f0 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/pink_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "spectrum:block/pink_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "spectrum:block/pink_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "spectrum:block/pink_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "spectrum:block/pink_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "spectrum:block/pink_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/pink_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/pink_fence_gate.json new file mode 100644 index 0000000000..a982914da8 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/pink_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/pink_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/pink_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/pink_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/pink_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/pink_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/pink_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/pink_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/pink_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "spectrum:block/pink_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "spectrum:block/pink_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "spectrum:block/pink_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "spectrum:block/pink_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/pink_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/pink_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/pink_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/pink_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/pink_plank_button.json b/src/main/resources/assets/spectrum/blockstates/pink_plank_button.json deleted file mode 100644 index ff1406f80b..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/pink_plank_button.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/pink_plank_button", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/pink_plank_button_pressed", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/pink_plank_button", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/pink_plank_button_pressed", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/pink_plank_button", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/pink_plank_button_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/pink_plank_button", - "y": 90, - "x": 180 - }, - "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/pink_plank_button_pressed", - "y": 90, - "x": 180 - }, - "face=floor,facing=east,powered=false": { - "model": "spectrum:block/pink_plank_button", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "spectrum:block/pink_plank_button_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "spectrum:block/pink_plank_button" - }, - "face=floor,facing=north,powered=true": { - "model": "spectrum:block/pink_plank_button_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "spectrum:block/pink_plank_button", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "spectrum:block/pink_plank_button_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "spectrum:block/pink_plank_button", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "spectrum:block/pink_plank_button_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "spectrum:block/pink_plank_button", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=east,powered=true": { - "model": "spectrum:block/pink_plank_button_pressed", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=false": { - "model": "spectrum:block/pink_plank_button", - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=true": { - "model": "spectrum:block/pink_plank_button_pressed", - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=false": { - "model": "spectrum:block/pink_plank_button", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=true": { - "model": "spectrum:block/pink_plank_button_pressed", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=false": { - "model": "spectrum:block/pink_plank_button", - "y": 270, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=true": { - "model": "spectrum:block/pink_plank_button_pressed", - "y": 270, - "x": 90, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/pink_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/pink_plank_fence.json deleted file mode 100644 index 33b088b333..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/pink_plank_fence.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "spectrum:block/pink_plank_fence_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "spectrum:block/pink_plank_fence_side", - "uvlock": true - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "spectrum:block/pink_plank_fence_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "spectrum:block/pink_plank_fence_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "spectrum:block/pink_plank_fence_side", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/pink_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/pink_plank_fence_gate.json deleted file mode 100644 index 9772505f4d..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/pink_plank_fence_gate.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "variants": { - "facing=east,in_wall=false,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/pink_plank_fence_gate" - }, - "facing=east,in_wall=false,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/pink_plank_fence_gate_open" - }, - "facing=east,in_wall=true,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/pink_plank_fence_gate_wall" - }, - "facing=east,in_wall=true,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/pink_plank_fence_gate_wall_open" - }, - "facing=north,in_wall=false,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/pink_plank_fence_gate" - }, - "facing=north,in_wall=false,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/pink_plank_fence_gate_open" - }, - "facing=north,in_wall=true,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/pink_plank_fence_gate_wall" - }, - "facing=north,in_wall=true,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/pink_plank_fence_gate_wall_open" - }, - "facing=south,in_wall=false,open=false": { - "uvlock": true, - "model": "spectrum:block/pink_plank_fence_gate" - }, - "facing=south,in_wall=false,open=true": { - "uvlock": true, - "model": "spectrum:block/pink_plank_fence_gate_open" - }, - "facing=south,in_wall=true,open=false": { - "uvlock": true, - "model": "spectrum:block/pink_plank_fence_gate_wall" - }, - "facing=south,in_wall=true,open=true": { - "uvlock": true, - "model": "spectrum:block/pink_plank_fence_gate_wall_open" - }, - "facing=west,in_wall=false,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/pink_plank_fence_gate" - }, - "facing=west,in_wall=false,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/pink_plank_fence_gate_open" - }, - "facing=west,in_wall=true,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/pink_plank_fence_gate_wall" - }, - "facing=west,in_wall=true,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/pink_plank_fence_gate_wall_open" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/pink_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/pink_plank_pressure_plate.json deleted file mode 100644 index 9e774c0f26..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/pink_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/pink_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/pink_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/pink_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/pink_plank_stairs.json deleted file mode 100644 index fd98fe3ef0..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/pink_plank_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/pink_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/pink_plank_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/pink_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/pink_plank_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/pink_plank_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/pink_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/pink_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/pink_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/pink_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "spectrum:block/pink_plank_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/pink_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/pink_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/pink_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/pink_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/pink_plank_stairs", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/pink_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/pink_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/pink_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/pink_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=straight": { - "model": "spectrum:block/pink_plank_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/pink_plank_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/pink_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/pink_plank_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/pink_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/pink_plank_stairs", - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/pink_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/pink_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/pink_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/pink_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "spectrum:block/pink_plank_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/pink_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/pink_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/pink_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/pink_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/pink_plank_stairs", - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/pink_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/pink_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/pink_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/pink_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "spectrum:block/pink_plank_stairs", - "x": 180, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/pink_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/pink_pressure_plate.json new file mode 100644 index 0000000000..0acf0e3202 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/pink_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/pink_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/pink_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/pink_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/pink_slab.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/pink_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/pink_slab.json index 928aaacdb4..b56593ef80 100644 --- a/src/main/resources/assets/spectrum/blockstates/pink_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/pink_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/pink_plank_slab" + "model": "spectrum:block/pink_slab" }, "type=double": { "model": "spectrum:block/pink_planks" }, "type=top": { - "model": "spectrum:block/pink_plank_slab_top" + "model": "spectrum:block/pink_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/pink_stairs.json b/src/main/resources/assets/spectrum/blockstates/pink_stairs.json new file mode 100644 index 0000000000..db0704eb4a --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/pink_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "spectrum:block/pink_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "spectrum:block/pink_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "spectrum:block/pink_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "spectrum:block/pink_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "spectrum:block/pink_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "spectrum:block/pink_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "spectrum:block/pink_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "spectrum:block/pink_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "spectrum:block/pink_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "spectrum:block/pink_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "spectrum:block/pink_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "spectrum:block/pink_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "spectrum:block/pink_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "spectrum:block/pink_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "spectrum:block/pink_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "spectrum:block/pink_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "spectrum:block/pink_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "spectrum:block/pink_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "spectrum:block/pink_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "spectrum:block/pink_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "spectrum:block/pink_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "spectrum:block/pink_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "spectrum:block/pink_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "spectrum:block/pink_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "spectrum:block/pink_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "spectrum:block/pink_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "spectrum:block/pink_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "spectrum:block/pink_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "spectrum:block/pink_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "spectrum:block/pink_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "spectrum:block/pink_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "spectrum:block/pink_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "spectrum:block/pink_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "spectrum:block/pink_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "spectrum:block/pink_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "spectrum:block/pink_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "spectrum:block/pink_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "spectrum:block/pink_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "spectrum:block/pink_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "spectrum:block/pink_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/purple_button.json b/src/main/resources/assets/spectrum/blockstates/purple_button.json new file mode 100644 index 0000000000..0f69ee7973 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/purple_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "spectrum:block/purple_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "spectrum:block/purple_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "spectrum:block/purple_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "spectrum:block/purple_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "spectrum:block/purple_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "spectrum:block/purple_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "spectrum:block/purple_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "spectrum:block/purple_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "spectrum:block/purple_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "spectrum:block/purple_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "spectrum:block/purple_button" + }, + "face=floor,facing=north,powered=true": { + "model": "spectrum:block/purple_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "spectrum:block/purple_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "spectrum:block/purple_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "spectrum:block/purple_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "spectrum:block/purple_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "spectrum:block/purple_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "spectrum:block/purple_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "spectrum:block/purple_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "spectrum:block/purple_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "spectrum:block/purple_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "spectrum:block/purple_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "spectrum:block/purple_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "spectrum:block/purple_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/purple_fence.json b/src/main/resources/assets/spectrum/blockstates/purple_fence.json new file mode 100644 index 0000000000..a04007c8e2 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/purple_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "spectrum:block/purple_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "spectrum:block/purple_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "spectrum:block/purple_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "spectrum:block/purple_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "spectrum:block/purple_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/purple_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/purple_fence_gate.json new file mode 100644 index 0000000000..c35cef348c --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/purple_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/purple_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/purple_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/purple_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/purple_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/purple_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/purple_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/purple_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/purple_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "spectrum:block/purple_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "spectrum:block/purple_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "spectrum:block/purple_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "spectrum:block/purple_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/purple_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/purple_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/purple_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/purple_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/purple_plank_button.json b/src/main/resources/assets/spectrum/blockstates/purple_plank_button.json deleted file mode 100644 index c248458cf9..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/purple_plank_button.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/purple_plank_button", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/purple_plank_button_pressed", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/purple_plank_button", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/purple_plank_button_pressed", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/purple_plank_button", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/purple_plank_button_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/purple_plank_button", - "y": 90, - "x": 180 - }, - "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/purple_plank_button_pressed", - "y": 90, - "x": 180 - }, - "face=floor,facing=east,powered=false": { - "model": "spectrum:block/purple_plank_button", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "spectrum:block/purple_plank_button_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "spectrum:block/purple_plank_button" - }, - "face=floor,facing=north,powered=true": { - "model": "spectrum:block/purple_plank_button_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "spectrum:block/purple_plank_button", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "spectrum:block/purple_plank_button_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "spectrum:block/purple_plank_button", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "spectrum:block/purple_plank_button_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "spectrum:block/purple_plank_button", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=east,powered=true": { - "model": "spectrum:block/purple_plank_button_pressed", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=false": { - "model": "spectrum:block/purple_plank_button", - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=true": { - "model": "spectrum:block/purple_plank_button_pressed", - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=false": { - "model": "spectrum:block/purple_plank_button", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=true": { - "model": "spectrum:block/purple_plank_button_pressed", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=false": { - "model": "spectrum:block/purple_plank_button", - "y": 270, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=true": { - "model": "spectrum:block/purple_plank_button_pressed", - "y": 270, - "x": 90, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/purple_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/purple_plank_fence.json deleted file mode 100644 index 3d56b66e38..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/purple_plank_fence.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "spectrum:block/purple_plank_fence_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "spectrum:block/purple_plank_fence_side", - "uvlock": true - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "spectrum:block/purple_plank_fence_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "spectrum:block/purple_plank_fence_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "spectrum:block/purple_plank_fence_side", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/purple_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/purple_plank_fence_gate.json deleted file mode 100644 index 3f4542c5cb..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/purple_plank_fence_gate.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "variants": { - "facing=east,in_wall=false,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/purple_plank_fence_gate" - }, - "facing=east,in_wall=false,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/purple_plank_fence_gate_open" - }, - "facing=east,in_wall=true,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/purple_plank_fence_gate_wall" - }, - "facing=east,in_wall=true,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/purple_plank_fence_gate_wall_open" - }, - "facing=north,in_wall=false,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/purple_plank_fence_gate" - }, - "facing=north,in_wall=false,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/purple_plank_fence_gate_open" - }, - "facing=north,in_wall=true,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/purple_plank_fence_gate_wall" - }, - "facing=north,in_wall=true,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/purple_plank_fence_gate_wall_open" - }, - "facing=south,in_wall=false,open=false": { - "uvlock": true, - "model": "spectrum:block/purple_plank_fence_gate" - }, - "facing=south,in_wall=false,open=true": { - "uvlock": true, - "model": "spectrum:block/purple_plank_fence_gate_open" - }, - "facing=south,in_wall=true,open=false": { - "uvlock": true, - "model": "spectrum:block/purple_plank_fence_gate_wall" - }, - "facing=south,in_wall=true,open=true": { - "uvlock": true, - "model": "spectrum:block/purple_plank_fence_gate_wall_open" - }, - "facing=west,in_wall=false,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/purple_plank_fence_gate" - }, - "facing=west,in_wall=false,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/purple_plank_fence_gate_open" - }, - "facing=west,in_wall=true,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/purple_plank_fence_gate_wall" - }, - "facing=west,in_wall=true,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/purple_plank_fence_gate_wall_open" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/purple_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/purple_plank_pressure_plate.json deleted file mode 100644 index adb3448b54..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/purple_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/purple_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/purple_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/purple_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/purple_plank_stairs.json deleted file mode 100644 index 6dafb04177..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/purple_plank_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/purple_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/purple_plank_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/purple_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/purple_plank_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/purple_plank_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/purple_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/purple_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/purple_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/purple_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "spectrum:block/purple_plank_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/purple_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/purple_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/purple_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/purple_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/purple_plank_stairs", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/purple_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/purple_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/purple_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/purple_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=straight": { - "model": "spectrum:block/purple_plank_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/purple_plank_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/purple_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/purple_plank_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/purple_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/purple_plank_stairs", - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/purple_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/purple_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/purple_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/purple_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "spectrum:block/purple_plank_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/purple_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/purple_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/purple_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/purple_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/purple_plank_stairs", - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/purple_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/purple_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/purple_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/purple_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "spectrum:block/purple_plank_stairs", - "x": 180, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/purple_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/purple_pressure_plate.json new file mode 100644 index 0000000000..dcc0b263b1 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/purple_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/purple_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/purple_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/purple_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/purple_slab.json similarity index 58% rename from src/main/resources/assets/spectrum/blockstates/purple_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/purple_slab.json index a500c5abc8..af7cd78141 100644 --- a/src/main/resources/assets/spectrum/blockstates/purple_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/purple_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/purple_plank_slab" + "model": "spectrum:block/purple_slab" }, "type=double": { "model": "spectrum:block/purple_planks" }, "type=top": { - "model": "spectrum:block/purple_plank_slab_top" + "model": "spectrum:block/purple_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/purple_stairs.json b/src/main/resources/assets/spectrum/blockstates/purple_stairs.json new file mode 100644 index 0000000000..a85b8b58fa --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/purple_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "spectrum:block/purple_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "spectrum:block/purple_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "spectrum:block/purple_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "spectrum:block/purple_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "spectrum:block/purple_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "spectrum:block/purple_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "spectrum:block/purple_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "spectrum:block/purple_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "spectrum:block/purple_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "spectrum:block/purple_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "spectrum:block/purple_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "spectrum:block/purple_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "spectrum:block/purple_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "spectrum:block/purple_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "spectrum:block/purple_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "spectrum:block/purple_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "spectrum:block/purple_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "spectrum:block/purple_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "spectrum:block/purple_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "spectrum:block/purple_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "spectrum:block/purple_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "spectrum:block/purple_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "spectrum:block/purple_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "spectrum:block/purple_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "spectrum:block/purple_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "spectrum:block/purple_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "spectrum:block/purple_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "spectrum:block/purple_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "spectrum:block/purple_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "spectrum:block/purple_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "spectrum:block/purple_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "spectrum:block/purple_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "spectrum:block/purple_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "spectrum:block/purple_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "spectrum:block/purple_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "spectrum:block/purple_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "spectrum:block/purple_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "spectrum:block/purple_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "spectrum:block/purple_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "spectrum:block/purple_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/red_button.json b/src/main/resources/assets/spectrum/blockstates/red_button.json new file mode 100644 index 0000000000..8ea6d6caf7 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/red_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "spectrum:block/red_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "spectrum:block/red_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "spectrum:block/red_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "spectrum:block/red_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "spectrum:block/red_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "spectrum:block/red_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "spectrum:block/red_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "spectrum:block/red_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "spectrum:block/red_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "spectrum:block/red_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "spectrum:block/red_button" + }, + "face=floor,facing=north,powered=true": { + "model": "spectrum:block/red_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "spectrum:block/red_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "spectrum:block/red_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "spectrum:block/red_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "spectrum:block/red_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "spectrum:block/red_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "spectrum:block/red_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "spectrum:block/red_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "spectrum:block/red_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "spectrum:block/red_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "spectrum:block/red_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "spectrum:block/red_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "spectrum:block/red_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/red_fence.json b/src/main/resources/assets/spectrum/blockstates/red_fence.json new file mode 100644 index 0000000000..fe6cd2c618 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/red_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "spectrum:block/red_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "spectrum:block/red_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "spectrum:block/red_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "spectrum:block/red_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "spectrum:block/red_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/red_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/red_fence_gate.json new file mode 100644 index 0000000000..cb0f490db0 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/red_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/red_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/red_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/red_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/red_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/red_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/red_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/red_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/red_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "spectrum:block/red_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "spectrum:block/red_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "spectrum:block/red_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "spectrum:block/red_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/red_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/red_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/red_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/red_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/red_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/red_plank_pressure_plate.json deleted file mode 100644 index fc2356afae..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/red_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/red_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/red_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/red_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/red_pressure_plate.json new file mode 100644 index 0000000000..c760a15d14 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/red_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/red_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/red_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/red_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/red_slab.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/red_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/red_slab.json index 28acc1d085..b6ca14586e 100644 --- a/src/main/resources/assets/spectrum/blockstates/red_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/red_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/red_plank_slab" + "model": "spectrum:block/red_slab" }, "type=double": { "model": "spectrum:block/red_planks" }, "type=top": { - "model": "spectrum:block/red_plank_slab_top" + "model": "spectrum:block/red_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/red_stairs.json b/src/main/resources/assets/spectrum/blockstates/red_stairs.json new file mode 100644 index 0000000000..13dc862154 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/red_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "spectrum:block/red_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "spectrum:block/red_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "spectrum:block/red_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "spectrum:block/red_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "spectrum:block/red_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "spectrum:block/red_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "spectrum:block/red_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "spectrum:block/red_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "spectrum:block/red_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "spectrum:block/red_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "spectrum:block/red_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "spectrum:block/red_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "spectrum:block/red_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "spectrum:block/red_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "spectrum:block/red_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "spectrum:block/red_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "spectrum:block/red_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "spectrum:block/red_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "spectrum:block/red_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "spectrum:block/red_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "spectrum:block/red_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "spectrum:block/red_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "spectrum:block/red_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "spectrum:block/red_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "spectrum:block/red_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "spectrum:block/red_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "spectrum:block/red_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "spectrum:block/red_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "spectrum:block/red_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "spectrum:block/red_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "spectrum:block/red_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "spectrum:block/red_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "spectrum:block/red_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "spectrum:block/red_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "spectrum:block/red_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "spectrum:block/red_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "spectrum:block/red_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "spectrum:block/red_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "spectrum:block/red_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "spectrum:block/red_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/white_button.json b/src/main/resources/assets/spectrum/blockstates/white_button.json new file mode 100644 index 0000000000..c8f06f6b25 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/white_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "spectrum:block/white_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "spectrum:block/white_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "spectrum:block/white_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "spectrum:block/white_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "spectrum:block/white_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "spectrum:block/white_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "spectrum:block/white_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "spectrum:block/white_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "spectrum:block/white_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "spectrum:block/white_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "spectrum:block/white_button" + }, + "face=floor,facing=north,powered=true": { + "model": "spectrum:block/white_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "spectrum:block/white_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "spectrum:block/white_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "spectrum:block/white_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "spectrum:block/white_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "spectrum:block/white_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "spectrum:block/white_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "spectrum:block/white_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "spectrum:block/white_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "spectrum:block/white_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "spectrum:block/white_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "spectrum:block/white_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "spectrum:block/white_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/white_fence.json b/src/main/resources/assets/spectrum/blockstates/white_fence.json new file mode 100644 index 0000000000..8b9913f36b --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/white_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "spectrum:block/white_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "spectrum:block/white_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "spectrum:block/white_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "spectrum:block/white_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "spectrum:block/white_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/white_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/white_fence_gate.json new file mode 100644 index 0000000000..6b1a924abf --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/white_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/white_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/white_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/white_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/white_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/white_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/white_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/white_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/white_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "spectrum:block/white_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "spectrum:block/white_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "spectrum:block/white_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "spectrum:block/white_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/white_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/white_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/white_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/white_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/white_plank_button.json b/src/main/resources/assets/spectrum/blockstates/white_plank_button.json deleted file mode 100644 index 71984b0dd7..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/white_plank_button.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/white_plank_button", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/white_plank_button_pressed", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/white_plank_button", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/white_plank_button_pressed", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/white_plank_button", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/white_plank_button_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/white_plank_button", - "y": 90, - "x": 180 - }, - "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/white_plank_button_pressed", - "y": 90, - "x": 180 - }, - "face=floor,facing=east,powered=false": { - "model": "spectrum:block/white_plank_button", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "spectrum:block/white_plank_button_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "spectrum:block/white_plank_button" - }, - "face=floor,facing=north,powered=true": { - "model": "spectrum:block/white_plank_button_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "spectrum:block/white_plank_button", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "spectrum:block/white_plank_button_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "spectrum:block/white_plank_button", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "spectrum:block/white_plank_button_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "spectrum:block/white_plank_button", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=east,powered=true": { - "model": "spectrum:block/white_plank_button_pressed", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=false": { - "model": "spectrum:block/white_plank_button", - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=true": { - "model": "spectrum:block/white_plank_button_pressed", - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=false": { - "model": "spectrum:block/white_plank_button", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=true": { - "model": "spectrum:block/white_plank_button_pressed", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=false": { - "model": "spectrum:block/white_plank_button", - "y": 270, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=true": { - "model": "spectrum:block/white_plank_button_pressed", - "y": 270, - "x": 90, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/white_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/white_plank_fence.json deleted file mode 100644 index e3400f6070..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/white_plank_fence.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "spectrum:block/white_plank_fence_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "spectrum:block/white_plank_fence_side", - "uvlock": true - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "spectrum:block/white_plank_fence_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "spectrum:block/white_plank_fence_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "spectrum:block/white_plank_fence_side", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/white_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/white_plank_fence_gate.json deleted file mode 100644 index 04d3146999..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/white_plank_fence_gate.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "variants": { - "facing=east,in_wall=false,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/white_plank_fence_gate" - }, - "facing=east,in_wall=false,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/white_plank_fence_gate_open" - }, - "facing=east,in_wall=true,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/white_plank_fence_gate_wall" - }, - "facing=east,in_wall=true,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/white_plank_fence_gate_wall_open" - }, - "facing=north,in_wall=false,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/white_plank_fence_gate" - }, - "facing=north,in_wall=false,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/white_plank_fence_gate_open" - }, - "facing=north,in_wall=true,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/white_plank_fence_gate_wall" - }, - "facing=north,in_wall=true,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/white_plank_fence_gate_wall_open" - }, - "facing=south,in_wall=false,open=false": { - "uvlock": true, - "model": "spectrum:block/white_plank_fence_gate" - }, - "facing=south,in_wall=false,open=true": { - "uvlock": true, - "model": "spectrum:block/white_plank_fence_gate_open" - }, - "facing=south,in_wall=true,open=false": { - "uvlock": true, - "model": "spectrum:block/white_plank_fence_gate_wall" - }, - "facing=south,in_wall=true,open=true": { - "uvlock": true, - "model": "spectrum:block/white_plank_fence_gate_wall_open" - }, - "facing=west,in_wall=false,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/white_plank_fence_gate" - }, - "facing=west,in_wall=false,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/white_plank_fence_gate_open" - }, - "facing=west,in_wall=true,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/white_plank_fence_gate_wall" - }, - "facing=west,in_wall=true,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/white_plank_fence_gate_wall_open" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/white_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/white_plank_pressure_plate.json deleted file mode 100644 index 185077ebbb..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/white_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/white_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/white_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/white_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/white_plank_stairs.json deleted file mode 100644 index 268504ecbc..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/white_plank_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/white_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/white_plank_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/white_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/white_plank_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/white_plank_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/white_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/white_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/white_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/white_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "spectrum:block/white_plank_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/white_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/white_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/white_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/white_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/white_plank_stairs", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/white_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/white_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/white_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/white_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=straight": { - "model": "spectrum:block/white_plank_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/white_plank_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/white_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/white_plank_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/white_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/white_plank_stairs", - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/white_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/white_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/white_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/white_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "spectrum:block/white_plank_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/white_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/white_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/white_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/white_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/white_plank_stairs", - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/white_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/white_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/white_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/white_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "spectrum:block/white_plank_stairs", - "x": 180, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/white_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/white_pressure_plate.json new file mode 100644 index 0000000000..b4c9d14f06 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/white_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/white_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/white_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/white_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/white_slab.json similarity index 59% rename from src/main/resources/assets/spectrum/blockstates/white_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/white_slab.json index b8886092cf..223bd1348c 100644 --- a/src/main/resources/assets/spectrum/blockstates/white_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/white_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/white_plank_slab" + "model": "spectrum:block/white_slab" }, "type=double": { "model": "spectrum:block/white_planks" }, "type=top": { - "model": "spectrum:block/white_plank_slab_top" + "model": "spectrum:block/white_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/white_stairs.json b/src/main/resources/assets/spectrum/blockstates/white_stairs.json new file mode 100644 index 0000000000..53c4f68561 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/white_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "spectrum:block/white_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "spectrum:block/white_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "spectrum:block/white_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "spectrum:block/white_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "spectrum:block/white_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "spectrum:block/white_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "spectrum:block/white_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "spectrum:block/white_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "spectrum:block/white_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "spectrum:block/white_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "spectrum:block/white_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "spectrum:block/white_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "spectrum:block/white_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "spectrum:block/white_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "spectrum:block/white_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "spectrum:block/white_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "spectrum:block/white_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "spectrum:block/white_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "spectrum:block/white_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "spectrum:block/white_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "spectrum:block/white_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "spectrum:block/white_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "spectrum:block/white_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "spectrum:block/white_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "spectrum:block/white_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "spectrum:block/white_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "spectrum:block/white_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "spectrum:block/white_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "spectrum:block/white_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "spectrum:block/white_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "spectrum:block/white_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "spectrum:block/white_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "spectrum:block/white_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "spectrum:block/white_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "spectrum:block/white_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "spectrum:block/white_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "spectrum:block/white_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "spectrum:block/white_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "spectrum:block/white_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "spectrum:block/white_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/yellow_button.json b/src/main/resources/assets/spectrum/blockstates/yellow_button.json new file mode 100644 index 0000000000..35dbd93c4e --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/yellow_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "spectrum:block/yellow_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "spectrum:block/yellow_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "spectrum:block/yellow_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "spectrum:block/yellow_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "spectrum:block/yellow_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "spectrum:block/yellow_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "spectrum:block/yellow_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "spectrum:block/yellow_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "spectrum:block/yellow_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "spectrum:block/yellow_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "spectrum:block/yellow_button" + }, + "face=floor,facing=north,powered=true": { + "model": "spectrum:block/yellow_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "spectrum:block/yellow_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "spectrum:block/yellow_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "spectrum:block/yellow_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "spectrum:block/yellow_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "spectrum:block/yellow_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "spectrum:block/yellow_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "spectrum:block/yellow_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "spectrum:block/yellow_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "spectrum:block/yellow_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "spectrum:block/yellow_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "spectrum:block/yellow_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "spectrum:block/yellow_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/yellow_fence.json b/src/main/resources/assets/spectrum/blockstates/yellow_fence.json new file mode 100644 index 0000000000..21c0526746 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/yellow_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "spectrum:block/yellow_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "spectrum:block/yellow_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "spectrum:block/yellow_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "spectrum:block/yellow_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "spectrum:block/yellow_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/yellow_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/yellow_fence_gate.json new file mode 100644 index 0000000000..0f7479fc58 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/yellow_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/yellow_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/yellow_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/yellow_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "spectrum:block/yellow_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/yellow_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/yellow_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/yellow_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "spectrum:block/yellow_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "spectrum:block/yellow_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "spectrum:block/yellow_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "spectrum:block/yellow_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "spectrum:block/yellow_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/yellow_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/yellow_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/yellow_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "spectrum:block/yellow_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/yellow_plank_button.json b/src/main/resources/assets/spectrum/blockstates/yellow_plank_button.json deleted file mode 100644 index 7ebe595928..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/yellow_plank_button.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "spectrum:block/yellow_plank_button", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=east,powered=true": { - "model": "spectrum:block/yellow_plank_button_pressed", - "y": 270, - "x": 180 - }, - "face=ceiling,facing=north,powered=false": { - "model": "spectrum:block/yellow_plank_button", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "spectrum:block/yellow_plank_button_pressed", - "y": 180, - "x": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "spectrum:block/yellow_plank_button", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "spectrum:block/yellow_plank_button_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "spectrum:block/yellow_plank_button", - "y": 90, - "x": 180 - }, - "face=ceiling,facing=west,powered=true": { - "model": "spectrum:block/yellow_plank_button_pressed", - "y": 90, - "x": 180 - }, - "face=floor,facing=east,powered=false": { - "model": "spectrum:block/yellow_plank_button", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "spectrum:block/yellow_plank_button_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "spectrum:block/yellow_plank_button" - }, - "face=floor,facing=north,powered=true": { - "model": "spectrum:block/yellow_plank_button_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "spectrum:block/yellow_plank_button", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "spectrum:block/yellow_plank_button_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "spectrum:block/yellow_plank_button", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "spectrum:block/yellow_plank_button_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "spectrum:block/yellow_plank_button", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=east,powered=true": { - "model": "spectrum:block/yellow_plank_button_pressed", - "y": 90, - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=false": { - "model": "spectrum:block/yellow_plank_button", - "x": 90, - "uvlock": true - }, - "face=wall,facing=north,powered=true": { - "model": "spectrum:block/yellow_plank_button_pressed", - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=false": { - "model": "spectrum:block/yellow_plank_button", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=south,powered=true": { - "model": "spectrum:block/yellow_plank_button_pressed", - "y": 180, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=false": { - "model": "spectrum:block/yellow_plank_button", - "y": 270, - "x": 90, - "uvlock": true - }, - "face=wall,facing=west,powered=true": { - "model": "spectrum:block/yellow_plank_button_pressed", - "y": 270, - "x": 90, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/yellow_plank_fence.json b/src/main/resources/assets/spectrum/blockstates/yellow_plank_fence.json deleted file mode 100644 index 6545bd16fe..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/yellow_plank_fence.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "spectrum:block/yellow_plank_fence_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "spectrum:block/yellow_plank_fence_side", - "uvlock": true - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "spectrum:block/yellow_plank_fence_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "spectrum:block/yellow_plank_fence_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "spectrum:block/yellow_plank_fence_side", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/yellow_plank_fence_gate.json b/src/main/resources/assets/spectrum/blockstates/yellow_plank_fence_gate.json deleted file mode 100644 index 137da7d367..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/yellow_plank_fence_gate.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "variants": { - "facing=east,in_wall=false,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/yellow_plank_fence_gate" - }, - "facing=east,in_wall=false,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/yellow_plank_fence_gate_open" - }, - "facing=east,in_wall=true,open=false": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/yellow_plank_fence_gate_wall" - }, - "facing=east,in_wall=true,open=true": { - "uvlock": true, - "y": 270, - "model": "spectrum:block/yellow_plank_fence_gate_wall_open" - }, - "facing=north,in_wall=false,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/yellow_plank_fence_gate" - }, - "facing=north,in_wall=false,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/yellow_plank_fence_gate_open" - }, - "facing=north,in_wall=true,open=false": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/yellow_plank_fence_gate_wall" - }, - "facing=north,in_wall=true,open=true": { - "uvlock": true, - "y": 180, - "model": "spectrum:block/yellow_plank_fence_gate_wall_open" - }, - "facing=south,in_wall=false,open=false": { - "uvlock": true, - "model": "spectrum:block/yellow_plank_fence_gate" - }, - "facing=south,in_wall=false,open=true": { - "uvlock": true, - "model": "spectrum:block/yellow_plank_fence_gate_open" - }, - "facing=south,in_wall=true,open=false": { - "uvlock": true, - "model": "spectrum:block/yellow_plank_fence_gate_wall" - }, - "facing=south,in_wall=true,open=true": { - "uvlock": true, - "model": "spectrum:block/yellow_plank_fence_gate_wall_open" - }, - "facing=west,in_wall=false,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/yellow_plank_fence_gate" - }, - "facing=west,in_wall=false,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/yellow_plank_fence_gate_open" - }, - "facing=west,in_wall=true,open=false": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/yellow_plank_fence_gate_wall" - }, - "facing=west,in_wall=true,open=true": { - "uvlock": true, - "y": 90, - "model": "spectrum:block/yellow_plank_fence_gate_wall_open" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/yellow_plank_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/yellow_plank_pressure_plate.json deleted file mode 100644 index 6d63ba59b6..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/yellow_plank_pressure_plate.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "spectrum:block/yellow_plank_pressure_plate" - }, - "powered=true": { - "model": "spectrum:block/yellow_plank_pressure_plate_down" - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/yellow_plank_stairs.json b/src/main/resources/assets/spectrum/blockstates/yellow_plank_stairs.json deleted file mode 100644 index 08b7f98378..0000000000 --- a/src/main/resources/assets/spectrum/blockstates/yellow_plank_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "spectrum:block/yellow_plank_stairs_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "spectrum:block/yellow_plank_stairs_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "spectrum:block/yellow_plank_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "spectrum:block/yellow_plank_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "spectrum:block/yellow_plank_stairs", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_left": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=outer_left": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=top,shape=straight": { - "model": "spectrum:block/yellow_plank_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "spectrum:block/yellow_plank_stairs_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "spectrum:block/yellow_plank_stairs_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "spectrum:block/yellow_plank_stairs", - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "spectrum:block/yellow_plank_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "spectrum:block/yellow_plank_stairs", - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "spectrum:block/yellow_plank_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "spectrum:block/yellow_plank_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "spectrum:block/yellow_plank_stairs", - "x": 180, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/yellow_pressure_plate.json b/src/main/resources/assets/spectrum/blockstates/yellow_pressure_plate.json new file mode 100644 index 0000000000..2f4089d008 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/yellow_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "spectrum:block/yellow_pressure_plate" + }, + "powered=true": { + "model": "spectrum:block/yellow_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/yellow_plank_slab.json b/src/main/resources/assets/spectrum/blockstates/yellow_slab.json similarity index 58% rename from src/main/resources/assets/spectrum/blockstates/yellow_plank_slab.json rename to src/main/resources/assets/spectrum/blockstates/yellow_slab.json index 76ba3298a7..6b98f47275 100644 --- a/src/main/resources/assets/spectrum/blockstates/yellow_plank_slab.json +++ b/src/main/resources/assets/spectrum/blockstates/yellow_slab.json @@ -1,13 +1,13 @@ { "variants": { "type=bottom": { - "model": "spectrum:block/yellow_plank_slab" + "model": "spectrum:block/yellow_slab" }, "type=double": { "model": "spectrum:block/yellow_planks" }, "type=top": { - "model": "spectrum:block/yellow_plank_slab_top" + "model": "spectrum:block/yellow_slab_top" } } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/blockstates/yellow_stairs.json b/src/main/resources/assets/spectrum/blockstates/yellow_stairs.json new file mode 100644 index 0000000000..83246838d6 --- /dev/null +++ b/src/main/resources/assets/spectrum/blockstates/yellow_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "spectrum:block/yellow_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "spectrum:block/yellow_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "spectrum:block/yellow_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "spectrum:block/yellow_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "spectrum:block/yellow_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "spectrum:block/yellow_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "spectrum:block/yellow_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "spectrum:block/yellow_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "spectrum:block/yellow_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "spectrum:block/yellow_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "spectrum:block/yellow_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "spectrum:block/yellow_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "spectrum:block/yellow_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "spectrum:block/yellow_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "spectrum:block/yellow_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "spectrum:block/yellow_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "spectrum:block/yellow_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "spectrum:block/yellow_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "spectrum:block/yellow_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "spectrum:block/yellow_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "spectrum:block/yellow_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "spectrum:block/yellow_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "spectrum:block/yellow_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "spectrum:block/yellow_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "spectrum:block/yellow_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "spectrum:block/yellow_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "spectrum:block/yellow_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "spectrum:block/yellow_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "spectrum:block/yellow_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "spectrum:block/yellow_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "spectrum:block/yellow_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "spectrum:block/yellow_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "spectrum:block/yellow_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "spectrum:block/yellow_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "spectrum:block/yellow_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "spectrum:block/yellow_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "spectrum:block/yellow_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "spectrum:block/yellow_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "spectrum:block/yellow_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "spectrum:block/yellow_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/lang/de_de.json b/src/main/resources/assets/spectrum/lang/de_de.json index dbffe0b6ea..16919dc7f0 100644 --- a/src/main/resources/assets/spectrum/lang/de_de.json +++ b/src/main/resources/assets/spectrum/lang/de_de.json @@ -433,132 +433,132 @@ "block.spectrum.yellow_lamp": "Gelbe Lampe", "block.spectrum.black_planks": "Schwarze Planken", - "block.spectrum.black_plank_button": "Schwarze Plank Button", - "block.spectrum.black_plank_fence": "Schwarze Plank Fence", - "block.spectrum.black_plank_pressure_plate": "Schwarze Plank Pressure Plate", - "block.spectrum.black_plank_stairs": "Schwarze Plank Treppen", - "block.spectrum.black_plank_slab": "Schwarze Plank Stufe", - "block.spectrum.black_plank_fence_gate": "Schwarze Plank Fence Gate", + "block.spectrum.black_button": "Schwarze Plank Button", + "block.spectrum.black_fence": "Schwarze Plank Fence", + "block.spectrum.black_pressure_plate": "Schwarze Plank Pressure Plate", + "block.spectrum.black_stairs": "Schwarze Plank Treppen", + "block.spectrum.black_slab": "Schwarze Plank Stufe", + "block.spectrum.black_fence_gate": "Schwarze Plank Fence Gate", "block.spectrum.blue_planks": "Blaue Planken", - "block.spectrum.blue_plank_button": "Blaue Plank Button", - "block.spectrum.blue_plank_fence": "Blaue Plank Fence", - "block.spectrum.blue_plank_pressure_plate": "Blaue Plank Pressure Plate", - "block.spectrum.blue_plank_stairs": "Blaue Plank Treppen", - "block.spectrum.blue_plank_slab": "Blaue Plank Stufe", - "block.spectrum.blue_plank_fence_gate": "Blaue Plank Fence Gate", + "block.spectrum.blue_button": "Blaue Plank Button", + "block.spectrum.blue_fence": "Blaue Plank Fence", + "block.spectrum.blue_pressure_plate": "Blaue Plank Pressure Plate", + "block.spectrum.blue_stairs": "Blaue Plank Treppen", + "block.spectrum.blue_slab": "Blaue Plank Stufe", + "block.spectrum.blue_fence_gate": "Blaue Plank Fence Gate", "block.spectrum.brown_planks": "Braune Planken", - "block.spectrum.brown_plank_button": "Braune Plank Button", - "block.spectrum.brown_plank_fence": "Braune Plank Fence", - "block.spectrum.brown_plank_pressure_plate": "Braune Plank Pressure Plate", - "block.spectrum.brown_plank_stairs": "Braune Plank Treppen", - "block.spectrum.brown_plank_slab": "Braune Plank Stufe", - "block.spectrum.brown_plank_fence_gate": "Braune Plank Fence Gate", + "block.spectrum.brown_button": "Braune Plank Button", + "block.spectrum.brown_fence": "Braune Plank Fence", + "block.spectrum.brown_pressure_plate": "Braune Plank Pressure Plate", + "block.spectrum.brown_stairs": "Braune Plank Treppen", + "block.spectrum.brown_slab": "Braune Plank Stufe", + "block.spectrum.brown_fence_gate": "Braune Plank Fence Gate", "block.spectrum.cyan_planks": "Türkise Planken", - "block.spectrum.cyan_plank_button": "Türkise Plank Button", - "block.spectrum.cyan_plank_fence": "Türkise Plank Fence", - "block.spectrum.cyan_plank_pressure_plate": "Türkise Plank Pressure Plate", - "block.spectrum.cyan_plank_stairs": "Türkise Plank Treppen", - "block.spectrum.cyan_plank_slab": "Türkise Plank Stufe", - "block.spectrum.cyan_plank_fence_gate": "Türkise Plank Fence Gate", + "block.spectrum.cyan_button": "Türkise Plank Button", + "block.spectrum.cyan_fence": "Türkise Plank Fence", + "block.spectrum.cyan_pressure_plate": "Türkise Plank Pressure Plate", + "block.spectrum.cyan_stairs": "Türkise Plank Treppen", + "block.spectrum.cyan_slab": "Türkise Plank Stufe", + "block.spectrum.cyan_fence_gate": "Türkise Plank Fence Gate", "block.spectrum.gray_planks": "Graue Planken", - "block.spectrum.gray_plank_button": "Graue Plank Button", - "block.spectrum.gray_plank_fence": "Graue Plank Fence", - "block.spectrum.gray_plank_pressure_plate": "Graue Plank Pressure Plate", - "block.spectrum.gray_plank_stairs": "Graue Plank Treppen", - "block.spectrum.gray_plank_slab": "Graue Plank Stufe", - "block.spectrum.gray_plank_fence_gate": "Graue Plank Fence Gate", + "block.spectrum.gray_button": "Graue Plank Button", + "block.spectrum.gray_fence": "Graue Plank Fence", + "block.spectrum.gray_pressure_plate": "Graue Plank Pressure Plate", + "block.spectrum.gray_stairs": "Graue Plank Treppen", + "block.spectrum.gray_slab": "Graue Plank Stufe", + "block.spectrum.gray_fence_gate": "Graue Plank Fence Gate", "block.spectrum.green_planks": "Grüne Planken", - "block.spectrum.green_plank_button": "Grüne Plank Button", - "block.spectrum.green_plank_fence": "Grüne Plank Fence", - "block.spectrum.green_plank_pressure_plate": "Grüne Plank Pressure Plate", - "block.spectrum.green_plank_stairs": "Grüne Plank Treppen", - "block.spectrum.green_plank_slab": "Grüne Plank Stufe", - "block.spectrum.green_plank_fence_gate": "Grüne Plank Fence Gate", + "block.spectrum.green_button": "Grüne Plank Button", + "block.spectrum.green_fence": "Grüne Plank Fence", + "block.spectrum.green_pressure_plate": "Grüne Plank Pressure Plate", + "block.spectrum.green_stairs": "Grüne Plank Treppen", + "block.spectrum.green_slab": "Grüne Plank Stufe", + "block.spectrum.green_fence_gate": "Grüne Plank Fence Gate", "block.spectrum.light_blue_planks": "Hellblaue Planken", - "block.spectrum.light_blue_plank_button": "Hellblaue Plank Button", - "block.spectrum.light_blue_plank_fence": "Hellblaue Plank Fence", - "block.spectrum.light_blue_plank_pressure_plate": "Hellblaue Plank Pressure Plate", - "block.spectrum.light_blue_plank_stairs": "Hellblaue Plank Treppen", - "block.spectrum.light_blue_plank_slab": "Hellblaue Plank Stufe", - "block.spectrum.light_blue_plank_fence_gate": "Hellblaue Plank Fence Gate", + "block.spectrum.light_blue_button": "Hellblaue Plank Button", + "block.spectrum.light_blue_fence": "Hellblaue Plank Fence", + "block.spectrum.light_blue_pressure_plate": "Hellblaue Plank Pressure Plate", + "block.spectrum.light_blue_stairs": "Hellblaue Plank Treppen", + "block.spectrum.light_blue_slab": "Hellblaue Plank Stufe", + "block.spectrum.light_blue_fence_gate": "Hellblaue Plank Fence Gate", "block.spectrum.light_gray_planks": "Hellgraue Planken", - "block.spectrum.light_gray_plank_button": "Hellgraue Plank Button", - "block.spectrum.light_gray_plank_fence": "Hellgraue Plank Fence", - "block.spectrum.light_gray_plank_pressure_plate": "Hellgraue Plank Pressure Plate", - "block.spectrum.light_gray_plank_stairs": "Hellgraue Plank Treppen", - "block.spectrum.light_gray_plank_slab": "Hellgraue Plank Stufe", - "block.spectrum.light_gray_plank_fence_gate": "Hellgraue Plank Fence Gate", + "block.spectrum.light_gray_button": "Hellgraue Plank Button", + "block.spectrum.light_gray_fence": "Hellgraue Plank Fence", + "block.spectrum.light_gray_pressure_plate": "Hellgraue Plank Pressure Plate", + "block.spectrum.light_gray_stairs": "Hellgraue Plank Treppen", + "block.spectrum.light_gray_slab": "Hellgraue Plank Stufe", + "block.spectrum.light_gray_fence_gate": "Hellgraue Plank Fence Gate", "block.spectrum.lime_planks": "Türkise Planken", - "block.spectrum.lime_plank_button": "Türkiser Plank Button", - "block.spectrum.lime_plank_fence": "Türkise Plank Fence", - "block.spectrum.lime_plank_pressure_plate": "Türkise Plank Pressure Plate", - "block.spectrum.lime_plank_stairs": "Türkise Plank Treppen", - "block.spectrum.lime_plank_slab": "Türkise Plank Stufe", - "block.spectrum.lime_plank_fence_gate": "Türkise Plank Fence Gate", + "block.spectrum.lime_button": "Türkiser Plank Button", + "block.spectrum.lime_fence": "Türkise Plank Fence", + "block.spectrum.lime_pressure_plate": "Türkise Plank Pressure Plate", + "block.spectrum.lime_stairs": "Türkise Plank Treppen", + "block.spectrum.lime_slab": "Türkise Plank Stufe", + "block.spectrum.lime_fence_gate": "Türkise Plank Fence Gate", "block.spectrum.magenta_planks": "Magenta Planken", - "block.spectrum.magenta_plank_button": "Magenta Plank Button", - "block.spectrum.magenta_plank_fence": "Magenta Plank Fence", - "block.spectrum.magenta_plank_pressure_plate": "Magenta Plank Pressure Plate", - "block.spectrum.magenta_plank_stairs": "Magenta Plank Treppen", - "block.spectrum.magenta_plank_slab": "Magenta Plank Stufe", - "block.spectrum.magenta_plank_fence_gate": "Magenta Plank Fence Gate", + "block.spectrum.magenta_button": "Magenta Plank Button", + "block.spectrum.magenta_fence": "Magenta Plank Fence", + "block.spectrum.magenta_pressure_plate": "Magenta Plank Pressure Plate", + "block.spectrum.magenta_stairs": "Magenta Plank Treppen", + "block.spectrum.magenta_slab": "Magenta Plank Stufe", + "block.spectrum.magenta_fence_gate": "Magenta Plank Fence Gate", "block.spectrum.orange_planks": "Orangene Planken", - "block.spectrum.orange_plank_button": "Orangene Plank Button", - "block.spectrum.orange_plank_fence": "Orangene Plank Fence", - "block.spectrum.orange_plank_pressure_plate": "Orangene Plank Pressure Plate", - "block.spectrum.orange_plank_stairs": "Orangene Plank Treppen", - "block.spectrum.orange_plank_slab": "Orangene Plank Stufe", - "block.spectrum.orange_plank_fence_gate": "Orangene Plank Fence Gate", + "block.spectrum.orange_button": "Orangene Plank Button", + "block.spectrum.orange_fence": "Orangene Plank Fence", + "block.spectrum.orange_pressure_plate": "Orangene Plank Pressure Plate", + "block.spectrum.orange_stairs": "Orangene Plank Treppen", + "block.spectrum.orange_slab": "Orangene Plank Stufe", + "block.spectrum.orange_fence_gate": "Orangene Plank Fence Gate", "block.spectrum.pink_planks": "Pinke Planken", - "block.spectrum.pink_plank_button": "Pinke Plank Button", - "block.spectrum.pink_plank_fence": "Pinke Plank Fence", - "block.spectrum.pink_plank_pressure_plate": "Pinke Plank Pressure Plate", - "block.spectrum.pink_plank_stairs": "Pinke Plank Treppen", - "block.spectrum.pink_plank_slab": "Pinke Plank Stufe", - "block.spectrum.pink_plank_fence_gate": "Pinke Plank Fence Gate", + "block.spectrum.pink_button": "Pinke Plank Button", + "block.spectrum.pink_fence": "Pinke Plank Fence", + "block.spectrum.pink_pressure_plate": "Pinke Plank Pressure Plate", + "block.spectrum.pink_stairs": "Pinke Plank Treppen", + "block.spectrum.pink_slab": "Pinke Plank Stufe", + "block.spectrum.pink_fence_gate": "Pinke Plank Fence Gate", "block.spectrum.purple_planks": "Lila Planken", - "block.spectrum.purple_plank_button": "Lila Plank Button", - "block.spectrum.purple_plank_fence": "Lila Plank Fence", - "block.spectrum.purple_plank_pressure_plate": "Lila Plank Pressure Plate", - "block.spectrum.purple_plank_stairs": "Lila Plank Treppen", - "block.spectrum.purple_plank_slab": "Lila Plank Stufe", - "block.spectrum.purple_plank_fence_gate": "Lila Plank Fence Gate", + "block.spectrum.purple_button": "Lila Plank Button", + "block.spectrum.purple_fence": "Lila Plank Fence", + "block.spectrum.purple_pressure_plate": "Lila Plank Pressure Plate", + "block.spectrum.purple_stairs": "Lila Plank Treppen", + "block.spectrum.purple_slab": "Lila Plank Stufe", + "block.spectrum.purple_fence_gate": "Lila Plank Fence Gate", "block.spectrum.red_planks": "Rote Planken", - "block.spectrum.red_plank_button": "Rote Plank Button", - "block.spectrum.red_plank_fence": "Rote Plank Fence", - "block.spectrum.red_plank_pressure_plate": "Rote Plank Pressure Plate", - "block.spectrum.red_plank_stairs": "Rote Plank Treppen", - "block.spectrum.red_plank_slab": "Rote Plank Stufe", - "block.spectrum.red_plank_fence_gate": "Rote Plank Fence Gate", + "block.spectrum.red_button": "Rote Plank Button", + "block.spectrum.red_fence": "Rote Plank Fence", + "block.spectrum.red_pressure_plate": "Rote Plank Pressure Plate", + "block.spectrum.red_stairs": "Rote Plank Treppen", + "block.spectrum.red_slab": "Rote Plank Stufe", + "block.spectrum.red_fence_gate": "Rote Plank Fence Gate", "block.spectrum.white_planks": "Weiße Planken", - "block.spectrum.white_plank_button": "Weiße Plank Button", - "block.spectrum.white_plank_fence": "Weiße Plank Fence", - "block.spectrum.white_plank_pressure_plate": "Weiße Plank Pressure Plate", - "block.spectrum.white_plank_stairs": "Weiße Plank Treppen", - "block.spectrum.white_plank_slab": "Weiße Plank Stufe", - "block.spectrum.white_plank_fence_gate": "Weiße Plank Fence Gate", + "block.spectrum.white_button": "Weiße Plank Button", + "block.spectrum.white_fence": "Weiße Plank Fence", + "block.spectrum.white_pressure_plate": "Weiße Plank Pressure Plate", + "block.spectrum.white_stairs": "Weiße Plank Treppen", + "block.spectrum.white_slab": "Weiße Plank Stufe", + "block.spectrum.white_fence_gate": "Weiße Plank Fence Gate", "block.spectrum.yellow_planks": "Gelbe Planken", - "block.spectrum.yellow_plank_button": "Gelbe Plank Button", - "block.spectrum.yellow_plank_fence": "Gelbe Plank Fence", - "block.spectrum.yellow_plank_pressure_plate": "Gelbe Plank Pressure Plate", - "block.spectrum.yellow_plank_stairs": "Gelbe Plank Treppen", - "block.spectrum.yellow_plank_slab": "Gelbe Plank Stufe", - "block.spectrum.yellow_plank_fence_gate": "Gelbe Plank Fence Gate", + "block.spectrum.yellow_button": "Gelbe Plank Button", + "block.spectrum.yellow_fence": "Gelbe Plank Fence", + "block.spectrum.yellow_pressure_plate": "Gelbe Plank Pressure Plate", + "block.spectrum.yellow_stairs": "Gelbe Plank Treppen", + "block.spectrum.yellow_slab": "Gelbe Plank Stufe", + "block.spectrum.yellow_fence_gate": "Gelbe Plank Fence Gate", "item.spectrum.mud_bucket": "Eimer voll Schlamm", "block.spectrum.mud": "Schlamm", diff --git a/src/main/resources/assets/spectrum/lang/en_us.json b/src/main/resources/assets/spectrum/lang/en_us.json index f7a1606f7f..5baade9bb0 100644 --- a/src/main/resources/assets/spectrum/lang/en_us.json +++ b/src/main/resources/assets/spectrum/lang/en_us.json @@ -751,132 +751,132 @@ "block.spectrum.yellow_lamp": "Yellow Lamp", "block.spectrum.black_planks": "Black Planks", - "block.spectrum.black_plank_button": "Black Button", - "block.spectrum.black_plank_fence": "Black Fence", - "block.spectrum.black_plank_pressure_plate": "Black Pressure Plate", - "block.spectrum.black_plank_stairs": "Black Stairs", - "block.spectrum.black_plank_slab": "Black Slab", - "block.spectrum.black_plank_fence_gate": "Black Fence Gate", + "block.spectrum.black_button": "Black Button", + "block.spectrum.black_fence": "Black Fence", + "block.spectrum.black_pressure_plate": "Black Pressure Plate", + "block.spectrum.black_stairs": "Black Stairs", + "block.spectrum.black_slab": "Black Slab", + "block.spectrum.black_fence_gate": "Black Fence Gate", "block.spectrum.blue_planks": "Blue Planks", - "block.spectrum.blue_plank_button": "Blue Button", - "block.spectrum.blue_plank_fence": "Blue Fence", - "block.spectrum.blue_plank_pressure_plate": "Blue Pressure Plate", - "block.spectrum.blue_plank_stairs": "Blue Stairs", - "block.spectrum.blue_plank_slab": "Blue Slab", - "block.spectrum.blue_plank_fence_gate": "Blue Fence Gate", + "block.spectrum.blue_button": "Blue Button", + "block.spectrum.blue_fence": "Blue Fence", + "block.spectrum.blue_pressure_plate": "Blue Pressure Plate", + "block.spectrum.blue_stairs": "Blue Stairs", + "block.spectrum.blue_slab": "Blue Slab", + "block.spectrum.blue_fence_gate": "Blue Fence Gate", "block.spectrum.brown_planks": "Brown Planks", - "block.spectrum.brown_plank_button": "Brown Button", - "block.spectrum.brown_plank_fence": "Brown Fence", - "block.spectrum.brown_plank_pressure_plate": "Brown Pressure Plate", - "block.spectrum.brown_plank_stairs": "Brown Stairs", - "block.spectrum.brown_plank_slab": "Brown Slab", - "block.spectrum.brown_plank_fence_gate": "Brown Fence Gate", + "block.spectrum.brown_button": "Brown Button", + "block.spectrum.brown_fence": "Brown Fence", + "block.spectrum.brown_pressure_plate": "Brown Pressure Plate", + "block.spectrum.brown_stairs": "Brown Stairs", + "block.spectrum.brown_slab": "Brown Slab", + "block.spectrum.brown_fence_gate": "Brown Fence Gate", "block.spectrum.cyan_planks": "Cyan Planks", - "block.spectrum.cyan_plank_button": "Cyan Button", - "block.spectrum.cyan_plank_fence": "Cyan Fence", - "block.spectrum.cyan_plank_pressure_plate": "Cyan Pressure Plate", - "block.spectrum.cyan_plank_stairs": "Cyan Stairs", - "block.spectrum.cyan_plank_slab": "Cyan Slab", - "block.spectrum.cyan_plank_fence_gate": "Cyan Fence Gate", + "block.spectrum.cyan_button": "Cyan Button", + "block.spectrum.cyan_fence": "Cyan Fence", + "block.spectrum.cyan_pressure_plate": "Cyan Pressure Plate", + "block.spectrum.cyan_stairs": "Cyan Stairs", + "block.spectrum.cyan_slab": "Cyan Slab", + "block.spectrum.cyan_fence_gate": "Cyan Fence Gate", "block.spectrum.gray_planks": "Gray Planks", - "block.spectrum.gray_plank_button": "Gray Button", - "block.spectrum.gray_plank_fence": "Gray Fence", - "block.spectrum.gray_plank_pressure_plate": "Gray Pressure Plate", - "block.spectrum.gray_plank_stairs": "Gray Stairs", - "block.spectrum.gray_plank_slab": "Gray Slab", - "block.spectrum.gray_plank_fence_gate": "Gray Fence Gate", + "block.spectrum.gray_button": "Gray Button", + "block.spectrum.gray_fence": "Gray Fence", + "block.spectrum.gray_pressure_plate": "Gray Pressure Plate", + "block.spectrum.gray_stairs": "Gray Stairs", + "block.spectrum.gray_slab": "Gray Slab", + "block.spectrum.gray_fence_gate": "Gray Fence Gate", "block.spectrum.green_planks": "Green Planks", - "block.spectrum.green_plank_button": "Green Button", - "block.spectrum.green_plank_fence": "Green Fence", - "block.spectrum.green_plank_pressure_plate": "Green Pressure Plate", - "block.spectrum.green_plank_stairs": "Green Stairs", - "block.spectrum.green_plank_slab": "Green Slab", - "block.spectrum.green_plank_fence_gate": "Green Fence Gate", + "block.spectrum.green_button": "Green Button", + "block.spectrum.green_fence": "Green Fence", + "block.spectrum.green_pressure_plate": "Green Pressure Plate", + "block.spectrum.green_stairs": "Green Stairs", + "block.spectrum.green_slab": "Green Slab", + "block.spectrum.green_fence_gate": "Green Fence Gate", "block.spectrum.light_blue_planks": "Light Blue Planks", - "block.spectrum.light_blue_plank_button": "Light Blue Button", - "block.spectrum.light_blue_plank_fence": "Light Blue Fence", - "block.spectrum.light_blue_plank_pressure_plate": "Light Blue Pressure Plate", - "block.spectrum.light_blue_plank_stairs": "Light Blue Stairs", - "block.spectrum.light_blue_plank_slab": "Light Blue Slab", - "block.spectrum.light_blue_plank_fence_gate": "Light Blue Fence Gate", + "block.spectrum.light_blue_button": "Light Blue Button", + "block.spectrum.light_blue_fence": "Light Blue Fence", + "block.spectrum.light_blue_pressure_plate": "Light Blue Pressure Plate", + "block.spectrum.light_blue_stairs": "Light Blue Stairs", + "block.spectrum.light_blue_slab": "Light Blue Slab", + "block.spectrum.light_blue_fence_gate": "Light Blue Fence Gate", "block.spectrum.light_gray_planks": "Light Gray Planks", - "block.spectrum.light_gray_plank_button": "Light Gray Button", - "block.spectrum.light_gray_plank_fence": "Light Gray Fence", - "block.spectrum.light_gray_plank_pressure_plate": "Light Gray Pressure Plate", - "block.spectrum.light_gray_plank_stairs": "Light Gray Stairs", - "block.spectrum.light_gray_plank_slab": "Light Gray Slab", - "block.spectrum.light_gray_plank_fence_gate": "Light Gray Fence Gate", + "block.spectrum.light_gray_button": "Light Gray Button", + "block.spectrum.light_gray_fence": "Light Gray Fence", + "block.spectrum.light_gray_pressure_plate": "Light Gray Pressure Plate", + "block.spectrum.light_gray_stairs": "Light Gray Stairs", + "block.spectrum.light_gray_slab": "Light Gray Slab", + "block.spectrum.light_gray_fence_gate": "Light Gray Fence Gate", "block.spectrum.lime_planks": "Lime Planks", - "block.spectrum.lime_plank_button": "Lime Button", - "block.spectrum.lime_plank_fence": "Lime Fence", - "block.spectrum.lime_plank_pressure_plate": "Lime Pressure Plate", - "block.spectrum.lime_plank_stairs": "Lime Stairs", - "block.spectrum.lime_plank_slab": "Lime Slab", - "block.spectrum.lime_plank_fence_gate": "Lime Fence Gate", + "block.spectrum.lime_button": "Lime Button", + "block.spectrum.lime_fence": "Lime Fence", + "block.spectrum.lime_pressure_plate": "Lime Pressure Plate", + "block.spectrum.lime_stairs": "Lime Stairs", + "block.spectrum.lime_slab": "Lime Slab", + "block.spectrum.lime_fence_gate": "Lime Fence Gate", "block.spectrum.magenta_planks": "Magenta Planks", - "block.spectrum.magenta_plank_button": "Magenta Button", - "block.spectrum.magenta_plank_fence": "Magenta Fence", - "block.spectrum.magenta_plank_pressure_plate": "Magenta Pressure Plate", - "block.spectrum.magenta_plank_stairs": "Magenta Stairs", - "block.spectrum.magenta_plank_slab": "Magenta Slab", - "block.spectrum.magenta_plank_fence_gate": "Magenta Fence Gate", + "block.spectrum.magenta_button": "Magenta Button", + "block.spectrum.magenta_fence": "Magenta Fence", + "block.spectrum.magenta_pressure_plate": "Magenta Pressure Plate", + "block.spectrum.magenta_stairs": "Magenta Stairs", + "block.spectrum.magenta_slab": "Magenta Slab", + "block.spectrum.magenta_fence_gate": "Magenta Fence Gate", "block.spectrum.orange_planks": "Orange Planks", - "block.spectrum.orange_plank_button": "Orange Button", - "block.spectrum.orange_plank_fence": "Orange Fence", - "block.spectrum.orange_plank_pressure_plate": "Orange Pressure Plate", - "block.spectrum.orange_plank_stairs": "Orange Stairs", - "block.spectrum.orange_plank_slab": "Orange Slab", - "block.spectrum.orange_plank_fence_gate": "Orange Fence Gate", + "block.spectrum.orange_button": "Orange Button", + "block.spectrum.orange_fence": "Orange Fence", + "block.spectrum.orange_pressure_plate": "Orange Pressure Plate", + "block.spectrum.orange_stairs": "Orange Stairs", + "block.spectrum.orange_slab": "Orange Slab", + "block.spectrum.orange_fence_gate": "Orange Fence Gate", "block.spectrum.pink_planks": "Pink Planks", - "block.spectrum.pink_plank_button": "Pink Button", - "block.spectrum.pink_plank_fence": "Pink Fence", - "block.spectrum.pink_plank_pressure_plate": "Pink Pressure Plate", - "block.spectrum.pink_plank_stairs": "Pink Stairs", - "block.spectrum.pink_plank_slab": "Pink Slab", - "block.spectrum.pink_plank_fence_gate": "Pink Fence Gate", + "block.spectrum.pink_button": "Pink Button", + "block.spectrum.pink_fence": "Pink Fence", + "block.spectrum.pink_pressure_plate": "Pink Pressure Plate", + "block.spectrum.pink_stairs": "Pink Stairs", + "block.spectrum.pink_slab": "Pink Slab", + "block.spectrum.pink_fence_gate": "Pink Fence Gate", "block.spectrum.purple_planks": "Purple Planks", - "block.spectrum.purple_plank_button": "Purple Button", - "block.spectrum.purple_plank_fence": "Purple Fence", - "block.spectrum.purple_plank_pressure_plate": "Purple Pressure Plate", - "block.spectrum.purple_plank_stairs": "Purple Stairs", - "block.spectrum.purple_plank_slab": "Purple Slab", - "block.spectrum.purple_plank_fence_gate": "Purple Fence Gate", + "block.spectrum.purple_button": "Purple Button", + "block.spectrum.purple_fence": "Purple Fence", + "block.spectrum.purple_pressure_plate": "Purple Pressure Plate", + "block.spectrum.purple_stairs": "Purple Stairs", + "block.spectrum.purple_slab": "Purple Slab", + "block.spectrum.purple_fence_gate": "Purple Fence Gate", "block.spectrum.red_planks": "Red Planks", - "block.spectrum.red_plank_button": "Red Button", - "block.spectrum.red_plank_fence": "Red Fence", - "block.spectrum.red_plank_pressure_plate": "Red Pressure Plate", - "block.spectrum.red_plank_stairs": "Red Stairs", - "block.spectrum.red_plank_slab": "Red Slab", - "block.spectrum.red_plank_fence_gate": "Red Fence Gate", + "block.spectrum.red_button": "Red Button", + "block.spectrum.red_fence": "Red Fence", + "block.spectrum.red_pressure_plate": "Red Pressure Plate", + "block.spectrum.red_stairs": "Red Stairs", + "block.spectrum.red_slab": "Red Slab", + "block.spectrum.red_fence_gate": "Red Fence Gate", "block.spectrum.white_planks": "White Planks", - "block.spectrum.white_plank_button": "White Button", - "block.spectrum.white_plank_fence": "White Fence", - "block.spectrum.white_plank_pressure_plate": "White Pressure Plate", - "block.spectrum.white_plank_stairs": "White Stairs", - "block.spectrum.white_plank_slab": "White Slab", - "block.spectrum.white_plank_fence_gate": "White Fence Gate", + "block.spectrum.white_button": "White Button", + "block.spectrum.white_fence": "White Fence", + "block.spectrum.white_pressure_plate": "White Pressure Plate", + "block.spectrum.white_stairs": "White Stairs", + "block.spectrum.white_slab": "White Slab", + "block.spectrum.white_fence_gate": "White Fence Gate", "block.spectrum.yellow_planks": "Yellow Planks", - "block.spectrum.yellow_plank_button": "Yellow Button", - "block.spectrum.yellow_plank_fence": "Yellow Fence", - "block.spectrum.yellow_plank_pressure_plate": "Yellow Pressure Plate", - "block.spectrum.yellow_plank_stairs": "Yellow Stairs", - "block.spectrum.yellow_plank_slab": "Yellow Slab", - "block.spectrum.yellow_plank_fence_gate": "Yellow Fence Gate", + "block.spectrum.yellow_button": "Yellow Button", + "block.spectrum.yellow_fence": "Yellow Fence", + "block.spectrum.yellow_pressure_plate": "Yellow Pressure Plate", + "block.spectrum.yellow_stairs": "Yellow Stairs", + "block.spectrum.yellow_slab": "Yellow Slab", + "block.spectrum.yellow_fence_gate": "Yellow Fence Gate", "item.spectrum.mud_bucket": "Bucket of Mud", "block.spectrum.mud": "Mud", diff --git a/src/main/resources/assets/spectrum/lang/pt_br.json b/src/main/resources/assets/spectrum/lang/pt_br.json index 4d633b82b2..cf89af9c6d 100644 --- a/src/main/resources/assets/spectrum/lang/pt_br.json +++ b/src/main/resources/assets/spectrum/lang/pt_br.json @@ -576,132 +576,132 @@ "block.spectrum.yellow_lamp": "Lâmpada Amarela", "block.spectrum.black_planks": "Tábuas Pretas", - "block.spectrum.black_plank_button": "Botão de Tábua Preta", - "block.spectrum.black_plank_fence": "Cerca de Tábua Preta", - "block.spectrum.black_plank_pressure_plate": "Placa de Pressão de Tábua Preta", - "block.spectrum.black_plank_stairs": "Escadas de Tábua Preta", - "block.spectrum.black_plank_slab": "Lage de Tábua Preta", - "block.spectrum.black_plank_fence_gate": "Portão de Tábua Preta", + "block.spectrum.black_button": "Botão de Tábua Preta", + "block.spectrum.black_fence": "Cerca de Tábua Preta", + "block.spectrum.black_pressure_plate": "Placa de Pressão de Tábua Preta", + "block.spectrum.black_stairs": "Escadas de Tábua Preta", + "block.spectrum.black_slab": "Lage de Tábua Preta", + "block.spectrum.black_fence_gate": "Portão de Tábua Preta", "block.spectrum.blue_planks": "Tábuas Azuis", - "block.spectrum.blue_plank_button": "Botão de Tábua Azul", - "block.spectrum.blue_plank_fence": "Cerca de Tábua Azul", - "block.spectrum.blue_plank_pressure_plate": "Placa de Pressão de Tábua Azul", - "block.spectrum.blue_plank_stairs": "Escadas de Tábua Azul", - "block.spectrum.blue_plank_slab": "Lage de Tábua Azul", - "block.spectrum.blue_plank_fence_gate": "Portão de Tábua Azul", + "block.spectrum.blue_button": "Botão de Tábua Azul", + "block.spectrum.blue_fence": "Cerca de Tábua Azul", + "block.spectrum.blue_pressure_plate": "Placa de Pressão de Tábua Azul", + "block.spectrum.blue_stairs": "Escadas de Tábua Azul", + "block.spectrum.blue_slab": "Lage de Tábua Azul", + "block.spectrum.blue_fence_gate": "Portão de Tábua Azul", "block.spectrum.brown_planks": "Tábuas Marrons", - "block.spectrum.brown_plank_button": "Botão de Tábua Marrom", - "block.spectrum.brown_plank_fence": "Cerca de Tábua Marrom", - "block.spectrum.brown_plank_pressure_plate": "Placa de Pressão de Tábua Marrom", - "block.spectrum.brown_plank_stairs": "Escadas de Tábua Marrom", - "block.spectrum.brown_plank_slab": "Lage de Tábua Marrom", - "block.spectrum.brown_plank_fence_gate": "Portão de Tábua Marrom", + "block.spectrum.brown_button": "Botão de Tábua Marrom", + "block.spectrum.brown_fence": "Cerca de Tábua Marrom", + "block.spectrum.brown_pressure_plate": "Placa de Pressão de Tábua Marrom", + "block.spectrum.brown_stairs": "Escadas de Tábua Marrom", + "block.spectrum.brown_slab": "Lage de Tábua Marrom", + "block.spectrum.brown_fence_gate": "Portão de Tábua Marrom", "block.spectrum.cyan_planks": "Tábuas Cianas", - "block.spectrum.cyan_plank_button": "Botão de Tábua Ciana", - "block.spectrum.cyan_plank_fence": "Cerca de Tábua Ciana", - "block.spectrum.cyan_plank_pressure_plate": "Placa de Pressão de Tábua Ciana", - "block.spectrum.cyan_plank_stairs": "Escadas de Tábua Ciana", - "block.spectrum.cyan_plank_slab": "Lage de Tábua Ciana", - "block.spectrum.cyan_plank_fence_gate": "Portão de Tábua Ciana", + "block.spectrum.cyan_button": "Botão de Tábua Ciana", + "block.spectrum.cyan_fence": "Cerca de Tábua Ciana", + "block.spectrum.cyan_pressure_plate": "Placa de Pressão de Tábua Ciana", + "block.spectrum.cyan_stairs": "Escadas de Tábua Ciana", + "block.spectrum.cyan_slab": "Lage de Tábua Ciana", + "block.spectrum.cyan_fence_gate": "Portão de Tábua Ciana", "block.spectrum.gray_planks": "Tábuas Cinzas", - "block.spectrum.gray_plank_button": "Botão de Tábua Cinza", - "block.spectrum.gray_plank_fence": "Cerca de Tábua Cinza", - "block.spectrum.gray_plank_pressure_plate": "Placa de Pressão de Tábua Cinza", - "block.spectrum.gray_plank_stairs": "Escadas de Tábua Cinza", - "block.spectrum.gray_plank_slab": "Lage de Tábua Cinza", - "block.spectrum.gray_plank_fence_gate": "Portão de Tábua Cinza", + "block.spectrum.gray_button": "Botão de Tábua Cinza", + "block.spectrum.gray_fence": "Cerca de Tábua Cinza", + "block.spectrum.gray_pressure_plate": "Placa de Pressão de Tábua Cinza", + "block.spectrum.gray_stairs": "Escadas de Tábua Cinza", + "block.spectrum.gray_slab": "Lage de Tábua Cinza", + "block.spectrum.gray_fence_gate": "Portão de Tábua Cinza", "block.spectrum.green_planks": "Tábuas Verdes", - "block.spectrum.green_plank_button": "Botão de Tábua Verde", - "block.spectrum.green_plank_fence": "Cerca de Tábua Verde", - "block.spectrum.green_plank_pressure_plate": "Placa de Pressão de Tábua Verde", - "block.spectrum.green_plank_stairs": "Escadas de Tábua Verde", - "block.spectrum.green_plank_slab": "Lage de Tábua Verde", - "block.spectrum.green_plank_fence_gate": "Portão de Tábua Verde", + "block.spectrum.green_button": "Botão de Tábua Verde", + "block.spectrum.green_fence": "Cerca de Tábua Verde", + "block.spectrum.green_pressure_plate": "Placa de Pressão de Tábua Verde", + "block.spectrum.green_stairs": "Escadas de Tábua Verde", + "block.spectrum.green_slab": "Lage de Tábua Verde", + "block.spectrum.green_fence_gate": "Portão de Tábua Verde", "block.spectrum.light_blue_planks": "Tábuas Azul-Claro", - "block.spectrum.light_blue_plank_button": "Botão de Tábua Azul-Claro", - "block.spectrum.light_blue_plank_fence": "Cerca de Tábua Azul-Claro", - "block.spectrum.light_blue_plank_pressure_plate": "Placa de Pressão de Tábua Azul-Claro", - "block.spectrum.light_blue_plank_stairs": "Escadas de Tábua Azul-Claro", - "block.spectrum.light_blue_plank_slab": "Lage de Tábua Azul-Claro", - "block.spectrum.light_blue_plank_fence_gate": "Portão de Tábua Azul-Claro", + "block.spectrum.light_blue_button": "Botão de Tábua Azul-Claro", + "block.spectrum.light_blue_fence": "Cerca de Tábua Azul-Claro", + "block.spectrum.light_blue_pressure_plate": "Placa de Pressão de Tábua Azul-Claro", + "block.spectrum.light_blue_stairs": "Escadas de Tábua Azul-Claro", + "block.spectrum.light_blue_slab": "Lage de Tábua Azul-Claro", + "block.spectrum.light_blue_fence_gate": "Portão de Tábua Azul-Claro", "block.spectrum.light_gray_planks": "Tábuas Cinza-Claro", - "block.spectrum.light_gray_plank_button": "Botão de Tábua Cinza-Claro", - "block.spectrum.light_gray_plank_fence": "Cerca de Tábua Cinza-Claro", - "block.spectrum.light_gray_plank_pressure_plate": "Placa de Pressão de Tábua Cinza-Claro", - "block.spectrum.light_gray_plank_stairs": "Escadas de Tábua Cinza-Claro", - "block.spectrum.light_gray_plank_slab": "Lage de Tábua Cinza-Claro", - "block.spectrum.light_gray_plank_fence_gate": "Portão de Tábua Cinza-Claro", + "block.spectrum.light_gray_button": "Botão de Tábua Cinza-Claro", + "block.spectrum.light_gray_fence": "Cerca de Tábua Cinza-Claro", + "block.spectrum.light_gray_pressure_plate": "Placa de Pressão de Tábua Cinza-Claro", + "block.spectrum.light_gray_stairs": "Escadas de Tábua Cinza-Claro", + "block.spectrum.light_gray_slab": "Lage de Tábua Cinza-Claro", + "block.spectrum.light_gray_fence_gate": "Portão de Tábua Cinza-Claro", "block.spectrum.lime_planks": "Tábuas Verde-Limão", - "block.spectrum.lime_plank_button": "Botão de Tábua Verde-Limão", - "block.spectrum.lime_plank_fence": "Cerca de Tábua Verde-Limão", - "block.spectrum.lime_plank_pressure_plate": "Placa de Pressão de Tábua Verde-Limão", - "block.spectrum.lime_plank_stairs": "Escadas de Tábua Verde-Limão", - "block.spectrum.lime_plank_slab": "Lage de Tábua Verde-Limão", - "block.spectrum.lime_plank_fence_gate": "Portão de Tábua Verde-Limão", + "block.spectrum.lime_button": "Botão de Tábua Verde-Limão", + "block.spectrum.lime_fence": "Cerca de Tábua Verde-Limão", + "block.spectrum.lime_pressure_plate": "Placa de Pressão de Tábua Verde-Limão", + "block.spectrum.lime_stairs": "Escadas de Tábua Verde-Limão", + "block.spectrum.lime_slab": "Lage de Tábua Verde-Limão", + "block.spectrum.lime_fence_gate": "Portão de Tábua Verde-Limão", "block.spectrum.magenta_planks": "Tábuas Magentas", - "block.spectrum.magenta_plank_button": "Botão de Tábua Magenta", - "block.spectrum.magenta_plank_fence": "Cerca de Tábua Magenta", - "block.spectrum.magenta_plank_pressure_plate": "Placa de Pressão de Tábua Magenta", - "block.spectrum.magenta_plank_stairs": "Escadas de Tábua Magenta", - "block.spectrum.magenta_plank_slab": "Lage de Tábua Magenta", - "block.spectrum.magenta_plank_fence_gate": "Portão de Tábua Magenta", + "block.spectrum.magenta_button": "Botão de Tábua Magenta", + "block.spectrum.magenta_fence": "Cerca de Tábua Magenta", + "block.spectrum.magenta_pressure_plate": "Placa de Pressão de Tábua Magenta", + "block.spectrum.magenta_stairs": "Escadas de Tábua Magenta", + "block.spectrum.magenta_slab": "Lage de Tábua Magenta", + "block.spectrum.magenta_fence_gate": "Portão de Tábua Magenta", "block.spectrum.orange_planks": "Tábuas Laranajas", - "block.spectrum.orange_plank_button": "Botão de Tábua Laranaja", - "block.spectrum.orange_plank_fence": "Cerca de Tábua Laranaja", - "block.spectrum.orange_plank_pressure_plate": "Placa de Pressão de Tábua Laranaja", - "block.spectrum.orange_plank_stairs": "Escadas de Tábua Laranaja", - "block.spectrum.orange_plank_slab": "Lage de Tábua Laranaja", - "block.spectrum.orange_plank_fence_gate": "Portão de Tábua Laranaja", + "block.spectrum.orange_button": "Botão de Tábua Laranaja", + "block.spectrum.orange_fence": "Cerca de Tábua Laranaja", + "block.spectrum.orange_pressure_plate": "Placa de Pressão de Tábua Laranaja", + "block.spectrum.orange_stairs": "Escadas de Tábua Laranaja", + "block.spectrum.orange_slab": "Lage de Tábua Laranaja", + "block.spectrum.orange_fence_gate": "Portão de Tábua Laranaja", "block.spectrum.pink_planks": "Tábuas Rosas", - "block.spectrum.pink_plank_button": "Botão de Tábua Rosa", - "block.spectrum.pink_plank_fence": "Cerca de Tábua Rosa", - "block.spectrum.pink_plank_pressure_plate": "Placa de Pressão de Tábua Rosa", - "block.spectrum.pink_plank_stairs": "Escadas de Tábua Rosa", - "block.spectrum.pink_plank_slab": "Lage de Tábua Rosa", - "block.spectrum.pink_plank_fence_gate": "Portão de Tábua Rosa", + "block.spectrum.pink_button": "Botão de Tábua Rosa", + "block.spectrum.pink_fence": "Cerca de Tábua Rosa", + "block.spectrum.pink_pressure_plate": "Placa de Pressão de Tábua Rosa", + "block.spectrum.pink_stairs": "Escadas de Tábua Rosa", + "block.spectrum.pink_slab": "Lage de Tábua Rosa", + "block.spectrum.pink_fence_gate": "Portão de Tábua Rosa", "block.spectrum.purple_planks": "Tábuas Roxas", - "block.spectrum.purple_plank_button": "Botão de Tábua Roxa", - "block.spectrum.purple_plank_fence": "Cerca de Tábua Roxa", - "block.spectrum.purple_plank_pressure_plate": "Placa de Pressão de Tábua Roxa", - "block.spectrum.purple_plank_stairs": "Escadas de Tábua Roxa", - "block.spectrum.purple_plank_slab": "Lage de Tábua Roxa", - "block.spectrum.purple_plank_fence_gate": "Portão de Tábua Roxa", + "block.spectrum.purple_button": "Botão de Tábua Roxa", + "block.spectrum.purple_fence": "Cerca de Tábua Roxa", + "block.spectrum.purple_pressure_plate": "Placa de Pressão de Tábua Roxa", + "block.spectrum.purple_stairs": "Escadas de Tábua Roxa", + "block.spectrum.purple_slab": "Lage de Tábua Roxa", + "block.spectrum.purple_fence_gate": "Portão de Tábua Roxa", "block.spectrum.red_planks": "Tábuas Vermelhas", - "block.spectrum.red_plank_button": "Botão de Tábua Vermelha", - "block.spectrum.red_plank_fence": "Cerca de Tábua Vermelha", - "block.spectrum.red_plank_pressure_plate": "Placa de Pressão de Tábua Vermelha", - "block.spectrum.red_plank_stairs": "Escadas de Tábua Vermelha", - "block.spectrum.red_plank_slab": "Lage de Tábua Vermelha", - "block.spectrum.red_plank_fence_gate": "Portão de Tábua Vermelha", + "block.spectrum.red_button": "Botão de Tábua Vermelha", + "block.spectrum.red_fence": "Cerca de Tábua Vermelha", + "block.spectrum.red_pressure_plate": "Placa de Pressão de Tábua Vermelha", + "block.spectrum.red_stairs": "Escadas de Tábua Vermelha", + "block.spectrum.red_slab": "Lage de Tábua Vermelha", + "block.spectrum.red_fence_gate": "Portão de Tábua Vermelha", "block.spectrum.white_planks": "Tábuas Brancas", - "block.spectrum.white_plank_button": "Botão de Tábua Branca", - "block.spectrum.white_plank_fence": "Cerca de Tábua Branca", - "block.spectrum.white_plank_pressure_plate": "Placa de Pressão de Tábua Branca", - "block.spectrum.white_plank_stairs": "Escadas de Tábua Branca", - "block.spectrum.white_plank_slab": "Lage de Tábua Branca", - "block.spectrum.white_plank_fence_gate": "Portão de Tábua Branca", + "block.spectrum.white_button": "Botão de Tábua Branca", + "block.spectrum.white_fence": "Cerca de Tábua Branca", + "block.spectrum.white_pressure_plate": "Placa de Pressão de Tábua Branca", + "block.spectrum.white_stairs": "Escadas de Tábua Branca", + "block.spectrum.white_slab": "Lage de Tábua Branca", + "block.spectrum.white_fence_gate": "Portão de Tábua Branca", "block.spectrum.yellow_planks": "Tábuas Amarelas", - "block.spectrum.yellow_plank_button": "Botão de Tábua Amarela", - "block.spectrum.yellow_plank_fence": "Cerca de Tábua Amarela", - "block.spectrum.yellow_plank_pressure_plate": "Placa de Pressão de Tábua Amarela", - "block.spectrum.yellow_plank_stairs": "Escadas de Tábua Amarela", - "block.spectrum.yellow_plank_slab": "Lage de Tábua Amarela", - "block.spectrum.yellow_plank_fence_gate": "Portão de Tábua Amarela", + "block.spectrum.yellow_button": "Botão de Tábua Amarela", + "block.spectrum.yellow_fence": "Cerca de Tábua Amarela", + "block.spectrum.yellow_pressure_plate": "Placa de Pressão de Tábua Amarela", + "block.spectrum.yellow_stairs": "Escadas de Tábua Amarela", + "block.spectrum.yellow_slab": "Lage de Tábua Amarela", + "block.spectrum.yellow_fence_gate": "Portão de Tábua Amarela", "item.spectrum.mud_bucket": "Balde de Lama", "block.spectrum.mud": "Lama", diff --git a/src/main/resources/assets/spectrum/lang/zh_cn.json b/src/main/resources/assets/spectrum/lang/zh_cn.json index 3eaf6f256b..e5d9e6353f 100644 --- a/src/main/resources/assets/spectrum/lang/zh_cn.json +++ b/src/main/resources/assets/spectrum/lang/zh_cn.json @@ -648,117 +648,117 @@ "block.spectrum.white_lamp": "白色红石灯", "block.spectrum.yellow_lamp": "黄色红石灯", "block.spectrum.black_planks": "黑色木板", - "block.spectrum.black_plank_button": "黑色木按钮", - "block.spectrum.black_plank_fence": "黑色木栅栏", - "block.spectrum.black_plank_pressure_plate": "黑色木压力板", - "block.spectrum.black_plank_stairs": "黑色木楼梯", - "block.spectrum.black_plank_slab": "黑色木台阶", - "block.spectrum.black_plank_fence_gate": "黑色木栅栏门", + "block.spectrum.black_button": "黑色木按钮", + "block.spectrum.black_fence": "黑色木栅栏", + "block.spectrum.black_pressure_plate": "黑色木压力板", + "block.spectrum.black_stairs": "黑色木楼梯", + "block.spectrum.black_slab": "黑色木台阶", + "block.spectrum.black_fence_gate": "黑色木栅栏门", "block.spectrum.blue_planks": "蓝色木板", - "block.spectrum.blue_plank_button": "蓝色木按钮", - "block.spectrum.blue_plank_fence": "蓝色木栅栏", - "block.spectrum.blue_plank_pressure_plate": "蓝色木压力板", - "block.spectrum.blue_plank_stairs": "蓝色木楼梯", - "block.spectrum.blue_plank_slab": "蓝色木台阶", - "block.spectrum.blue_plank_fence_gate": "蓝色木栅栏门", + "block.spectrum.blue_button": "蓝色木按钮", + "block.spectrum.blue_fence": "蓝色木栅栏", + "block.spectrum.blue_pressure_plate": "蓝色木压力板", + "block.spectrum.blue_stairs": "蓝色木楼梯", + "block.spectrum.blue_slab": "蓝色木台阶", + "block.spectrum.blue_fence_gate": "蓝色木栅栏门", "block.spectrum.brown_planks": "棕色木板", - "block.spectrum.brown_plank_button": "棕色木按钮", - "block.spectrum.brown_plank_fence": "棕色木栅栏", - "block.spectrum.brown_plank_pressure_plate": "棕色木压力板", - "block.spectrum.brown_plank_stairs": "棕色木楼梯", - "block.spectrum.brown_plank_slab": "棕色木台阶", - "block.spectrum.brown_plank_fence_gate": "棕色木栅栏门", + "block.spectrum.brown_button": "棕色木按钮", + "block.spectrum.brown_fence": "棕色木栅栏", + "block.spectrum.brown_pressure_plate": "棕色木压力板", + "block.spectrum.brown_stairs": "棕色木楼梯", + "block.spectrum.brown_slab": "棕色木台阶", + "block.spectrum.brown_fence_gate": "棕色木栅栏门", "block.spectrum.cyan_planks": "青色木板s", - "block.spectrum.cyan_plank_button": "青色木按钮", - "block.spectrum.cyan_plank_fence": "青色木栅栏", - "block.spectrum.cyan_plank_pressure_plate": "青色木压力板", - "block.spectrum.cyan_plank_stairs": "青色木楼梯", - "block.spectrum.cyan_plank_slab": "青色木台阶", - "block.spectrum.cyan_plank_fence_gate": "青色木栅栏门", + "block.spectrum.cyan_button": "青色木按钮", + "block.spectrum.cyan_fence": "青色木栅栏", + "block.spectrum.cyan_pressure_plate": "青色木压力板", + "block.spectrum.cyan_stairs": "青色木楼梯", + "block.spectrum.cyan_slab": "青色木台阶", + "block.spectrum.cyan_fence_gate": "青色木栅栏门", "block.spectrum.gray_planks": "灰色木板", - "block.spectrum.gray_plank_button": "灰色木按钮", - "block.spectrum.gray_plank_fence": "灰色木栅栏", - "block.spectrum.gray_plank_pressure_plate": "灰色木压力板", - "block.spectrum.gray_plank_stairs": "灰色木楼梯", - "block.spectrum.gray_plank_slab": "灰色木台阶", - "block.spectrum.gray_plank_fence_gate": "灰色木栅栏门", + "block.spectrum.gray_button": "灰色木按钮", + "block.spectrum.gray_fence": "灰色木栅栏", + "block.spectrum.gray_pressure_plate": "灰色木压力板", + "block.spectrum.gray_stairs": "灰色木楼梯", + "block.spectrum.gray_slab": "灰色木台阶", + "block.spectrum.gray_fence_gate": "灰色木栅栏门", "block.spectrum.green_planks": "绿色木板", - "block.spectrum.green_plank_button": "绿色木按钮", - "block.spectrum.green_plank_fence": "绿色木栅栏", - "block.spectrum.green_plank_pressure_plate": "绿色木压力板", - "block.spectrum.green_plank_stairs": "绿色木楼梯", - "block.spectrum.green_plank_slab": "绿色木台阶", - "block.spectrum.green_plank_fence_gate": "绿色木栅栏门", + "block.spectrum.green_button": "绿色木按钮", + "block.spectrum.green_fence": "绿色木栅栏", + "block.spectrum.green_pressure_plate": "绿色木压力板", + "block.spectrum.green_stairs": "绿色木楼梯", + "block.spectrum.green_slab": "绿色木台阶", + "block.spectrum.green_fence_gate": "绿色木栅栏门", "block.spectrum.light_blue_planks": "淡蓝色木板", - "block.spectrum.light_blue_plank_button": "淡蓝色木按钮", - "block.spectrum.light_blue_plank_fence": "淡蓝色木栅栏", - "block.spectrum.light_blue_plank_pressure_plate": "淡蓝色木压力板", - "block.spectrum.light_blue_plank_stairs": "淡蓝色木楼梯", - "block.spectrum.light_blue_plank_slab": "淡蓝色木台阶", - "block.spectrum.light_blue_plank_fence_gate": "淡蓝色木栅栏门", + "block.spectrum.light_blue_button": "淡蓝色木按钮", + "block.spectrum.light_blue_fence": "淡蓝色木栅栏", + "block.spectrum.light_blue_pressure_plate": "淡蓝色木压力板", + "block.spectrum.light_blue_stairs": "淡蓝色木楼梯", + "block.spectrum.light_blue_slab": "淡蓝色木台阶", + "block.spectrum.light_blue_fence_gate": "淡蓝色木栅栏门", "block.spectrum.light_gray_planks": "淡灰色木板", - "block.spectrum.light_gray_plank_button": "淡灰色木按钮", - "block.spectrum.light_gray_plank_fence": "淡灰色木栅栏", - "block.spectrum.light_gray_plank_pressure_plate": "淡灰色木压力板", - "block.spectrum.light_gray_plank_stairs": "淡灰色木楼梯", - "block.spectrum.light_gray_plank_slab": "淡灰色木台阶", - "block.spectrum.light_gray_plank_fence_gate": "淡灰色木栅栏门", + "block.spectrum.light_gray_button": "淡灰色木按钮", + "block.spectrum.light_gray_fence": "淡灰色木栅栏", + "block.spectrum.light_gray_pressure_plate": "淡灰色木压力板", + "block.spectrum.light_gray_stairs": "淡灰色木楼梯", + "block.spectrum.light_gray_slab": "淡灰色木台阶", + "block.spectrum.light_gray_fence_gate": "淡灰色木栅栏门", "block.spectrum.lime_planks": "黄绿色木板", - "block.spectrum.lime_plank_button": "黄绿色木按钮", - "block.spectrum.lime_plank_fence": "黄绿色木栅栏", - "block.spectrum.lime_plank_pressure_plate": "黄绿色木压力板", - "block.spectrum.lime_plank_stairs": "黄绿色木楼梯", - "block.spectrum.lime_plank_slab": "黄绿色木台阶", - "block.spectrum.lime_plank_fence_gate": "黄绿色木栅栏门", + "block.spectrum.lime_button": "黄绿色木按钮", + "block.spectrum.lime_fence": "黄绿色木栅栏", + "block.spectrum.lime_pressure_plate": "黄绿色木压力板", + "block.spectrum.lime_stairs": "黄绿色木楼梯", + "block.spectrum.lime_slab": "黄绿色木台阶", + "block.spectrum.lime_fence_gate": "黄绿色木栅栏门", "block.spectrum.magenta_planks": "品红色木板", - "block.spectrum.magenta_plank_button": "品红色木按钮", - "block.spectrum.magenta_plank_fence": "品红色木栅栏", - "block.spectrum.magenta_plank_pressure_plate": "品红色木压力板", - "block.spectrum.magenta_plank_stairs": "品红色木楼梯", - "block.spectrum.magenta_plank_slab": "品红色木台阶", - "block.spectrum.magenta_plank_fence_gate": "品红色木栅栏门", + "block.spectrum.magenta_button": "品红色木按钮", + "block.spectrum.magenta_fence": "品红色木栅栏", + "block.spectrum.magenta_pressure_plate": "品红色木压力板", + "block.spectrum.magenta_stairs": "品红色木楼梯", + "block.spectrum.magenta_slab": "品红色木台阶", + "block.spectrum.magenta_fence_gate": "品红色木栅栏门", "block.spectrum.orange_planks": "橙色木板", - "block.spectrum.orange_plank_button": "橙色木按钮", - "block.spectrum.orange_plank_fence": "橙色木栅栏", - "block.spectrum.orange_plank_pressure_plate": "橙色木压力板", - "block.spectrum.orange_plank_stairs": "橙色木楼梯", - "block.spectrum.orange_plank_slab": "橙色木台阶", - "block.spectrum.orange_plank_fence_gate": "橙色木栅栏门", + "block.spectrum.orange_button": "橙色木按钮", + "block.spectrum.orange_fence": "橙色木栅栏", + "block.spectrum.orange_pressure_plate": "橙色木压力板", + "block.spectrum.orange_stairs": "橙色木楼梯", + "block.spectrum.orange_slab": "橙色木台阶", + "block.spectrum.orange_fence_gate": "橙色木栅栏门", "block.spectrum.pink_planks": "粉色木板", - "block.spectrum.pink_plank_button": "粉色木按钮", - "block.spectrum.pink_plank_fence": "粉色木栅栏", - "block.spectrum.pink_plank_pressure_plate": "粉色木压力板", - "block.spectrum.pink_plank_stairs": "粉色木楼梯", - "block.spectrum.pink_plank_slab": "粉色木台阶", - "block.spectrum.pink_plank_fence_gate": "粉色木栅栏门", + "block.spectrum.pink_button": "粉色木按钮", + "block.spectrum.pink_fence": "粉色木栅栏", + "block.spectrum.pink_pressure_plate": "粉色木压力板", + "block.spectrum.pink_stairs": "粉色木楼梯", + "block.spectrum.pink_slab": "粉色木台阶", + "block.spectrum.pink_fence_gate": "粉色木栅栏门", "block.spectrum.purple_planks": "紫色木板", - "block.spectrum.purple_plank_button": "紫色木按钮", - "block.spectrum.purple_plank_fence": "紫色木栅栏", - "block.spectrum.purple_plank_pressure_plate": "紫色木压力板", - "block.spectrum.purple_plank_stairs": "紫色木楼梯", - "block.spectrum.purple_plank_slab": "紫色木台阶", - "block.spectrum.purple_plank_fence_gate": "紫色木栅栏门", + "block.spectrum.purple_button": "紫色木按钮", + "block.spectrum.purple_fence": "紫色木栅栏", + "block.spectrum.purple_pressure_plate": "紫色木压力板", + "block.spectrum.purple_stairs": "紫色木楼梯", + "block.spectrum.purple_slab": "紫色木台阶", + "block.spectrum.purple_fence_gate": "紫色木栅栏门", "block.spectrum.red_planks": "红色木板", - "block.spectrum.red_plank_button": "红色木按钮", - "block.spectrum.red_plank_fence": "红色木栅栏", - "block.spectrum.red_plank_pressure_plate": "红色木压力板", - "block.spectrum.red_plank_stairs": "红色木楼梯", - "block.spectrum.red_plank_slab": "红色木台阶", - "block.spectrum.red_plank_fence_gate": "红色木栅栏门", + "block.spectrum.red_button": "红色木按钮", + "block.spectrum.red_fence": "红色木栅栏", + "block.spectrum.red_pressure_plate": "红色木压力板", + "block.spectrum.red_stairs": "红色木楼梯", + "block.spectrum.red_slab": "红色木台阶", + "block.spectrum.red_fence_gate": "红色木栅栏门", "block.spectrum.white_planks": "白色木板", - "block.spectrum.white_plank_button": "白色木按钮", - "block.spectrum.white_plank_fence": "白色木栅栏", - "block.spectrum.white_plank_pressure_plate": "白色木压力板", - "block.spectrum.white_plank_stairs": "白色木楼梯", - "block.spectrum.white_plank_slab": "白色木台阶", - "block.spectrum.white_plank_fence_gate": "白色木栅栏门", + "block.spectrum.white_button": "白色木按钮", + "block.spectrum.white_fence": "白色木栅栏", + "block.spectrum.white_pressure_plate": "白色木压力板", + "block.spectrum.white_stairs": "白色木楼梯", + "block.spectrum.white_slab": "白色木台阶", + "block.spectrum.white_fence_gate": "白色木栅栏门", "block.spectrum.yellow_planks": "黄色木板", - "block.spectrum.yellow_plank_button": "黄色木按钮", - "block.spectrum.yellow_plank_fence": "黄色木栅栏", - "block.spectrum.yellow_plank_pressure_plate": "黄色木压力板", - "block.spectrum.yellow_plank_stairs": "黄色木楼梯", - "block.spectrum.yellow_plank_slab": "黄色木台阶", - "block.spectrum.yellow_plank_fence_gate": "黄色木栅栏门", + "block.spectrum.yellow_button": "黄色木按钮", + "block.spectrum.yellow_fence": "黄色木栅栏", + "block.spectrum.yellow_pressure_plate": "黄色木压力板", + "block.spectrum.yellow_stairs": "黄色木楼梯", + "block.spectrum.yellow_slab": "黄色木台阶", + "block.spectrum.yellow_fence_gate": "黄色木栅栏门", "item.spectrum.mud_bucket": "泥桶", "block.spectrum.mud": "泥", "block.spectrum.flowing_mud": "泥", diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_button.json b/src/main/resources/assets/spectrum/models/block/black_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_button.json rename to src/main/resources/assets/spectrum/models/block/black_button.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/black_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/black_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/black_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/black_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/black_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/black_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/black_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/black_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/black_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/black_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/black_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/black_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/black_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/black_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/black_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/black_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/black_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/black_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/black_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/black_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/black_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/black_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_slab.json b/src/main/resources/assets/spectrum/models/block/black_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/black_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/black_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/black_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/black_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/black_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/black_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/black_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/black_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/black_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/black_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/black_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_button.json b/src/main/resources/assets/spectrum/models/block/blue_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_button.json rename to src/main/resources/assets/spectrum/models/block/blue_button.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/blue_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/blue_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/blue_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/blue_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/blue_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/blue_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/blue_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/blue_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/blue_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/blue_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/blue_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/blue_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/blue_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/blue_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/blue_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/blue_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/blue_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/blue_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/blue_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/blue_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/blue_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/blue_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_slab.json b/src/main/resources/assets/spectrum/models/block/blue_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/blue_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/blue_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/blue_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/blue_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/blue_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/blue_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/blue_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/blue_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/blue_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/blue_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/blue_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_button.json b/src/main/resources/assets/spectrum/models/block/brown_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_button.json rename to src/main/resources/assets/spectrum/models/block/brown_button.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/brown_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/brown_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/brown_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/brown_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/brown_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/brown_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/brown_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/brown_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/brown_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/brown_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/brown_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/brown_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/brown_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/brown_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/brown_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/brown_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/brown_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/brown_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/brown_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/brown_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/brown_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/brown_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_slab.json b/src/main/resources/assets/spectrum/models/block/brown_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/brown_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/brown_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/brown_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/brown_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/brown_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/brown_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/brown_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/brown_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/brown_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/brown_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/brown_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_button.json b/src/main/resources/assets/spectrum/models/block/cyan_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_button.json rename to src/main/resources/assets/spectrum/models/block/cyan_button.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/cyan_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/cyan_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/cyan_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/cyan_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/cyan_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/cyan_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/cyan_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/cyan_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/cyan_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/cyan_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/cyan_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/cyan_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/cyan_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/cyan_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/cyan_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/cyan_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/cyan_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/cyan_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/cyan_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/cyan_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/cyan_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/cyan_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_slab.json b/src/main/resources/assets/spectrum/models/block/cyan_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/cyan_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/cyan_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/cyan_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/cyan_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/cyan_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/cyan_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/cyan_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/cyan_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/cyan_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/cyan_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/cyan_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_button.json b/src/main/resources/assets/spectrum/models/block/gray_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_button.json rename to src/main/resources/assets/spectrum/models/block/gray_button.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/gray_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/gray_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/gray_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/gray_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/gray_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/gray_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/gray_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/gray_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/gray_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/gray_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/gray_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/gray_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/gray_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/gray_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/gray_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/gray_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/gray_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/gray_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/gray_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/gray_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/gray_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/gray_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_slab.json b/src/main/resources/assets/spectrum/models/block/gray_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/gray_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/gray_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/gray_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/gray_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/gray_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/gray_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/gray_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/gray_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/gray_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/gray_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/gray_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_button.json b/src/main/resources/assets/spectrum/models/block/green_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_button.json rename to src/main/resources/assets/spectrum/models/block/green_button.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/green_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/green_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/green_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/green_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/green_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/green_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/green_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/green_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/green_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/green_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/green_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/green_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/green_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/green_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/green_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/green_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/green_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/green_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/green_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/green_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/green_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/green_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_slab.json b/src/main/resources/assets/spectrum/models/block/green_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/green_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/green_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/green_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/green_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/green_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/green_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/green_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/green_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/green_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/green_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/green_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_button.json b/src/main/resources/assets/spectrum/models/block/light_blue_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_button.json rename to src/main/resources/assets/spectrum/models/block/light_blue_button.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/light_blue_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/light_blue_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/light_blue_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/light_blue_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/light_blue_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/light_blue_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/light_blue_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/light_blue_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/light_blue_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/light_blue_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/light_blue_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/light_blue_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/light_blue_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/light_blue_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/light_blue_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/light_blue_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/light_blue_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/light_blue_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/light_blue_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/light_blue_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/light_blue_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/light_blue_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_slab.json b/src/main/resources/assets/spectrum/models/block/light_blue_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/light_blue_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/light_blue_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/light_blue_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/light_blue_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/light_blue_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/light_blue_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/light_blue_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/light_blue_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/light_blue_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_blue_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/light_blue_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_button.json b/src/main/resources/assets/spectrum/models/block/light_gray_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_button.json rename to src/main/resources/assets/spectrum/models/block/light_gray_button.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/light_gray_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/light_gray_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/light_gray_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/light_gray_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/light_gray_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/light_gray_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/light_gray_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/light_gray_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/light_gray_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/light_gray_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/light_gray_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/light_gray_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/light_gray_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/light_gray_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/light_gray_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/light_gray_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/light_gray_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/light_gray_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/light_gray_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/light_gray_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/light_gray_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/light_gray_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_slab.json b/src/main/resources/assets/spectrum/models/block/light_gray_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/light_gray_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/light_gray_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/light_gray_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/light_gray_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/light_gray_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/light_gray_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/light_gray_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/light_gray_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/light_gray_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/light_gray_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/light_gray_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_button.json b/src/main/resources/assets/spectrum/models/block/lime_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_button.json rename to src/main/resources/assets/spectrum/models/block/lime_button.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/lime_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/lime_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/lime_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/lime_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/lime_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/lime_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/lime_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/lime_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/lime_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/lime_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/lime_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/lime_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/lime_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/lime_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/lime_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/lime_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/lime_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/lime_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/lime_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/lime_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/lime_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/lime_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_slab.json b/src/main/resources/assets/spectrum/models/block/lime_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/lime_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/lime_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/lime_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/lime_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/lime_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/lime_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/lime_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/lime_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/lime_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/lime_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/lime_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_button.json b/src/main/resources/assets/spectrum/models/block/magenta_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_button.json rename to src/main/resources/assets/spectrum/models/block/magenta_button.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/magenta_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/magenta_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/magenta_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/magenta_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/magenta_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/magenta_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/magenta_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/magenta_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/magenta_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/magenta_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/magenta_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/magenta_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/magenta_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/magenta_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/magenta_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/magenta_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/magenta_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/magenta_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/magenta_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/magenta_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/magenta_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/magenta_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_slab.json b/src/main/resources/assets/spectrum/models/block/magenta_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/magenta_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/magenta_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/magenta_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/magenta_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/magenta_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/magenta_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/magenta_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/magenta_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/magenta_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/magenta_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/magenta_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_button.json b/src/main/resources/assets/spectrum/models/block/orange_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_button.json rename to src/main/resources/assets/spectrum/models/block/orange_button.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/orange_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/orange_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/orange_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/orange_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/orange_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/orange_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/orange_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/orange_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/orange_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/orange_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/orange_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/orange_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/orange_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/orange_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/orange_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/orange_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/orange_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/orange_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/orange_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/orange_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/orange_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/orange_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_slab.json b/src/main/resources/assets/spectrum/models/block/orange_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/orange_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/orange_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/orange_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/orange_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/orange_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/orange_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/orange_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/orange_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/orange_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/orange_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/orange_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_button.json b/src/main/resources/assets/spectrum/models/block/pink_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_button.json rename to src/main/resources/assets/spectrum/models/block/pink_button.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/pink_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/pink_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/pink_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/pink_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/pink_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/pink_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/pink_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/pink_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/pink_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/pink_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/pink_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/pink_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/pink_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/pink_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/pink_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/pink_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/pink_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/pink_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/pink_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/pink_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/pink_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/pink_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_slab.json b/src/main/resources/assets/spectrum/models/block/pink_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/pink_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/pink_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/pink_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/pink_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/pink_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/pink_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/pink_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/pink_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/pink_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/pink_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/pink_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_button.json b/src/main/resources/assets/spectrum/models/block/purple_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_button.json rename to src/main/resources/assets/spectrum/models/block/purple_button.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/purple_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/purple_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/purple_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/purple_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/purple_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/purple_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/purple_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/purple_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/purple_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/purple_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/purple_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/purple_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/purple_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/purple_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/purple_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/purple_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/purple_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/purple_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/purple_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/purple_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/purple_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/purple_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_slab.json b/src/main/resources/assets/spectrum/models/block/purple_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/purple_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/purple_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/purple_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/purple_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/purple_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/purple_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/purple_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/purple_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/purple_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/purple_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/purple_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_button.json b/src/main/resources/assets/spectrum/models/block/red_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_button.json rename to src/main/resources/assets/spectrum/models/block/red_button.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/red_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/red_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/red_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/red_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/red_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/red_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/red_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/red_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/red_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/red_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/red_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/red_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/red_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/red_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/red_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/red_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/red_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/red_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/red_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/red_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/red_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/red_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_slab.json b/src/main/resources/assets/spectrum/models/block/red_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/red_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/red_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/red_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/red_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/red_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/red_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/red_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/red_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/red_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/red_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/red_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_button.json b/src/main/resources/assets/spectrum/models/block/white_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_button.json rename to src/main/resources/assets/spectrum/models/block/white_button.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/white_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/white_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/white_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/white_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/white_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/white_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/white_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/white_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/white_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/white_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/white_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/white_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/white_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/white_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/white_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/white_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/white_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/white_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/white_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/white_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/white_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/white_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_slab.json b/src/main/resources/assets/spectrum/models/block/white_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/white_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/white_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/white_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/white_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/white_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/white_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/white_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/white_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/white_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/white_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/white_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_button.json b/src/main/resources/assets/spectrum/models/block/yellow_button.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_button.json rename to src/main/resources/assets/spectrum/models/block/yellow_button.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_button_inventory.json b/src/main/resources/assets/spectrum/models/block/yellow_button_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_button_inventory.json rename to src/main/resources/assets/spectrum/models/block/yellow_button_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_button_pressed.json b/src/main/resources/assets/spectrum/models/block/yellow_button_pressed.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_button_pressed.json rename to src/main/resources/assets/spectrum/models/block/yellow_button_pressed.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/block/yellow_fence_gate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_fence_gate.json rename to src/main/resources/assets/spectrum/models/block/yellow_fence_gate.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_fence_gate_open.json b/src/main/resources/assets/spectrum/models/block/yellow_fence_gate_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_fence_gate_open.json rename to src/main/resources/assets/spectrum/models/block/yellow_fence_gate_open.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_fence_gate_wall.json b/src/main/resources/assets/spectrum/models/block/yellow_fence_gate_wall.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_fence_gate_wall.json rename to src/main/resources/assets/spectrum/models/block/yellow_fence_gate_wall.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_fence_gate_wall_open.json b/src/main/resources/assets/spectrum/models/block/yellow_fence_gate_wall_open.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_fence_gate_wall_open.json rename to src/main/resources/assets/spectrum/models/block/yellow_fence_gate_wall_open.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_fence_inventory.json b/src/main/resources/assets/spectrum/models/block/yellow_fence_inventory.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_fence_inventory.json rename to src/main/resources/assets/spectrum/models/block/yellow_fence_inventory.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_fence_post.json b/src/main/resources/assets/spectrum/models/block/yellow_fence_post.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_fence_post.json rename to src/main/resources/assets/spectrum/models/block/yellow_fence_post.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_fence_side.json b/src/main/resources/assets/spectrum/models/block/yellow_fence_side.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_fence_side.json rename to src/main/resources/assets/spectrum/models/block/yellow_fence_side.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/block/yellow_pressure_plate.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_pressure_plate.json rename to src/main/resources/assets/spectrum/models/block/yellow_pressure_plate.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_pressure_plate_down.json b/src/main/resources/assets/spectrum/models/block/yellow_pressure_plate_down.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_pressure_plate_down.json rename to src/main/resources/assets/spectrum/models/block/yellow_pressure_plate_down.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_slab.json b/src/main/resources/assets/spectrum/models/block/yellow_slab.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_slab.json rename to src/main/resources/assets/spectrum/models/block/yellow_slab.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_slab_top.json b/src/main/resources/assets/spectrum/models/block/yellow_slab_top.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_slab_top.json rename to src/main/resources/assets/spectrum/models/block/yellow_slab_top.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_stairs.json b/src/main/resources/assets/spectrum/models/block/yellow_stairs.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_stairs.json rename to src/main/resources/assets/spectrum/models/block/yellow_stairs.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_stairs_inner.json b/src/main/resources/assets/spectrum/models/block/yellow_stairs_inner.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_stairs_inner.json rename to src/main/resources/assets/spectrum/models/block/yellow_stairs_inner.json diff --git a/src/main/resources/assets/spectrum/models/block/yellow_plank_stairs_outer.json b/src/main/resources/assets/spectrum/models/block/yellow_stairs_outer.json similarity index 100% rename from src/main/resources/assets/spectrum/models/block/yellow_plank_stairs_outer.json rename to src/main/resources/assets/spectrum/models/block/yellow_stairs_outer.json diff --git a/src/main/resources/assets/spectrum/models/item/black_button.json b/src/main/resources/assets/spectrum/models/item/black_button.json new file mode 100644 index 0000000000..0ea92e7bfc --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/black_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/black_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/black_fence.json b/src/main/resources/assets/spectrum/models/item/black_fence.json new file mode 100644 index 0000000000..f12dce5c64 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/black_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/black_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/black_fence_gate.json b/src/main/resources/assets/spectrum/models/item/black_fence_gate.json new file mode 100644 index 0000000000..c73225c6d6 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/black_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/black_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/black_plank_button.json b/src/main/resources/assets/spectrum/models/item/black_plank_button.json deleted file mode 100644 index e5411fb07a..0000000000 --- a/src/main/resources/assets/spectrum/models/item/black_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/black_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/black_plank_fence.json b/src/main/resources/assets/spectrum/models/item/black_plank_fence.json deleted file mode 100644 index b8f836a9ab..0000000000 --- a/src/main/resources/assets/spectrum/models/item/black_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/black_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/black_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/black_plank_fence_gate.json deleted file mode 100644 index 922356fd32..0000000000 --- a/src/main/resources/assets/spectrum/models/item/black_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/black_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/black_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/black_plank_pressure_plate.json deleted file mode 100644 index 4998bbef42..0000000000 --- a/src/main/resources/assets/spectrum/models/item/black_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/black_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/black_plank_slab.json b/src/main/resources/assets/spectrum/models/item/black_plank_slab.json deleted file mode 100644 index 9d7fc078c0..0000000000 --- a/src/main/resources/assets/spectrum/models/item/black_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/black_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/black_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/black_plank_stairs.json deleted file mode 100644 index 344f611983..0000000000 --- a/src/main/resources/assets/spectrum/models/item/black_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/black_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/black_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/black_pressure_plate.json new file mode 100644 index 0000000000..e7a05cd6cf --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/black_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/black_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/black_slab.json b/src/main/resources/assets/spectrum/models/item/black_slab.json new file mode 100644 index 0000000000..8e41d6c0a1 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/black_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/black_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/black_stairs.json b/src/main/resources/assets/spectrum/models/item/black_stairs.json new file mode 100644 index 0000000000..3b63728eba --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/black_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/black_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/blue_button.json b/src/main/resources/assets/spectrum/models/item/blue_button.json new file mode 100644 index 0000000000..428e84e6c4 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/blue_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/blue_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/blue_fence.json b/src/main/resources/assets/spectrum/models/item/blue_fence.json new file mode 100644 index 0000000000..5f8f0e6ee4 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/blue_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/blue_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/blue_fence_gate.json b/src/main/resources/assets/spectrum/models/item/blue_fence_gate.json new file mode 100644 index 0000000000..d8f008658f --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/blue_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/blue_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/blue_plank_button.json b/src/main/resources/assets/spectrum/models/item/blue_plank_button.json deleted file mode 100644 index 06267eaf13..0000000000 --- a/src/main/resources/assets/spectrum/models/item/blue_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/blue_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/blue_plank_fence.json b/src/main/resources/assets/spectrum/models/item/blue_plank_fence.json deleted file mode 100644 index ab6b12c697..0000000000 --- a/src/main/resources/assets/spectrum/models/item/blue_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/blue_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/blue_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/blue_plank_fence_gate.json deleted file mode 100644 index f310835813..0000000000 --- a/src/main/resources/assets/spectrum/models/item/blue_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/blue_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/blue_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/blue_plank_pressure_plate.json deleted file mode 100644 index a3b1c82f38..0000000000 --- a/src/main/resources/assets/spectrum/models/item/blue_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/blue_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/blue_plank_slab.json b/src/main/resources/assets/spectrum/models/item/blue_plank_slab.json deleted file mode 100644 index ca5c89f7f4..0000000000 --- a/src/main/resources/assets/spectrum/models/item/blue_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/blue_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/blue_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/blue_plank_stairs.json deleted file mode 100644 index fc0c3ba128..0000000000 --- a/src/main/resources/assets/spectrum/models/item/blue_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/blue_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/blue_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/blue_pressure_plate.json new file mode 100644 index 0000000000..a378955001 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/blue_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/blue_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/blue_slab.json b/src/main/resources/assets/spectrum/models/item/blue_slab.json new file mode 100644 index 0000000000..8cc7624191 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/blue_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/blue_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/blue_stairs.json b/src/main/resources/assets/spectrum/models/item/blue_stairs.json new file mode 100644 index 0000000000..950ec5be8b --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/blue_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/blue_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/brown_button.json b/src/main/resources/assets/spectrum/models/item/brown_button.json new file mode 100644 index 0000000000..3cfef48c44 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/brown_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/brown_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/brown_fence.json b/src/main/resources/assets/spectrum/models/item/brown_fence.json new file mode 100644 index 0000000000..0065a7b005 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/brown_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/brown_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/brown_fence_gate.json b/src/main/resources/assets/spectrum/models/item/brown_fence_gate.json new file mode 100644 index 0000000000..04d558fcfc --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/brown_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/brown_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/brown_plank_button.json b/src/main/resources/assets/spectrum/models/item/brown_plank_button.json deleted file mode 100644 index ba7027f557..0000000000 --- a/src/main/resources/assets/spectrum/models/item/brown_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/brown_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/brown_plank_fence.json b/src/main/resources/assets/spectrum/models/item/brown_plank_fence.json deleted file mode 100644 index cfea15c43a..0000000000 --- a/src/main/resources/assets/spectrum/models/item/brown_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/brown_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/brown_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/brown_plank_fence_gate.json deleted file mode 100644 index 44735ca4c6..0000000000 --- a/src/main/resources/assets/spectrum/models/item/brown_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/brown_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/brown_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/brown_plank_pressure_plate.json deleted file mode 100644 index d0c9f20488..0000000000 --- a/src/main/resources/assets/spectrum/models/item/brown_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/brown_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/brown_plank_slab.json b/src/main/resources/assets/spectrum/models/item/brown_plank_slab.json deleted file mode 100644 index 73892fd41c..0000000000 --- a/src/main/resources/assets/spectrum/models/item/brown_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/brown_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/brown_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/brown_plank_stairs.json deleted file mode 100644 index 3ba583f9ed..0000000000 --- a/src/main/resources/assets/spectrum/models/item/brown_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/brown_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/brown_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/brown_pressure_plate.json new file mode 100644 index 0000000000..fa68afdb99 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/brown_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/brown_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/brown_slab.json b/src/main/resources/assets/spectrum/models/item/brown_slab.json new file mode 100644 index 0000000000..ecbefeba5c --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/brown_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/brown_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/brown_stairs.json b/src/main/resources/assets/spectrum/models/item/brown_stairs.json new file mode 100644 index 0000000000..36890e06df --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/brown_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/brown_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/cyan_button.json b/src/main/resources/assets/spectrum/models/item/cyan_button.json new file mode 100644 index 0000000000..a5ba45b143 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/cyan_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/cyan_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/cyan_fence.json b/src/main/resources/assets/spectrum/models/item/cyan_fence.json new file mode 100644 index 0000000000..1cc0a1e228 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/cyan_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/cyan_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/cyan_fence_gate.json b/src/main/resources/assets/spectrum/models/item/cyan_fence_gate.json new file mode 100644 index 0000000000..e78b4a51e8 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/cyan_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/cyan_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/cyan_plank_button.json b/src/main/resources/assets/spectrum/models/item/cyan_plank_button.json deleted file mode 100644 index f189c40557..0000000000 --- a/src/main/resources/assets/spectrum/models/item/cyan_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/cyan_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/cyan_plank_fence.json b/src/main/resources/assets/spectrum/models/item/cyan_plank_fence.json deleted file mode 100644 index 7507357bb1..0000000000 --- a/src/main/resources/assets/spectrum/models/item/cyan_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/cyan_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/cyan_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/cyan_plank_fence_gate.json deleted file mode 100644 index 998300e0f0..0000000000 --- a/src/main/resources/assets/spectrum/models/item/cyan_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/cyan_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/cyan_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/cyan_plank_pressure_plate.json deleted file mode 100644 index 3f2c0637a0..0000000000 --- a/src/main/resources/assets/spectrum/models/item/cyan_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/cyan_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/cyan_plank_slab.json b/src/main/resources/assets/spectrum/models/item/cyan_plank_slab.json deleted file mode 100644 index a276f6da85..0000000000 --- a/src/main/resources/assets/spectrum/models/item/cyan_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/cyan_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/cyan_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/cyan_plank_stairs.json deleted file mode 100644 index 00956f170d..0000000000 --- a/src/main/resources/assets/spectrum/models/item/cyan_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/cyan_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/cyan_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/cyan_pressure_plate.json new file mode 100644 index 0000000000..6c80256b9d --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/cyan_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/cyan_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/cyan_slab.json b/src/main/resources/assets/spectrum/models/item/cyan_slab.json new file mode 100644 index 0000000000..5f004c1408 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/cyan_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/cyan_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/cyan_stairs.json b/src/main/resources/assets/spectrum/models/item/cyan_stairs.json new file mode 100644 index 0000000000..63249ec9e0 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/cyan_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/cyan_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/gray_button.json b/src/main/resources/assets/spectrum/models/item/gray_button.json new file mode 100644 index 0000000000..724559c262 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/gray_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/gray_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/gray_fence.json b/src/main/resources/assets/spectrum/models/item/gray_fence.json new file mode 100644 index 0000000000..4ba9e83ecc --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/gray_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/gray_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/gray_fence_gate.json b/src/main/resources/assets/spectrum/models/item/gray_fence_gate.json new file mode 100644 index 0000000000..c1c1327f6f --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/gray_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/gray_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/gray_plank_button.json b/src/main/resources/assets/spectrum/models/item/gray_plank_button.json deleted file mode 100644 index 326fd5ba1c..0000000000 --- a/src/main/resources/assets/spectrum/models/item/gray_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/gray_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/gray_plank_fence.json b/src/main/resources/assets/spectrum/models/item/gray_plank_fence.json deleted file mode 100644 index 048d568b8a..0000000000 --- a/src/main/resources/assets/spectrum/models/item/gray_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/gray_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/gray_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/gray_plank_fence_gate.json deleted file mode 100644 index ac18638277..0000000000 --- a/src/main/resources/assets/spectrum/models/item/gray_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/gray_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/gray_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/gray_plank_pressure_plate.json deleted file mode 100644 index 16bcc739a2..0000000000 --- a/src/main/resources/assets/spectrum/models/item/gray_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/gray_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/gray_plank_slab.json b/src/main/resources/assets/spectrum/models/item/gray_plank_slab.json deleted file mode 100644 index 64ea9d154e..0000000000 --- a/src/main/resources/assets/spectrum/models/item/gray_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/gray_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/gray_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/gray_plank_stairs.json deleted file mode 100644 index a93e819961..0000000000 --- a/src/main/resources/assets/spectrum/models/item/gray_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/gray_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/gray_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/gray_pressure_plate.json new file mode 100644 index 0000000000..95a5b21fdd --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/gray_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/gray_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/gray_slab.json b/src/main/resources/assets/spectrum/models/item/gray_slab.json new file mode 100644 index 0000000000..673e96b093 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/gray_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/gray_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/gray_stairs.json b/src/main/resources/assets/spectrum/models/item/gray_stairs.json new file mode 100644 index 0000000000..41cc908073 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/gray_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/gray_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/green_button.json b/src/main/resources/assets/spectrum/models/item/green_button.json new file mode 100644 index 0000000000..10c28f0d58 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/green_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/green_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/green_fence.json b/src/main/resources/assets/spectrum/models/item/green_fence.json new file mode 100644 index 0000000000..29d5a61b61 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/green_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/green_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/green_fence_gate.json b/src/main/resources/assets/spectrum/models/item/green_fence_gate.json new file mode 100644 index 0000000000..8c588cf481 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/green_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/green_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/green_plank_button.json b/src/main/resources/assets/spectrum/models/item/green_plank_button.json deleted file mode 100644 index 8273d37b9d..0000000000 --- a/src/main/resources/assets/spectrum/models/item/green_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/green_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/green_plank_fence.json b/src/main/resources/assets/spectrum/models/item/green_plank_fence.json deleted file mode 100644 index d7317686e8..0000000000 --- a/src/main/resources/assets/spectrum/models/item/green_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/green_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/green_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/green_plank_fence_gate.json deleted file mode 100644 index 2a47907741..0000000000 --- a/src/main/resources/assets/spectrum/models/item/green_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/green_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/green_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/green_plank_pressure_plate.json deleted file mode 100644 index 9ce74b2cc1..0000000000 --- a/src/main/resources/assets/spectrum/models/item/green_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/green_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/green_plank_slab.json b/src/main/resources/assets/spectrum/models/item/green_plank_slab.json deleted file mode 100644 index d262169f83..0000000000 --- a/src/main/resources/assets/spectrum/models/item/green_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/green_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/green_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/green_plank_stairs.json deleted file mode 100644 index 282f20d325..0000000000 --- a/src/main/resources/assets/spectrum/models/item/green_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/green_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/green_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/green_pressure_plate.json new file mode 100644 index 0000000000..e04e5b6ba0 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/green_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/green_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/green_slab.json b/src/main/resources/assets/spectrum/models/item/green_slab.json new file mode 100644 index 0000000000..bc7572a0c8 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/green_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/green_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/green_stairs.json b/src/main/resources/assets/spectrum/models/item/green_stairs.json new file mode 100644 index 0000000000..3ab274d009 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/green_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/green_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_blue_button.json b/src/main/resources/assets/spectrum/models/item/light_blue_button.json new file mode 100644 index 0000000000..7ce680a8cb --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/light_blue_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/light_blue_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_blue_fence.json b/src/main/resources/assets/spectrum/models/item/light_blue_fence.json new file mode 100644 index 0000000000..fb617be04f --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/light_blue_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/light_blue_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_blue_fence_gate.json b/src/main/resources/assets/spectrum/models/item/light_blue_fence_gate.json new file mode 100644 index 0000000000..e09283c734 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/light_blue_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/light_blue_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_blue_plank_button.json b/src/main/resources/assets/spectrum/models/item/light_blue_plank_button.json deleted file mode 100644 index cd2e800fac..0000000000 --- a/src/main/resources/assets/spectrum/models/item/light_blue_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/light_blue_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_blue_plank_fence.json b/src/main/resources/assets/spectrum/models/item/light_blue_plank_fence.json deleted file mode 100644 index e7709dd13c..0000000000 --- a/src/main/resources/assets/spectrum/models/item/light_blue_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/light_blue_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_blue_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/light_blue_plank_fence_gate.json deleted file mode 100644 index 9111f4c318..0000000000 --- a/src/main/resources/assets/spectrum/models/item/light_blue_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/light_blue_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_blue_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/light_blue_plank_pressure_plate.json deleted file mode 100644 index fdfe7030e1..0000000000 --- a/src/main/resources/assets/spectrum/models/item/light_blue_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/light_blue_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_blue_plank_slab.json b/src/main/resources/assets/spectrum/models/item/light_blue_plank_slab.json deleted file mode 100644 index 6d95a5a83c..0000000000 --- a/src/main/resources/assets/spectrum/models/item/light_blue_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/light_blue_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_blue_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/light_blue_plank_stairs.json deleted file mode 100644 index ddb3106ebf..0000000000 --- a/src/main/resources/assets/spectrum/models/item/light_blue_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/light_blue_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_blue_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/light_blue_pressure_plate.json new file mode 100644 index 0000000000..b33f6ac5a0 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/light_blue_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/light_blue_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_blue_slab.json b/src/main/resources/assets/spectrum/models/item/light_blue_slab.json new file mode 100644 index 0000000000..bb348df422 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/light_blue_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/light_blue_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_blue_stairs.json b/src/main/resources/assets/spectrum/models/item/light_blue_stairs.json new file mode 100644 index 0000000000..8bcb6a0e1f --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/light_blue_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/light_blue_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_gray_button.json b/src/main/resources/assets/spectrum/models/item/light_gray_button.json new file mode 100644 index 0000000000..518528d901 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/light_gray_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/light_gray_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_gray_fence.json b/src/main/resources/assets/spectrum/models/item/light_gray_fence.json new file mode 100644 index 0000000000..d220f4143b --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/light_gray_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/light_gray_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_gray_fence_gate.json b/src/main/resources/assets/spectrum/models/item/light_gray_fence_gate.json new file mode 100644 index 0000000000..473ad9ea61 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/light_gray_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/light_gray_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_gray_plank_button.json b/src/main/resources/assets/spectrum/models/item/light_gray_plank_button.json deleted file mode 100644 index 4337f505b0..0000000000 --- a/src/main/resources/assets/spectrum/models/item/light_gray_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/light_gray_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_gray_plank_fence.json b/src/main/resources/assets/spectrum/models/item/light_gray_plank_fence.json deleted file mode 100644 index 52d7b691f9..0000000000 --- a/src/main/resources/assets/spectrum/models/item/light_gray_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/light_gray_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_gray_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/light_gray_plank_fence_gate.json deleted file mode 100644 index d6afae3050..0000000000 --- a/src/main/resources/assets/spectrum/models/item/light_gray_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/light_gray_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_gray_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/light_gray_plank_pressure_plate.json deleted file mode 100644 index 2522a28e74..0000000000 --- a/src/main/resources/assets/spectrum/models/item/light_gray_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/light_gray_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_gray_plank_slab.json b/src/main/resources/assets/spectrum/models/item/light_gray_plank_slab.json deleted file mode 100644 index 0d46a89e4e..0000000000 --- a/src/main/resources/assets/spectrum/models/item/light_gray_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/light_gray_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_gray_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/light_gray_plank_stairs.json deleted file mode 100644 index 6eb2746901..0000000000 --- a/src/main/resources/assets/spectrum/models/item/light_gray_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/light_gray_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_gray_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/light_gray_pressure_plate.json new file mode 100644 index 0000000000..53f07fccde --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/light_gray_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/light_gray_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_gray_slab.json b/src/main/resources/assets/spectrum/models/item/light_gray_slab.json new file mode 100644 index 0000000000..8f3c4721ec --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/light_gray_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/light_gray_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/light_gray_stairs.json b/src/main/resources/assets/spectrum/models/item/light_gray_stairs.json new file mode 100644 index 0000000000..af1a661225 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/light_gray_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/light_gray_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/lime_button.json b/src/main/resources/assets/spectrum/models/item/lime_button.json new file mode 100644 index 0000000000..d14d1de164 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/lime_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/lime_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/lime_fence.json b/src/main/resources/assets/spectrum/models/item/lime_fence.json new file mode 100644 index 0000000000..453de82784 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/lime_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/lime_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/lime_fence_gate.json b/src/main/resources/assets/spectrum/models/item/lime_fence_gate.json new file mode 100644 index 0000000000..58dfa29863 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/lime_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/lime_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/lime_plank_button.json b/src/main/resources/assets/spectrum/models/item/lime_plank_button.json deleted file mode 100644 index 1120ba5353..0000000000 --- a/src/main/resources/assets/spectrum/models/item/lime_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/lime_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/lime_plank_fence.json b/src/main/resources/assets/spectrum/models/item/lime_plank_fence.json deleted file mode 100644 index b0bee81cec..0000000000 --- a/src/main/resources/assets/spectrum/models/item/lime_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/lime_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/lime_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/lime_plank_fence_gate.json deleted file mode 100644 index e55d6c03eb..0000000000 --- a/src/main/resources/assets/spectrum/models/item/lime_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/lime_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/lime_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/lime_plank_pressure_plate.json deleted file mode 100644 index 2241ba1965..0000000000 --- a/src/main/resources/assets/spectrum/models/item/lime_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/lime_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/lime_plank_slab.json b/src/main/resources/assets/spectrum/models/item/lime_plank_slab.json deleted file mode 100644 index c963233967..0000000000 --- a/src/main/resources/assets/spectrum/models/item/lime_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/lime_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/lime_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/lime_plank_stairs.json deleted file mode 100644 index cb20042bb9..0000000000 --- a/src/main/resources/assets/spectrum/models/item/lime_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/lime_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/lime_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/lime_pressure_plate.json new file mode 100644 index 0000000000..b194f5afb3 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/lime_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/lime_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/lime_slab.json b/src/main/resources/assets/spectrum/models/item/lime_slab.json new file mode 100644 index 0000000000..4abdbe99f7 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/lime_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/lime_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/lime_stairs.json b/src/main/resources/assets/spectrum/models/item/lime_stairs.json new file mode 100644 index 0000000000..0555052123 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/lime_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/lime_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/magenta_button.json b/src/main/resources/assets/spectrum/models/item/magenta_button.json new file mode 100644 index 0000000000..2167d5f828 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/magenta_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/magenta_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/magenta_fence.json b/src/main/resources/assets/spectrum/models/item/magenta_fence.json new file mode 100644 index 0000000000..f8e4fecfb8 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/magenta_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/magenta_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/magenta_fence_gate.json b/src/main/resources/assets/spectrum/models/item/magenta_fence_gate.json new file mode 100644 index 0000000000..8c942e9ed1 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/magenta_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/magenta_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/magenta_plank_button.json b/src/main/resources/assets/spectrum/models/item/magenta_plank_button.json deleted file mode 100644 index ede0768465..0000000000 --- a/src/main/resources/assets/spectrum/models/item/magenta_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/magenta_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/magenta_plank_fence.json b/src/main/resources/assets/spectrum/models/item/magenta_plank_fence.json deleted file mode 100644 index bee4eff7b8..0000000000 --- a/src/main/resources/assets/spectrum/models/item/magenta_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/magenta_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/magenta_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/magenta_plank_fence_gate.json deleted file mode 100644 index e211d921a0..0000000000 --- a/src/main/resources/assets/spectrum/models/item/magenta_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/magenta_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/magenta_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/magenta_plank_pressure_plate.json deleted file mode 100644 index 32ae769ec8..0000000000 --- a/src/main/resources/assets/spectrum/models/item/magenta_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/magenta_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/magenta_plank_slab.json b/src/main/resources/assets/spectrum/models/item/magenta_plank_slab.json deleted file mode 100644 index f5004910d5..0000000000 --- a/src/main/resources/assets/spectrum/models/item/magenta_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/magenta_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/magenta_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/magenta_plank_stairs.json deleted file mode 100644 index 6f912bca73..0000000000 --- a/src/main/resources/assets/spectrum/models/item/magenta_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/magenta_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/magenta_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/magenta_pressure_plate.json new file mode 100644 index 0000000000..fd2c72cfdb --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/magenta_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/magenta_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/magenta_slab.json b/src/main/resources/assets/spectrum/models/item/magenta_slab.json new file mode 100644 index 0000000000..cbd006a602 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/magenta_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/magenta_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/magenta_stairs.json b/src/main/resources/assets/spectrum/models/item/magenta_stairs.json new file mode 100644 index 0000000000..d50728f5e6 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/magenta_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/magenta_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/orange_button.json b/src/main/resources/assets/spectrum/models/item/orange_button.json new file mode 100644 index 0000000000..a9e1d6174b --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/orange_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/orange_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/orange_fence.json b/src/main/resources/assets/spectrum/models/item/orange_fence.json new file mode 100644 index 0000000000..3030315cca --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/orange_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/orange_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/orange_fence_gate.json b/src/main/resources/assets/spectrum/models/item/orange_fence_gate.json new file mode 100644 index 0000000000..97f5f8911d --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/orange_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/orange_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/orange_plank_button.json b/src/main/resources/assets/spectrum/models/item/orange_plank_button.json deleted file mode 100644 index 89f7f8b3e2..0000000000 --- a/src/main/resources/assets/spectrum/models/item/orange_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/orange_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/orange_plank_fence.json b/src/main/resources/assets/spectrum/models/item/orange_plank_fence.json deleted file mode 100644 index 4eec409e96..0000000000 --- a/src/main/resources/assets/spectrum/models/item/orange_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/orange_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/orange_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/orange_plank_fence_gate.json deleted file mode 100644 index be7d3e2020..0000000000 --- a/src/main/resources/assets/spectrum/models/item/orange_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/orange_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/orange_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/orange_plank_pressure_plate.json deleted file mode 100644 index 69cb48d188..0000000000 --- a/src/main/resources/assets/spectrum/models/item/orange_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/orange_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/orange_plank_slab.json b/src/main/resources/assets/spectrum/models/item/orange_plank_slab.json deleted file mode 100644 index 97335700e5..0000000000 --- a/src/main/resources/assets/spectrum/models/item/orange_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/orange_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/orange_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/orange_plank_stairs.json deleted file mode 100644 index a38e3c004b..0000000000 --- a/src/main/resources/assets/spectrum/models/item/orange_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/orange_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/orange_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/orange_pressure_plate.json new file mode 100644 index 0000000000..d4eae74b27 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/orange_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/orange_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/orange_slab.json b/src/main/resources/assets/spectrum/models/item/orange_slab.json new file mode 100644 index 0000000000..26b19c232e --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/orange_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/orange_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/orange_stairs.json b/src/main/resources/assets/spectrum/models/item/orange_stairs.json new file mode 100644 index 0000000000..0462316df1 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/orange_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/orange_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/pink_button.json b/src/main/resources/assets/spectrum/models/item/pink_button.json new file mode 100644 index 0000000000..697b802a54 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/pink_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/pink_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/pink_fence.json b/src/main/resources/assets/spectrum/models/item/pink_fence.json new file mode 100644 index 0000000000..8616fd3a64 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/pink_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/pink_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/pink_fence_gate.json b/src/main/resources/assets/spectrum/models/item/pink_fence_gate.json new file mode 100644 index 0000000000..9a0c8f23ef --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/pink_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/pink_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/pink_plank_button.json b/src/main/resources/assets/spectrum/models/item/pink_plank_button.json deleted file mode 100644 index 5c5b9b193e..0000000000 --- a/src/main/resources/assets/spectrum/models/item/pink_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/pink_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/pink_plank_fence.json b/src/main/resources/assets/spectrum/models/item/pink_plank_fence.json deleted file mode 100644 index 0adaa6e926..0000000000 --- a/src/main/resources/assets/spectrum/models/item/pink_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/pink_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/pink_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/pink_plank_fence_gate.json deleted file mode 100644 index dc2e6ad291..0000000000 --- a/src/main/resources/assets/spectrum/models/item/pink_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/pink_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/pink_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/pink_plank_pressure_plate.json deleted file mode 100644 index aa1c496e76..0000000000 --- a/src/main/resources/assets/spectrum/models/item/pink_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/pink_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/pink_plank_slab.json b/src/main/resources/assets/spectrum/models/item/pink_plank_slab.json deleted file mode 100644 index 4c43ed7195..0000000000 --- a/src/main/resources/assets/spectrum/models/item/pink_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/pink_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/pink_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/pink_plank_stairs.json deleted file mode 100644 index 952887aeeb..0000000000 --- a/src/main/resources/assets/spectrum/models/item/pink_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/pink_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/pink_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/pink_pressure_plate.json new file mode 100644 index 0000000000..b2d7e68157 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/pink_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/pink_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/pink_slab.json b/src/main/resources/assets/spectrum/models/item/pink_slab.json new file mode 100644 index 0000000000..815adfd17d --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/pink_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/pink_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/pink_stairs.json b/src/main/resources/assets/spectrum/models/item/pink_stairs.json new file mode 100644 index 0000000000..81e61fe4e4 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/pink_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/pink_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/purple_button.json b/src/main/resources/assets/spectrum/models/item/purple_button.json new file mode 100644 index 0000000000..a88895d203 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/purple_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/purple_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/purple_fence.json b/src/main/resources/assets/spectrum/models/item/purple_fence.json new file mode 100644 index 0000000000..ca28487508 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/purple_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/purple_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/purple_fence_gate.json b/src/main/resources/assets/spectrum/models/item/purple_fence_gate.json new file mode 100644 index 0000000000..bc324b6b17 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/purple_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/purple_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/purple_plank_button.json b/src/main/resources/assets/spectrum/models/item/purple_plank_button.json deleted file mode 100644 index 2fc4145b49..0000000000 --- a/src/main/resources/assets/spectrum/models/item/purple_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/purple_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/purple_plank_fence.json b/src/main/resources/assets/spectrum/models/item/purple_plank_fence.json deleted file mode 100644 index c778fd3d61..0000000000 --- a/src/main/resources/assets/spectrum/models/item/purple_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/purple_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/purple_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/purple_plank_fence_gate.json deleted file mode 100644 index 053ebfbce5..0000000000 --- a/src/main/resources/assets/spectrum/models/item/purple_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/purple_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/purple_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/purple_plank_pressure_plate.json deleted file mode 100644 index 5511008fea..0000000000 --- a/src/main/resources/assets/spectrum/models/item/purple_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/purple_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/purple_plank_slab.json b/src/main/resources/assets/spectrum/models/item/purple_plank_slab.json deleted file mode 100644 index ece2d0ead7..0000000000 --- a/src/main/resources/assets/spectrum/models/item/purple_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/purple_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/purple_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/purple_plank_stairs.json deleted file mode 100644 index aa21aa9f61..0000000000 --- a/src/main/resources/assets/spectrum/models/item/purple_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/purple_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/purple_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/purple_pressure_plate.json new file mode 100644 index 0000000000..e8214b2397 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/purple_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/purple_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/purple_slab.json b/src/main/resources/assets/spectrum/models/item/purple_slab.json new file mode 100644 index 0000000000..e8ca520e89 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/purple_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/purple_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/purple_stairs.json b/src/main/resources/assets/spectrum/models/item/purple_stairs.json new file mode 100644 index 0000000000..fe4deb8982 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/purple_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/purple_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/red_button.json b/src/main/resources/assets/spectrum/models/item/red_button.json new file mode 100644 index 0000000000..ed1efa3593 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/red_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/red_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/red_fence.json b/src/main/resources/assets/spectrum/models/item/red_fence.json new file mode 100644 index 0000000000..5577eecdb8 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/red_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/red_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/red_fence_gate.json b/src/main/resources/assets/spectrum/models/item/red_fence_gate.json new file mode 100644 index 0000000000..d04e2c3133 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/red_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/red_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/red_plank_button.json b/src/main/resources/assets/spectrum/models/item/red_plank_button.json deleted file mode 100644 index 4f933cc343..0000000000 --- a/src/main/resources/assets/spectrum/models/item/red_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/red_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/red_plank_fence.json b/src/main/resources/assets/spectrum/models/item/red_plank_fence.json deleted file mode 100644 index 15c24ca7d2..0000000000 --- a/src/main/resources/assets/spectrum/models/item/red_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/red_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/red_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/red_plank_fence_gate.json deleted file mode 100644 index aa5b989adc..0000000000 --- a/src/main/resources/assets/spectrum/models/item/red_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/red_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/red_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/red_plank_pressure_plate.json deleted file mode 100644 index 347dd0fab9..0000000000 --- a/src/main/resources/assets/spectrum/models/item/red_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/red_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/red_plank_slab.json b/src/main/resources/assets/spectrum/models/item/red_plank_slab.json deleted file mode 100644 index f9a5bac5c5..0000000000 --- a/src/main/resources/assets/spectrum/models/item/red_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/red_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/red_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/red_plank_stairs.json deleted file mode 100644 index 140edf6d52..0000000000 --- a/src/main/resources/assets/spectrum/models/item/red_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/red_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/red_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/red_pressure_plate.json new file mode 100644 index 0000000000..e438f65acc --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/red_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/red_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/red_slab.json b/src/main/resources/assets/spectrum/models/item/red_slab.json new file mode 100644 index 0000000000..6f2c878e51 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/red_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/red_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/red_stairs.json b/src/main/resources/assets/spectrum/models/item/red_stairs.json new file mode 100644 index 0000000000..557a8935d6 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/red_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/red_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/white_button.json b/src/main/resources/assets/spectrum/models/item/white_button.json new file mode 100644 index 0000000000..1dc516c47d --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/white_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/white_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/white_fence.json b/src/main/resources/assets/spectrum/models/item/white_fence.json new file mode 100644 index 0000000000..0e9c42da00 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/white_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/white_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/white_fence_gate.json b/src/main/resources/assets/spectrum/models/item/white_fence_gate.json new file mode 100644 index 0000000000..deca5c1fcc --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/white_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/white_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/white_plank_button.json b/src/main/resources/assets/spectrum/models/item/white_plank_button.json deleted file mode 100644 index cdd2391eb9..0000000000 --- a/src/main/resources/assets/spectrum/models/item/white_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/white_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/white_plank_fence.json b/src/main/resources/assets/spectrum/models/item/white_plank_fence.json deleted file mode 100644 index 80af062f5c..0000000000 --- a/src/main/resources/assets/spectrum/models/item/white_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/white_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/white_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/white_plank_fence_gate.json deleted file mode 100644 index 1f3c21a939..0000000000 --- a/src/main/resources/assets/spectrum/models/item/white_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/white_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/white_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/white_plank_pressure_plate.json deleted file mode 100644 index 24fad0fe26..0000000000 --- a/src/main/resources/assets/spectrum/models/item/white_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/white_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/white_plank_slab.json b/src/main/resources/assets/spectrum/models/item/white_plank_slab.json deleted file mode 100644 index 82dbc942bb..0000000000 --- a/src/main/resources/assets/spectrum/models/item/white_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/white_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/white_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/white_plank_stairs.json deleted file mode 100644 index c1c810a8b1..0000000000 --- a/src/main/resources/assets/spectrum/models/item/white_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/white_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/white_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/white_pressure_plate.json new file mode 100644 index 0000000000..7f58b8aaed --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/white_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/white_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/white_slab.json b/src/main/resources/assets/spectrum/models/item/white_slab.json new file mode 100644 index 0000000000..776aae157a --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/white_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/white_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/white_stairs.json b/src/main/resources/assets/spectrum/models/item/white_stairs.json new file mode 100644 index 0000000000..bfaf025021 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/white_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/white_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/yellow_button.json b/src/main/resources/assets/spectrum/models/item/yellow_button.json new file mode 100644 index 0000000000..ceb9704506 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/yellow_button.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/yellow_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/yellow_fence.json b/src/main/resources/assets/spectrum/models/item/yellow_fence.json new file mode 100644 index 0000000000..d756259071 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/yellow_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/yellow_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/yellow_fence_gate.json b/src/main/resources/assets/spectrum/models/item/yellow_fence_gate.json new file mode 100644 index 0000000000..c5a70abd0f --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/yellow_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/yellow_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/yellow_plank_button.json b/src/main/resources/assets/spectrum/models/item/yellow_plank_button.json deleted file mode 100644 index 7be7203003..0000000000 --- a/src/main/resources/assets/spectrum/models/item/yellow_plank_button.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/yellow_plank_button_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/yellow_plank_fence.json b/src/main/resources/assets/spectrum/models/item/yellow_plank_fence.json deleted file mode 100644 index 0d8f45d85b..0000000000 --- a/src/main/resources/assets/spectrum/models/item/yellow_plank_fence.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/yellow_plank_fence_inventory" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/yellow_plank_fence_gate.json b/src/main/resources/assets/spectrum/models/item/yellow_plank_fence_gate.json deleted file mode 100644 index f610101f31..0000000000 --- a/src/main/resources/assets/spectrum/models/item/yellow_plank_fence_gate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/yellow_plank_fence_gate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/yellow_plank_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/yellow_plank_pressure_plate.json deleted file mode 100644 index 41718f8e69..0000000000 --- a/src/main/resources/assets/spectrum/models/item/yellow_plank_pressure_plate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/yellow_plank_pressure_plate" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/yellow_plank_slab.json b/src/main/resources/assets/spectrum/models/item/yellow_plank_slab.json deleted file mode 100644 index d4ad9efc60..0000000000 --- a/src/main/resources/assets/spectrum/models/item/yellow_plank_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/yellow_plank_slab" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/yellow_plank_stairs.json b/src/main/resources/assets/spectrum/models/item/yellow_plank_stairs.json deleted file mode 100644 index 24dff6c0b9..0000000000 --- a/src/main/resources/assets/spectrum/models/item/yellow_plank_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "spectrum:block/yellow_plank_stairs" -} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/yellow_pressure_plate.json b/src/main/resources/assets/spectrum/models/item/yellow_pressure_plate.json new file mode 100644 index 0000000000..ae036d16b8 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/yellow_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/yellow_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/yellow_slab.json b/src/main/resources/assets/spectrum/models/item/yellow_slab.json new file mode 100644 index 0000000000..3a79c69269 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/yellow_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/yellow_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/models/item/yellow_stairs.json b/src/main/resources/assets/spectrum/models/item/yellow_stairs.json new file mode 100644 index 0000000000..bda7131fb7 --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/yellow_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "spectrum:block/yellow_stairs" +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/unstable_bottom_center.json b/src/main/resources/data/minecraft/tags/blocks/unstable_bottom_center.json index 6de1008192..fe85341d38 100644 --- a/src/main/resources/data/minecraft/tags/blocks/unstable_bottom_center.json +++ b/src/main/resources/data/minecraft/tags/blocks/unstable_bottom_center.json @@ -1,21 +1,21 @@ { "replace": false, "values": [ - "spectrum:black_plank_fence_gate", - "spectrum:blue_plank_fence_gate", - "spectrum:brown_plank_fence_gate", - "spectrum:cyan_plank_fence_gate", - "spectrum:gray_plank_fence_gate", - "spectrum:green_plank_fence_gate", - "spectrum:light_blue_plank_fence_gate", - "spectrum:light_gray_plank_fence_gate", - "spectrum:lime_plank_fence_gate", - "spectrum:magenta_plank_fence_gate", - "spectrum:orange_plank_fence_gate", - "spectrum:pink_plank_fence_gate", - "spectrum:purple_plank_fence_gate", - "spectrum:red_plank_fence_gate", - "spectrum:white_plank_fence_gate", - "spectrum:yellow_plank_fence_gate" + "spectrum:black_fence_gate", + "spectrum:blue_fence_gate", + "spectrum:brown_fence_gate", + "spectrum:cyan_fence_gate", + "spectrum:gray_fence_gate", + "spectrum:green_fence_gate", + "spectrum:light_blue_fence_gate", + "spectrum:light_gray_fence_gate", + "spectrum:lime_fence_gate", + "spectrum:magenta_fence_gate", + "spectrum:orange_fence_gate", + "spectrum:pink_fence_gate", + "spectrum:purple_fence_gate", + "spectrum:red_fence_gate", + "spectrum:white_fence_gate", + "spectrum:yellow_fence_gate" ] } \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/pressure_plate.json b/src/main/resources/data/minecraft/tags/items/pressure_plate.json index 1b3537062b..fd7d9a7067 100644 --- a/src/main/resources/data/minecraft/tags/items/pressure_plate.json +++ b/src/main/resources/data/minecraft/tags/items/pressure_plate.json @@ -1,21 +1,21 @@ { "replace": false, "values": [ - "spectrum:black_plank_pressure_plate", - "spectrum:blue_plank_pressure_plate", - "spectrum:brown_plank_pressure_plate", - "spectrum:cyan_plank_pressure_plate", - "spectrum:gray_plank_pressure_plate", - "spectrum:green_plank_pressure_plate", - "spectrum:light_blue_plank_pressure_plate", - "spectrum:light_gray_plank_pressure_plate", - "spectrum:lime_plank_pressure_plate", - "spectrum:magenta_plank_pressure_plate", - "spectrum:orange_plank_pressure_plate", - "spectrum:pink_plank_pressure_plate", - "spectrum:purple_plank_pressure_plate", - "spectrum:red_plank_pressure_plate", - "spectrum:white_plank_pressure_plate", - "spectrum:yellow_plank_pressure_plate" + "spectrum:black_pressure_plate", + "spectrum:blue_pressure_plate", + "spectrum:brown_pressure_plate", + "spectrum:cyan_pressure_plate", + "spectrum:gray_pressure_plate", + "spectrum:green_pressure_plate", + "spectrum:light_blue_pressure_plate", + "spectrum:light_gray_pressure_plate", + "spectrum:lime_pressure_plate", + "spectrum:magenta_pressure_plate", + "spectrum:orange_pressure_plate", + "spectrum:pink_pressure_plate", + "spectrum:purple_pressure_plate", + "spectrum:red_pressure_plate", + "spectrum:white_pressure_plate", + "spectrum:yellow_pressure_plate" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_button.json index d0f98a2bcb..9b241f364c 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:black_plank_button" + "name": "spectrum:black_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_fence.json index 92d4e0a65d..fd5a52cc78 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:black_plank_fence" + "name": "spectrum:black_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_fence_gate.json index e43086abcc..047f6df480 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:black_plank_fence_gate" + "name": "spectrum:black_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_pressure_plate.json index dffe4caf49..2687d98cfb 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:black_plank_pressure_plate" + "name": "spectrum:black_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_slab.json index caa90aaa3b..39e20e82b1 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:black_plank_slab" + "name": "spectrum:black_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_stairs.json index 0ead8c4a48..01ea71f569 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/black_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:black_plank_stairs" + "name": "spectrum:black_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_button.json index bad9f7518c..866fcbb6cd 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:blue_plank_button" + "name": "spectrum:blue_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_fence.json index a629e6622b..40040b59fa 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:blue_plank_fence" + "name": "spectrum:blue_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_fence_gate.json index 4e6ac3242e..53347b19fe 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:blue_plank_fence_gate" + "name": "spectrum:blue_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_pressure_plate.json index d67aa84158..252a368921 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:blue_plank_pressure_plate" + "name": "spectrum:blue_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_slab.json index f8a2e3feb7..4b1c39acc1 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:blue_plank_slab" + "name": "spectrum:blue_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_stairs.json index 77cec67d6a..51644dbeb8 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/blue_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:blue_plank_stairs" + "name": "spectrum:blue_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_button.json index e690408ebe..fe03725127 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:brown_plank_button" + "name": "spectrum:brown_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_fence.json index a205f15364..073d6eadc8 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:brown_plank_fence" + "name": "spectrum:brown_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_fence_gate.json index 1ef19c1b1d..f9227915c5 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:brown_plank_fence_gate" + "name": "spectrum:brown_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_pressure_plate.json index 23f578eac9..820f1c4d57 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:brown_plank_pressure_plate" + "name": "spectrum:brown_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_slab.json index 9b5598785c..bb58aea336 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:brown_plank_slab" + "name": "spectrum:brown_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_stairs.json index a3816b8de6..96b123409d 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/brown_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:brown_plank_stairs" + "name": "spectrum:brown_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_button.json index 5422c53977..ee3af141cf 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:cyan_plank_button" + "name": "spectrum:cyan_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_fence.json index 298d71740c..4cfaeadeda 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:cyan_plank_fence" + "name": "spectrum:cyan_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_fence_gate.json index b1dbd97be5..d0a152501f 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:cyan_plank_fence_gate" + "name": "spectrum:cyan_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_pressure_plate.json index d3a996ec38..eb82f107b2 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:cyan_plank_pressure_plate" + "name": "spectrum:cyan_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_slab.json index 4b187a327d..f78620376a 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:cyan_plank_slab" + "name": "spectrum:cyan_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_stairs.json index f9b7edfb79..6441e63a69 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/cyan_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:cyan_plank_stairs" + "name": "spectrum:cyan_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_button.json index 15d3782dc1..ed9633f63b 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:gray_plank_button" + "name": "spectrum:gray_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_fence.json index 775bc343f5..ebed5f5eaa 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:gray_plank_fence" + "name": "spectrum:gray_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_fence_gate.json index 5a649a3aa7..6128aea817 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:gray_plank_fence_gate" + "name": "spectrum:gray_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_pressure_plate.json index 1bbdff9995..c095687356 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:gray_plank_pressure_plate" + "name": "spectrum:gray_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_slab.json index ef685e4975..b0fc14fcf9 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:gray_plank_slab" + "name": "spectrum:gray_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_stairs.json index 4d6ab58731..2c21ef9ee0 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/gray_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:gray_plank_stairs" + "name": "spectrum:gray_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_button.json index 42de5a6c20..575a3a12af 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:green_plank_button" + "name": "spectrum:green_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_fence.json index dd3b2ce0a1..c187e490e5 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:green_plank_fence" + "name": "spectrum:green_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_fence_gate.json index d45ce76e25..9099756d2e 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:green_plank_fence_gate" + "name": "spectrum:green_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_pressure_plate.json index 854299ba58..62a378d39a 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:green_plank_pressure_plate" + "name": "spectrum:green_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_slab.json index d4d435e226..179341bbbc 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:green_plank_slab" + "name": "spectrum:green_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_stairs.json index fa69da97db..22f2ce6ad9 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/green_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:green_plank_stairs" + "name": "spectrum:green_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_button.json index 44c463b165..3628bc3889 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:light_blue_plank_button" + "name": "spectrum:light_blue_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_fence.json index 79d9ff074a..f593ce9444 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:light_blue_plank_fence" + "name": "spectrum:light_blue_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_fence_gate.json index b58330344d..e3f83b282b 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:light_blue_plank_fence_gate" + "name": "spectrum:light_blue_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_pressure_plate.json index 8b09fdde03..76b2307471 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:light_blue_plank_pressure_plate" + "name": "spectrum:light_blue_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_slab.json index 9f6ab9a7ed..2585853e17 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:light_blue_plank_slab" + "name": "spectrum:light_blue_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_stairs.json index b573520210..e96017b035 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/light_blue_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:light_blue_plank_stairs" + "name": "spectrum:light_blue_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_button.json index afb3951c4d..83e55681d0 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:light_gray_plank_button" + "name": "spectrum:light_gray_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_fence.json index ff78e92cc5..2196ecdda1 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:light_gray_plank_fence" + "name": "spectrum:light_gray_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_fence_gate.json index 5116f30320..d57223ca55 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:light_gray_plank_fence_gate" + "name": "spectrum:light_gray_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_pressure_plate.json index e2cc6018d1..ec03150ae6 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:light_gray_plank_pressure_plate" + "name": "spectrum:light_gray_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_slab.json index 3a028caf6a..e42f1f6b23 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:light_gray_plank_slab" + "name": "spectrum:light_gray_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_stairs.json index 0be16f7b47..f5f9f3b2f8 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/light_gray_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:light_gray_plank_stairs" + "name": "spectrum:light_gray_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_button.json index 9e2e016f77..fa18598044 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:lime_plank_button" + "name": "spectrum:lime_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_fence.json index 42aab789c5..edc79e0883 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:lime_plank_fence" + "name": "spectrum:lime_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_fence_gate.json index 143de22a86..91e5acac9c 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:lime_plank_fence_gate" + "name": "spectrum:lime_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_pressure_plate.json index 8b243ee920..ea68a4425d 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:lime_plank_pressure_plate" + "name": "spectrum:lime_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_slab.json index 1f070a3812..d6f82705a0 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:lime_plank_slab" + "name": "spectrum:lime_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_stairs.json index 1d20cc57fd..30af77881e 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/lime_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:lime_plank_stairs" + "name": "spectrum:lime_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_button.json index 956190d8a1..c0e6f445b7 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:magenta_plank_button" + "name": "spectrum:magenta_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_fence.json index 7a7e9c11e0..59ea9cf8d1 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:magenta_plank_fence" + "name": "spectrum:magenta_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_fence_gate.json index 1b304fc210..bcd5f418af 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:magenta_plank_fence_gate" + "name": "spectrum:magenta_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_pressure_plate.json index a0b0d9a345..9fd7ec306b 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:magenta_plank_pressure_plate" + "name": "spectrum:magenta_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_slab.json index 221c65417f..afe990cb6c 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:magenta_plank_slab" + "name": "spectrum:magenta_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_stairs.json index cdb39f80d4..78fdd3f056 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/magenta_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:magenta_plank_stairs" + "name": "spectrum:magenta_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_button.json index b5c7ea22a3..48d2833dca 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:orange_plank_button" + "name": "spectrum:orange_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_fence.json index 2ff7777c5c..aea558231b 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:orange_plank_fence" + "name": "spectrum:orange_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_fence_gate.json index 1e5b8534a9..24c0802dc2 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:orange_plank_fence_gate" + "name": "spectrum:orange_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_pressure_plate.json index c64fdb2393..b01bfdc066 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:orange_plank_pressure_plate" + "name": "spectrum:orange_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_slab.json index 6f3267ad1e..10773fefbc 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:orange_plank_slab" + "name": "spectrum:orange_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_stairs.json index 8c97072caf..042a724ec7 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/orange_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:orange_plank_stairs" + "name": "spectrum:orange_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_button.json index 8c62a16ea7..64fa3adfb6 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:pink_plank_button" + "name": "spectrum:pink_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_fence.json index aa4dec4586..2ca6c6ca27 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:pink_plank_fence" + "name": "spectrum:pink_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_fence_gate.json index 336f76ac8d..31399ef245 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:pink_plank_fence_gate" + "name": "spectrum:pink_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_pressure_plate.json index 0149ead1cc..8dd049ad12 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:pink_plank_pressure_plate" + "name": "spectrum:pink_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_slab.json index 6d9dec8c06..18c526c077 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:pink_plank_slab" + "name": "spectrum:pink_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_stairs.json index 299d35ed4a..31dc9ea02e 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/pink_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:pink_plank_stairs" + "name": "spectrum:pink_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_button.json index 64513db974..941f2e7cb8 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:purple_plank_button" + "name": "spectrum:purple_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_fence.json index f8dcb45548..9ab021014d 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:purple_plank_fence" + "name": "spectrum:purple_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_fence_gate.json index e4e7497543..1e479369c5 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:purple_plank_fence_gate" + "name": "spectrum:purple_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_pressure_plate.json index 7775490a2a..f9a0c3b6d7 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:purple_plank_pressure_plate" + "name": "spectrum:purple_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_slab.json index 30631623e1..e43b1e1889 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:purple_plank_slab" + "name": "spectrum:purple_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_stairs.json index cd5e673c4c..ca3b6498d4 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/purple_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:purple_plank_stairs" + "name": "spectrum:purple_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_button.json index d5c8429ae9..36257db0a4 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:red_plank_button" + "name": "spectrum:red_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_fence.json index b6ad32716c..e37fd77b5d 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:red_plank_fence" + "name": "spectrum:red_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_fence_gate.json index 8bc99d4bf8..583ce372f8 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:red_plank_fence_gate" + "name": "spectrum:red_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_pressure_plate.json index 047aff0923..018bfc9f02 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:red_plank_pressure_plate" + "name": "spectrum:red_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_slab.json index d671492c4d..ac9d5d3b7c 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:red_plank_slab" + "name": "spectrum:red_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_stairs.json index 9c3be8d69a..aa60af0ddc 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/red_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:red_plank_stairs" + "name": "spectrum:red_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_button.json index fef3e70012..a6ab12ee09 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:white_plank_button" + "name": "spectrum:white_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_fence.json index 0d4f0df82b..0a047935ae 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:white_plank_fence" + "name": "spectrum:white_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_fence_gate.json index 84aac90842..0a032a6875 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:white_plank_fence_gate" + "name": "spectrum:white_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_pressure_plate.json index ec6530f666..a2dcc7d12b 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:white_plank_pressure_plate" + "name": "spectrum:white_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_slab.json index c62ac2e5f3..07b39e2eb7 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:white_plank_slab" + "name": "spectrum:white_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_stairs.json index 2f4878f72a..de360cfdfb 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/white_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:white_plank_stairs" + "name": "spectrum:white_stairs" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_button.json b/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_button.json index 597b21b99c..f3e1c26373 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_button.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_button.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:yellow_plank_button" + "name": "spectrum:yellow_button" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_fence.json b/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_fence.json index 73d60615db..d65e5fb34f 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_fence.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_fence.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:yellow_plank_fence" + "name": "spectrum:yellow_fence" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_fence_gate.json b/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_fence_gate.json index 56a73f9bb9..c76ebf3f7a 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_fence_gate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:yellow_plank_fence_gate" + "name": "spectrum:yellow_fence_gate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_pressure_plate.json b/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_pressure_plate.json index 358b91b51d..707a76986a 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_pressure_plate.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:yellow_plank_pressure_plate" + "name": "spectrum:yellow_pressure_plate" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_slab.json b/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_slab.json index 68338e9be4..c9e7824ffc 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_slab.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_slab.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:yellow_plank_slab" + "name": "spectrum:yellow_slab" } ] } diff --git a/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_stairs.json b/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_stairs.json index 9285642173..572abca72d 100644 --- a/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_stairs.json +++ b/src/main/resources/data/spectrum/loot_tables/blocks/yellow_plank_stairs.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "spectrum:yellow_plank_stairs" + "name": "spectrum:yellow_stairs" } ] } diff --git a/src/main/resources/data/spectrum/patchouli_books/manual/en_us/entries/general/colored_trees.json b/src/main/resources/data/spectrum/patchouli_books/manual/en_us/entries/general/colored_trees.json index e6524bb2bf..b257f49cf4 100644 --- a/src/main/resources/data/spectrum/patchouli_books/manual/en_us/entries/general/colored_trees.json +++ b/src/main/resources/data/spectrum/patchouli_books/manual/en_us/entries/general/colored_trees.json @@ -70,102 +70,102 @@ "spectrum:red_planks": 0, "spectrum:white_planks": 0, "spectrum:yellow_planks": 0, - "spectrum:black_plank_stairs": 0, - "spectrum:blue_plank_stairs": 0, - "spectrum:brown_plank_stairs": 0, - "spectrum:cyan_plank_stairs": 0, - "spectrum:gray_plank_stairs": 0, - "spectrum:green_plank_stairs": 0, - "spectrum:light_blue_plank_stairs": 0, - "spectrum:light_gray_plank_stairs": 0, - "spectrum:lime_plank_stairs": 0, - "spectrum:magenta_plank_stairs": 0, - "spectrum:orange_plank_stairs": 0, - "spectrum:pink_plank_stairs": 0, - "spectrum:purple_plank_stairs": 0, - "spectrum:red_plank_stairs": 0, - "spectrum:white_plank_stairs": 0, - "spectrum:yellow_plank_stairs": 0, - "spectrum:black_plank_pressure_plate": 0, - "spectrum:blue_plank_pressure_plate": 0, - "spectrum:brown_plank_pressure_plate": 0, - "spectrum:cyan_plank_pressure_plate": 0, - "spectrum:gray_plank_pressure_plate": 0, - "spectrum:green_plank_pressure_plate": 0, - "spectrum:light_blue_plank_pressure_plate": 0, - "spectrum:light_gray_plank_pressure_plate": 0, - "spectrum:lime_plank_pressure_plate": 0, - "spectrum:magenta_plank_pressure_plate": 0, - "spectrum:orange_plank_pressure_plate": 0, - "spectrum:pink_plank_pressure_plate": 0, - "spectrum:purple_plank_pressure_plate": 0, - "spectrum:red_plank_pressure_plate": 0, - "spectrum:white_plank_pressure_plate": 0, - "spectrum:yellow_plank_pressure_plate": 0, - "spectrum:black_plank_fence": 0, - "spectrum:blue_plank_fence": 0, - "spectrum:brown_plank_fence": 0, - "spectrum:cyan_plank_fence": 0, - "spectrum:gray_plank_fence": 0, - "spectrum:green_plank_fence": 0, - "spectrum:light_blue_plank_fence": 0, - "spectrum:light_gray_plank_fence": 0, - "spectrum:lime_plank_fence": 0, - "spectrum:magenta_plank_fence": 0, - "spectrum:orange_plank_fence": 0, - "spectrum:pink_plank_fence": 0, - "spectrum:purple_plank_fence": 0, - "spectrum:red_plank_fence": 0, - "spectrum:white_plank_fence": 0, - "spectrum:yellow_plank_fence": 0, - "spectrum:black_plank_fence_gate": 0, - "spectrum:blue_plank_fence_gate": 0, - "spectrum:brown_plank_fence_gate": 0, - "spectrum:cyan_plank_fence_gate": 0, - "spectrum:gray_plank_fence_gate": 0, - "spectrum:green_plank_fence_gate": 0, - "spectrum:light_blue_plank_fence_gate": 0, - "spectrum:light_gray_plank_fence_gate": 0, - "spectrum:lime_plank_fence_gate": 0, - "spectrum:magenta_plank_fence_gate": 0, - "spectrum:orange_plank_fence_gate": 0, - "spectrum:pink_plank_fence_gate": 0, - "spectrum:purple_plank_fence_gate": 0, - "spectrum:red_plank_fence_gate": 0, - "spectrum:white_plank_fence_gate": 0, - "spectrum:yellow_plank_fence_gate": 0, - "spectrum:black_plank_button": 0, - "spectrum:blue_plank_button": 0, - "spectrum:brown_plank_button": 0, - "spectrum:cyan_plank_button": 0, - "spectrum:gray_plank_button": 0, - "spectrum:green_plank_button": 0, - "spectrum:light_blue_plank_button": 0, - "spectrum:light_gray_plank_button": 0, - "spectrum:lime_plank_button": 0, - "spectrum:magenta_plank_button": 0, - "spectrum:orange_plank_button": 0, - "spectrum:pink_plank_button": 0, - "spectrum:purple_plank_button": 0, - "spectrum:red_plank_button": 0, - "spectrum:white_plank_button": 0, - "spectrum:yellow_plank_button": 0, - "spectrum:black_plank_slab": 0, - "spectrum:blue_plank_slab": 0, - "spectrum:brown_plank_slab": 0, - "spectrum:cyan_plank_slab": 0, - "spectrum:gray_plank_slab": 0, - "spectrum:green_plank_slab": 0, - "spectrum:light_blue_plank_slab": 0, - "spectrum:light_gray_plank_slab": 0, - "spectrum:lime_plank_slab": 0, - "spectrum:magenta_plank_slab": 0, - "spectrum:orange_plank_slab": 0, - "spectrum:pink_plank_slab": 0, - "spectrum:purple_plank_slab": 0, - "spectrum:red_plank_slab": 0, - "spectrum:white_plank_slab": 0, - "spectrum:yellow_plank_slab": 0 + "spectrum:black_stairs": 0, + "spectrum:blue_stairs": 0, + "spectrum:brown_stairs": 0, + "spectrum:cyan_stairs": 0, + "spectrum:gray_stairs": 0, + "spectrum:green_stairs": 0, + "spectrum:light_blue_stairs": 0, + "spectrum:light_gray_stairs": 0, + "spectrum:lime_stairs": 0, + "spectrum:magenta_stairs": 0, + "spectrum:orange_stairs": 0, + "spectrum:pink_stairs": 0, + "spectrum:purple_stairs": 0, + "spectrum:red_stairs": 0, + "spectrum:white_stairs": 0, + "spectrum:yellow_stairs": 0, + "spectrum:black_pressure_plate": 0, + "spectrum:blue_pressure_plate": 0, + "spectrum:brown_pressure_plate": 0, + "spectrum:cyan_pressure_plate": 0, + "spectrum:gray_pressure_plate": 0, + "spectrum:green_pressure_plate": 0, + "spectrum:light_blue_pressure_plate": 0, + "spectrum:light_gray_pressure_plate": 0, + "spectrum:lime_pressure_plate": 0, + "spectrum:magenta_pressure_plate": 0, + "spectrum:orange_pressure_plate": 0, + "spectrum:pink_pressure_plate": 0, + "spectrum:purple_pressure_plate": 0, + "spectrum:red_pressure_plate": 0, + "spectrum:white_pressure_plate": 0, + "spectrum:yellow_pressure_plate": 0, + "spectrum:black_fence": 0, + "spectrum:blue_fence": 0, + "spectrum:brown_fence": 0, + "spectrum:cyan_fence": 0, + "spectrum:gray_fence": 0, + "spectrum:green_fence": 0, + "spectrum:light_blue_fence": 0, + "spectrum:light_gray_fence": 0, + "spectrum:lime_fence": 0, + "spectrum:magenta_fence": 0, + "spectrum:orange_fence": 0, + "spectrum:pink_fence": 0, + "spectrum:purple_fence": 0, + "spectrum:red_fence": 0, + "spectrum:white_fence": 0, + "spectrum:yellow_fence": 0, + "spectrum:black_fence_gate": 0, + "spectrum:blue_fence_gate": 0, + "spectrum:brown_fence_gate": 0, + "spectrum:cyan_fence_gate": 0, + "spectrum:gray_fence_gate": 0, + "spectrum:green_fence_gate": 0, + "spectrum:light_blue_fence_gate": 0, + "spectrum:light_gray_fence_gate": 0, + "spectrum:lime_fence_gate": 0, + "spectrum:magenta_fence_gate": 0, + "spectrum:orange_fence_gate": 0, + "spectrum:pink_fence_gate": 0, + "spectrum:purple_fence_gate": 0, + "spectrum:red_fence_gate": 0, + "spectrum:white_fence_gate": 0, + "spectrum:yellow_fence_gate": 0, + "spectrum:black_button": 0, + "spectrum:blue_button": 0, + "spectrum:brown_button": 0, + "spectrum:cyan_button": 0, + "spectrum:gray_button": 0, + "spectrum:green_button": 0, + "spectrum:light_blue_button": 0, + "spectrum:light_gray_button": 0, + "spectrum:lime_button": 0, + "spectrum:magenta_button": 0, + "spectrum:orange_button": 0, + "spectrum:pink_button": 0, + "spectrum:purple_button": 0, + "spectrum:red_button": 0, + "spectrum:white_button": 0, + "spectrum:yellow_button": 0, + "spectrum:black_slab": 0, + "spectrum:blue_slab": 0, + "spectrum:brown_slab": 0, + "spectrum:cyan_slab": 0, + "spectrum:gray_slab": 0, + "spectrum:green_slab": 0, + "spectrum:light_blue_slab": 0, + "spectrum:light_gray_slab": 0, + "spectrum:lime_slab": 0, + "spectrum:magenta_slab": 0, + "spectrum:orange_slab": 0, + "spectrum:pink_slab": 0, + "spectrum:purple_slab": 0, + "spectrum:red_slab": 0, + "spectrum:white_slab": 0, + "spectrum:yellow_slab": 0 }, "pages": [ { diff --git a/src/main/resources/data/spectrum/patchouli_books/manual/pt_br/entries/general/colored_trees.json b/src/main/resources/data/spectrum/patchouli_books/manual/pt_br/entries/general/colored_trees.json index fffccb085b..1f81607b13 100644 --- a/src/main/resources/data/spectrum/patchouli_books/manual/pt_br/entries/general/colored_trees.json +++ b/src/main/resources/data/spectrum/patchouli_books/manual/pt_br/entries/general/colored_trees.json @@ -70,102 +70,102 @@ "spectrum:red_planks": 0, "spectrum:white_planks": 0, "spectrum:yellow_planks": 0, - "spectrum:black_plank_stairs": 0, - "spectrum:blue_plank_stairs": 0, - "spectrum:brown_plank_stairs": 0, - "spectrum:cyan_plank_stairs": 0, - "spectrum:gray_plank_stairs": 0, - "spectrum:green_plank_stairs": 0, - "spectrum:light_blue_plank_stairs": 0, - "spectrum:light_gray_plank_stairs": 0, - "spectrum:lime_plank_stairs": 0, - "spectrum:magenta_plank_stairs": 0, - "spectrum:orange_plank_stairs": 0, - "spectrum:pink_plank_stairs": 0, - "spectrum:purple_plank_stairs": 0, - "spectrum:red_plank_stairs": 0, - "spectrum:white_plank_stairs": 0, - "spectrum:yellow_plank_stairs": 0, - "spectrum:black_plank_pressure_plate": 0, - "spectrum:blue_plank_pressure_plate": 0, - "spectrum:brown_plank_pressure_plate": 0, - "spectrum:cyan_plank_pressure_plate": 0, - "spectrum:gray_plank_pressure_plate": 0, - "spectrum:green_plank_pressure_plate": 0, - "spectrum:light_blue_plank_pressure_plate": 0, - "spectrum:light_gray_plank_pressure_plate": 0, - "spectrum:lime_plank_pressure_plate": 0, - "spectrum:magenta_plank_pressure_plate": 0, - "spectrum:orange_plank_pressure_plate": 0, - "spectrum:pink_plank_pressure_plate": 0, - "spectrum:purple_plank_pressure_plate": 0, - "spectrum:red_plank_pressure_plate": 0, - "spectrum:white_plank_pressure_plate": 0, - "spectrum:yellow_plank_pressure_plate": 0, - "spectrum:black_plank_fence": 0, - "spectrum:blue_plank_fence": 0, - "spectrum:brown_plank_fence": 0, - "spectrum:cyan_plank_fence": 0, - "spectrum:gray_plank_fence": 0, - "spectrum:green_plank_fence": 0, - "spectrum:light_blue_plank_fence": 0, - "spectrum:light_gray_plank_fence": 0, - "spectrum:lime_plank_fence": 0, - "spectrum:magenta_plank_fence": 0, - "spectrum:orange_plank_fence": 0, - "spectrum:pink_plank_fence": 0, - "spectrum:purple_plank_fence": 0, - "spectrum:red_plank_fence": 0, - "spectrum:white_plank_fence": 0, - "spectrum:yellow_plank_fence": 0, - "spectrum:black_plank_fence_gate": 0, - "spectrum:blue_plank_fence_gate": 0, - "spectrum:brown_plank_fence_gate": 0, - "spectrum:cyan_plank_fence_gate": 0, - "spectrum:gray_plank_fence_gate": 0, - "spectrum:green_plank_fence_gate": 0, - "spectrum:light_blue_plank_fence_gate": 0, - "spectrum:light_gray_plank_fence_gate": 0, - "spectrum:lime_plank_fence_gate": 0, - "spectrum:magenta_plank_fence_gate": 0, - "spectrum:orange_plank_fence_gate": 0, - "spectrum:pink_plank_fence_gate": 0, - "spectrum:purple_plank_fence_gate": 0, - "spectrum:red_plank_fence_gate": 0, - "spectrum:white_plank_fence_gate": 0, - "spectrum:yellow_plank_fence_gate": 0, - "spectrum:black_plank_button": 0, - "spectrum:blue_plank_button": 0, - "spectrum:brown_plank_button": 0, - "spectrum:cyan_plank_button": 0, - "spectrum:gray_plank_button": 0, - "spectrum:green_plank_button": 0, - "spectrum:light_blue_plank_button": 0, - "spectrum:light_gray_plank_button": 0, - "spectrum:lime_plank_button": 0, - "spectrum:magenta_plank_button": 0, - "spectrum:orange_plank_button": 0, - "spectrum:pink_plank_button": 0, - "spectrum:purple_plank_button": 0, - "spectrum:red_plank_button": 0, - "spectrum:white_plank_button": 0, - "spectrum:yellow_plank_button": 0, - "spectrum:black_plank_slab": 0, - "spectrum:blue_plank_slab": 0, - "spectrum:brown_plank_slab": 0, - "spectrum:cyan_plank_slab": 0, - "spectrum:gray_plank_slab": 0, - "spectrum:green_plank_slab": 0, - "spectrum:light_blue_plank_slab": 0, - "spectrum:light_gray_plank_slab": 0, - "spectrum:lime_plank_slab": 0, - "spectrum:magenta_plank_slab": 0, - "spectrum:orange_plank_slab": 0, - "spectrum:pink_plank_slab": 0, - "spectrum:purple_plank_slab": 0, - "spectrum:red_plank_slab": 0, - "spectrum:white_plank_slab": 0, - "spectrum:yellow_plank_slab": 0 + "spectrum:black_stairs": 0, + "spectrum:blue_stairs": 0, + "spectrum:brown_stairs": 0, + "spectrum:cyan_stairs": 0, + "spectrum:gray_stairs": 0, + "spectrum:green_stairs": 0, + "spectrum:light_blue_stairs": 0, + "spectrum:light_gray_stairs": 0, + "spectrum:lime_stairs": 0, + "spectrum:magenta_stairs": 0, + "spectrum:orange_stairs": 0, + "spectrum:pink_stairs": 0, + "spectrum:purple_stairs": 0, + "spectrum:red_stairs": 0, + "spectrum:white_stairs": 0, + "spectrum:yellow_stairs": 0, + "spectrum:black_pressure_plate": 0, + "spectrum:blue_pressure_plate": 0, + "spectrum:brown_pressure_plate": 0, + "spectrum:cyan_pressure_plate": 0, + "spectrum:gray_pressure_plate": 0, + "spectrum:green_pressure_plate": 0, + "spectrum:light_blue_pressure_plate": 0, + "spectrum:light_gray_pressure_plate": 0, + "spectrum:lime_pressure_plate": 0, + "spectrum:magenta_pressure_plate": 0, + "spectrum:orange_pressure_plate": 0, + "spectrum:pink_pressure_plate": 0, + "spectrum:purple_pressure_plate": 0, + "spectrum:red_pressure_plate": 0, + "spectrum:white_pressure_plate": 0, + "spectrum:yellow_pressure_plate": 0, + "spectrum:black_fence": 0, + "spectrum:blue_fence": 0, + "spectrum:brown_fence": 0, + "spectrum:cyan_fence": 0, + "spectrum:gray_fence": 0, + "spectrum:green_fence": 0, + "spectrum:light_blue_fence": 0, + "spectrum:light_gray_fence": 0, + "spectrum:lime_fence": 0, + "spectrum:magenta_fence": 0, + "spectrum:orange_fence": 0, + "spectrum:pink_fence": 0, + "spectrum:purple_fence": 0, + "spectrum:red_fence": 0, + "spectrum:white_fence": 0, + "spectrum:yellow_fence": 0, + "spectrum:black_fence_gate": 0, + "spectrum:blue_fence_gate": 0, + "spectrum:brown_fence_gate": 0, + "spectrum:cyan_fence_gate": 0, + "spectrum:gray_fence_gate": 0, + "spectrum:green_fence_gate": 0, + "spectrum:light_blue_fence_gate": 0, + "spectrum:light_gray_fence_gate": 0, + "spectrum:lime_fence_gate": 0, + "spectrum:magenta_fence_gate": 0, + "spectrum:orange_fence_gate": 0, + "spectrum:pink_fence_gate": 0, + "spectrum:purple_fence_gate": 0, + "spectrum:red_fence_gate": 0, + "spectrum:white_fence_gate": 0, + "spectrum:yellow_fence_gate": 0, + "spectrum:black_button": 0, + "spectrum:blue_button": 0, + "spectrum:brown_button": 0, + "spectrum:cyan_button": 0, + "spectrum:gray_button": 0, + "spectrum:green_button": 0, + "spectrum:light_blue_button": 0, + "spectrum:light_gray_button": 0, + "spectrum:lime_button": 0, + "spectrum:magenta_button": 0, + "spectrum:orange_button": 0, + "spectrum:pink_button": 0, + "spectrum:purple_button": 0, + "spectrum:red_button": 0, + "spectrum:white_button": 0, + "spectrum:yellow_button": 0, + "spectrum:black_slab": 0, + "spectrum:blue_slab": 0, + "spectrum:brown_slab": 0, + "spectrum:cyan_slab": 0, + "spectrum:gray_slab": 0, + "spectrum:green_slab": 0, + "spectrum:light_blue_slab": 0, + "spectrum:light_gray_slab": 0, + "spectrum:lime_slab": 0, + "spectrum:magenta_slab": 0, + "spectrum:orange_slab": 0, + "spectrum:pink_slab": 0, + "spectrum:purple_slab": 0, + "spectrum:red_slab": 0, + "spectrum:white_slab": 0, + "spectrum:yellow_slab": 0 }, "pages": [ { diff --git a/src/main/resources/data/spectrum/patchouli_books/manual/zh_cn/entries/general/colored_trees.json b/src/main/resources/data/spectrum/patchouli_books/manual/zh_cn/entries/general/colored_trees.json index 1a0469e9b6..39ee683fe5 100644 --- a/src/main/resources/data/spectrum/patchouli_books/manual/zh_cn/entries/general/colored_trees.json +++ b/src/main/resources/data/spectrum/patchouli_books/manual/zh_cn/entries/general/colored_trees.json @@ -70,102 +70,102 @@ "spectrum:red_planks": 0, "spectrum:white_planks": 0, "spectrum:yellow_planks": 0, - "spectrum:black_plank_stairs": 0, - "spectrum:blue_plank_stairs": 0, - "spectrum:brown_plank_stairs": 0, - "spectrum:cyan_plank_stairs": 0, - "spectrum:gray_plank_stairs": 0, - "spectrum:green_plank_stairs": 0, - "spectrum:light_blue_plank_stairs": 0, - "spectrum:light_gray_plank_stairs": 0, - "spectrum:lime_plank_stairs": 0, - "spectrum:magenta_plank_stairs": 0, - "spectrum:orange_plank_stairs": 0, - "spectrum:pink_plank_stairs": 0, - "spectrum:purple_plank_stairs": 0, - "spectrum:red_plank_stairs": 0, - "spectrum:white_plank_stairs": 0, - "spectrum:yellow_plank_stairs": 0, - "spectrum:black_plank_pressure_plate": 0, - "spectrum:blue_plank_pressure_plate": 0, - "spectrum:brown_plank_pressure_plate": 0, - "spectrum:cyan_plank_pressure_plate": 0, - "spectrum:gray_plank_pressure_plate": 0, - "spectrum:green_plank_pressure_plate": 0, - "spectrum:light_blue_plank_pressure_plate": 0, - "spectrum:light_gray_plank_pressure_plate": 0, - "spectrum:lime_plank_pressure_plate": 0, - "spectrum:magenta_plank_pressure_plate": 0, - "spectrum:orange_plank_pressure_plate": 0, - "spectrum:pink_plank_pressure_plate": 0, - "spectrum:purple_plank_pressure_plate": 0, - "spectrum:red_plank_pressure_plate": 0, - "spectrum:white_plank_pressure_plate": 0, - "spectrum:yellow_plank_pressure_plate": 0, - "spectrum:black_plank_fence": 0, - "spectrum:blue_plank_fence": 0, - "spectrum:brown_plank_fence": 0, - "spectrum:cyan_plank_fence": 0, - "spectrum:gray_plank_fence": 0, - "spectrum:green_plank_fence": 0, - "spectrum:light_blue_plank_fence": 0, - "spectrum:light_gray_plank_fence": 0, - "spectrum:lime_plank_fence": 0, - "spectrum:magenta_plank_fence": 0, - "spectrum:orange_plank_fence": 0, - "spectrum:pink_plank_fence": 0, - "spectrum:purple_plank_fence": 0, - "spectrum:red_plank_fence": 0, - "spectrum:white_plank_fence": 0, - "spectrum:yellow_plank_fence": 0, - "spectrum:black_plank_fence_gate": 0, - "spectrum:blue_plank_fence_gate": 0, - "spectrum:brown_plank_fence_gate": 0, - "spectrum:cyan_plank_fence_gate": 0, - "spectrum:gray_plank_fence_gate": 0, - "spectrum:green_plank_fence_gate": 0, - "spectrum:light_blue_plank_fence_gate": 0, - "spectrum:light_gray_plank_fence_gate": 0, - "spectrum:lime_plank_fence_gate": 0, - "spectrum:magenta_plank_fence_gate": 0, - "spectrum:orange_plank_fence_gate": 0, - "spectrum:pink_plank_fence_gate": 0, - "spectrum:purple_plank_fence_gate": 0, - "spectrum:red_plank_fence_gate": 0, - "spectrum:white_plank_fence_gate": 0, - "spectrum:yellow_plank_fence_gate": 0, - "spectrum:black_plank_button": 0, - "spectrum:blue_plank_button": 0, - "spectrum:brown_plank_button": 0, - "spectrum:cyan_plank_button": 0, - "spectrum:gray_plank_button": 0, - "spectrum:green_plank_button": 0, - "spectrum:light_blue_plank_button": 0, - "spectrum:light_gray_plank_button": 0, - "spectrum:lime_plank_button": 0, - "spectrum:magenta_plank_button": 0, - "spectrum:orange_plank_button": 0, - "spectrum:pink_plank_button": 0, - "spectrum:purple_plank_button": 0, - "spectrum:red_plank_button": 0, - "spectrum:white_plank_button": 0, - "spectrum:yellow_plank_button": 0, - "spectrum:black_plank_slab": 0, - "spectrum:blue_plank_slab": 0, - "spectrum:brown_plank_slab": 0, - "spectrum:cyan_plank_slab": 0, - "spectrum:gray_plank_slab": 0, - "spectrum:green_plank_slab": 0, - "spectrum:light_blue_plank_slab": 0, - "spectrum:light_gray_plank_slab": 0, - "spectrum:lime_plank_slab": 0, - "spectrum:magenta_plank_slab": 0, - "spectrum:orange_plank_slab": 0, - "spectrum:pink_plank_slab": 0, - "spectrum:purple_plank_slab": 0, - "spectrum:red_plank_slab": 0, - "spectrum:white_plank_slab": 0, - "spectrum:yellow_plank_slab": 0 + "spectrum:black_stairs": 0, + "spectrum:blue_stairs": 0, + "spectrum:brown_stairs": 0, + "spectrum:cyan_stairs": 0, + "spectrum:gray_stairs": 0, + "spectrum:green_stairs": 0, + "spectrum:light_blue_stairs": 0, + "spectrum:light_gray_stairs": 0, + "spectrum:lime_stairs": 0, + "spectrum:magenta_stairs": 0, + "spectrum:orange_stairs": 0, + "spectrum:pink_stairs": 0, + "spectrum:purple_stairs": 0, + "spectrum:red_stairs": 0, + "spectrum:white_stairs": 0, + "spectrum:yellow_stairs": 0, + "spectrum:black_pressure_plate": 0, + "spectrum:blue_pressure_plate": 0, + "spectrum:brown_pressure_plate": 0, + "spectrum:cyan_pressure_plate": 0, + "spectrum:gray_pressure_plate": 0, + "spectrum:green_pressure_plate": 0, + "spectrum:light_blue_pressure_plate": 0, + "spectrum:light_gray_pressure_plate": 0, + "spectrum:lime_pressure_plate": 0, + "spectrum:magenta_pressure_plate": 0, + "spectrum:orange_pressure_plate": 0, + "spectrum:pink_pressure_plate": 0, + "spectrum:purple_pressure_plate": 0, + "spectrum:red_pressure_plate": 0, + "spectrum:white_pressure_plate": 0, + "spectrum:yellow_pressure_plate": 0, + "spectrum:black_fence": 0, + "spectrum:blue_fence": 0, + "spectrum:brown_fence": 0, + "spectrum:cyan_fence": 0, + "spectrum:gray_fence": 0, + "spectrum:green_fence": 0, + "spectrum:light_blue_fence": 0, + "spectrum:light_gray_fence": 0, + "spectrum:lime_fence": 0, + "spectrum:magenta_fence": 0, + "spectrum:orange_fence": 0, + "spectrum:pink_fence": 0, + "spectrum:purple_fence": 0, + "spectrum:red_fence": 0, + "spectrum:white_fence": 0, + "spectrum:yellow_fence": 0, + "spectrum:black_fence_gate": 0, + "spectrum:blue_fence_gate": 0, + "spectrum:brown_fence_gate": 0, + "spectrum:cyan_fence_gate": 0, + "spectrum:gray_fence_gate": 0, + "spectrum:green_fence_gate": 0, + "spectrum:light_blue_fence_gate": 0, + "spectrum:light_gray_fence_gate": 0, + "spectrum:lime_fence_gate": 0, + "spectrum:magenta_fence_gate": 0, + "spectrum:orange_fence_gate": 0, + "spectrum:pink_fence_gate": 0, + "spectrum:purple_fence_gate": 0, + "spectrum:red_fence_gate": 0, + "spectrum:white_fence_gate": 0, + "spectrum:yellow_fence_gate": 0, + "spectrum:black_button": 0, + "spectrum:blue_button": 0, + "spectrum:brown_button": 0, + "spectrum:cyan_button": 0, + "spectrum:gray_button": 0, + "spectrum:green_button": 0, + "spectrum:light_blue_button": 0, + "spectrum:light_gray_button": 0, + "spectrum:lime_button": 0, + "spectrum:magenta_button": 0, + "spectrum:orange_button": 0, + "spectrum:pink_button": 0, + "spectrum:purple_button": 0, + "spectrum:red_button": 0, + "spectrum:white_button": 0, + "spectrum:yellow_button": 0, + "spectrum:black_slab": 0, + "spectrum:blue_slab": 0, + "spectrum:brown_slab": 0, + "spectrum:cyan_slab": 0, + "spectrum:gray_slab": 0, + "spectrum:green_slab": 0, + "spectrum:light_blue_slab": 0, + "spectrum:light_gray_slab": 0, + "spectrum:lime_slab": 0, + "spectrum:magenta_slab": 0, + "spectrum:orange_slab": 0, + "spectrum:pink_slab": 0, + "spectrum:purple_slab": 0, + "spectrum:red_slab": 0, + "spectrum:white_slab": 0, + "spectrum:yellow_slab": 0 }, "pages": [ { diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_button.json index 74c42c4ddb..c1c468af74 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:black_plank_button" + "item": "spectrum:black_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_fence.json index 1c23554972..9ab2261ee5 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:black_plank_fence", + "item": "spectrum:black_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_fence_gate.json index 05dddb4842..913ed72cdb 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:black_plank_fence_gate" + "item": "spectrum:black_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_pressure_plate.json index b03efb993f..affdde9d26 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:black_plank_pressure_plate" + "item": "spectrum:black_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_slab.json index 0a31fb61b8..7372a081f6 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:black_plank_slab", + "item": "spectrum:black_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_stairs.json index aa68921472..3fe92dbb4e 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/black_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:black_plank_stairs", + "item": "spectrum:black_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_button.json index c018c619a6..45ba25eee3 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:blue_plank_button" + "item": "spectrum:blue_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_fence.json index 3f5992a52a..19902427c1 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:blue_plank_fence", + "item": "spectrum:blue_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_fence_gate.json index 21b90c5ac1..07cf295e86 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:blue_plank_fence_gate" + "item": "spectrum:blue_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_pressure_plate.json index 0405f9ce5c..6ec89474ff 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:blue_plank_pressure_plate" + "item": "spectrum:blue_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_slab.json index fb69b165ab..8bedb6de70 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:blue_plank_slab", + "item": "spectrum:blue_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_stairs.json index cdf2c2cfe1..2ac96aadf1 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/blue_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:blue_plank_stairs", + "item": "spectrum:blue_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_button.json index 171fb0f5ba..4446476eaf 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:brown_plank_button" + "item": "spectrum:brown_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_fence.json index 9aed6e63aa..cb74515381 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:brown_plank_fence", + "item": "spectrum:brown_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_fence_gate.json index 0566187cd7..8d212a44e4 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:brown_plank_fence_gate" + "item": "spectrum:brown_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_pressure_plate.json index 8a9d679d8f..f6618b99c5 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:brown_plank_pressure_plate" + "item": "spectrum:brown_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_slab.json index b5a829cef3..83bf59848a 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:brown_plank_slab", + "item": "spectrum:brown_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_stairs.json index e1b14d6bb9..30386bb1af 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/brown_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:brown_plank_stairs", + "item": "spectrum:brown_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_button.json index f59b552fe9..eb81667194 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:cyan_plank_button" + "item": "spectrum:cyan_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_fence.json index eb470ab09a..aeb6357698 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:cyan_plank_fence", + "item": "spectrum:cyan_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_fence_gate.json index 358e5cc4ed..8d2aac4c4d 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:cyan_plank_fence_gate" + "item": "spectrum:cyan_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_pressure_plate.json index a827997673..3046e29a49 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:cyan_plank_pressure_plate" + "item": "spectrum:cyan_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_slab.json index 1c12793b47..911d5067fb 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:cyan_plank_slab", + "item": "spectrum:cyan_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_stairs.json index 5af52bdfd4..7117716f72 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/cyan_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:cyan_plank_stairs", + "item": "spectrum:cyan_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_button.json index e29834bbca..35f4b6ded0 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:gray_plank_button" + "item": "spectrum:gray_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_fence.json index b5b24a25d4..8d62e6209e 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:gray_plank_fence", + "item": "spectrum:gray_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_fence_gate.json index 8b63745f8b..3ba4bc7242 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:gray_plank_fence_gate" + "item": "spectrum:gray_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_pressure_plate.json index a8df3bb74a..ed811984a0 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:gray_plank_pressure_plate" + "item": "spectrum:gray_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_slab.json index 101f9e01d0..216d06a2c9 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:gray_plank_slab", + "item": "spectrum:gray_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_stairs.json index 3535571b89..9773f448bd 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/gray_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:gray_plank_stairs", + "item": "spectrum:gray_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_button.json index d594e34773..d63cb03b19 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:green_plank_button" + "item": "spectrum:green_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_fence.json index 206080fb7b..6dd3aebdfb 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:green_plank_fence", + "item": "spectrum:green_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_fence_gate.json index 05e47e1001..b090a33081 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:green_plank_fence_gate" + "item": "spectrum:green_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_pressure_plate.json index 727b1c136a..7d308e3213 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:green_plank_pressure_plate" + "item": "spectrum:green_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_slab.json index 4fb21e68cb..890d6935fc 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:green_plank_slab", + "item": "spectrum:green_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_stairs.json index 4acd88434c..d8a779343e 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/green_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:green_plank_stairs", + "item": "spectrum:green_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_button.json index a5e725dc6d..c59042e652 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:light_blue_plank_button" + "item": "spectrum:light_blue_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_fence.json index b4ac4191ea..1206381e7e 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:light_blue_plank_fence", + "item": "spectrum:light_blue_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_fence_gate.json index c5adccea58..e2a1981b02 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:light_blue_plank_fence_gate" + "item": "spectrum:light_blue_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_pressure_plate.json index 44dd367789..de1b4d51ba 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:light_blue_plank_pressure_plate" + "item": "spectrum:light_blue_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_slab.json index 1368bb2d65..0333a98072 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:light_blue_plank_slab", + "item": "spectrum:light_blue_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_stairs.json index d5992af761..d51aeac95c 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_blue_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:light_blue_plank_stairs", + "item": "spectrum:light_blue_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_button.json index 3063d603c1..7833b81987 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:light_gray_plank_button" + "item": "spectrum:light_gray_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_fence.json index 12f3fe8af1..8559260663 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:light_gray_plank_fence", + "item": "spectrum:light_gray_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_fence_gate.json index 1bec7c9cc7..b3e100ccdd 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:light_gray_plank_fence_gate" + "item": "spectrum:light_gray_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_pressure_plate.json index 75794b12e0..0aacfc221b 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:light_gray_plank_pressure_plate" + "item": "spectrum:light_gray_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_slab.json index 74014209aa..8277eca2a0 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:light_gray_plank_slab", + "item": "spectrum:light_gray_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_stairs.json index bc52316235..3ae795e719 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/light_gray_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:light_gray_plank_stairs", + "item": "spectrum:light_gray_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_button.json index 6d85c7d915..a783d1a788 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:lime_plank_button" + "item": "spectrum:lime_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_fence.json index 1ef98ade02..ac8785ff23 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:lime_plank_fence", + "item": "spectrum:lime_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_fence_gate.json index c4339043d9..351cf9693e 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:lime_plank_fence_gate" + "item": "spectrum:lime_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_pressure_plate.json index 5525a6d59e..912317edde 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:lime_plank_pressure_plate" + "item": "spectrum:lime_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_slab.json index 9ef18ff1a0..e7e68e1379 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:lime_plank_slab", + "item": "spectrum:lime_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_stairs.json index 3914801a58..cfc0baa918 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/lime_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:lime_plank_stairs", + "item": "spectrum:lime_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_button.json index f302dd90e2..545fb0ac23 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:magenta_plank_button" + "item": "spectrum:magenta_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_fence.json index 2a33ffc1e4..b5d78b1e74 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:magenta_plank_fence", + "item": "spectrum:magenta_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_fence_gate.json index a30919cc5d..8beab6035f 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:magenta_plank_fence_gate" + "item": "spectrum:magenta_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_pressure_plate.json index 029de7cc76..8b1e6cc31d 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:magenta_plank_pressure_plate" + "item": "spectrum:magenta_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_slab.json index 4055640363..42e0c16b22 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:magenta_plank_slab", + "item": "spectrum:magenta_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_stairs.json index 3a4c162b43..d525819374 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/magenta_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:magenta_plank_stairs", + "item": "spectrum:magenta_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_button.json index a6679d2176..7448749533 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:orange_plank_button" + "item": "spectrum:orange_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_fence.json index ab45a6ebd6..ee760d75a4 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:orange_plank_fence", + "item": "spectrum:orange_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_fence_gate.json index a41558d48b..a1d612edf3 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:orange_plank_fence_gate" + "item": "spectrum:orange_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_pressure_plate.json index 9eb9680b96..ab99a3173c 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:orange_plank_pressure_plate" + "item": "spectrum:orange_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_slab.json index b1609cd5fe..30274582b8 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:orange_plank_slab", + "item": "spectrum:orange_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_stairs.json index 3726ab53b4..c6812860ac 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/orange_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:orange_plank_stairs", + "item": "spectrum:orange_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_button.json index ef49c3cf49..1b77634d49 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:pink_plank_button" + "item": "spectrum:pink_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_fence.json index 84b6a4edae..0217a320a3 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:pink_plank_fence", + "item": "spectrum:pink_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_fence_gate.json index fa65ab3cd5..104e9bdb36 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:pink_plank_fence_gate" + "item": "spectrum:pink_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_pressure_plate.json index 7b57eae0e5..ae98224754 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:pink_plank_pressure_plate" + "item": "spectrum:pink_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_slab.json index e6cabcea46..efdaf8b106 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:pink_plank_slab", + "item": "spectrum:pink_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_stairs.json index f64e8ea792..1f9bc66de2 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/pink_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:pink_plank_stairs", + "item": "spectrum:pink_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_button.json index ef6a0ed54f..6dfc2df4dc 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:purple_plank_button" + "item": "spectrum:purple_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_fence.json index 6279a772be..4851de4952 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:purple_plank_fence", + "item": "spectrum:purple_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_fence_gate.json index bff3d4d1a7..e8d4c5de8b 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:purple_plank_fence_gate" + "item": "spectrum:purple_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_pressure_plate.json index e5b29f24ce..49adeeb1b5 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:purple_plank_pressure_plate" + "item": "spectrum:purple_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_slab.json index 0a71e65041..0b42140d8f 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:purple_plank_slab", + "item": "spectrum:purple_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_stairs.json index 66a85a5115..2e3faf198b 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/purple_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:purple_plank_stairs", + "item": "spectrum:purple_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_button.json index deca27d8bb..2b86e8ba51 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:red_plank_button" + "item": "spectrum:red_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_fence.json index d883b3e242..056440ce5d 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:red_plank_fence", + "item": "spectrum:red_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_fence_gate.json index 780aa960e2..f2bb0dfcdc 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:red_plank_fence_gate" + "item": "spectrum:red_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_pressure_plate.json index 30ee302cfa..68301c8531 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:red_plank_pressure_plate" + "item": "spectrum:red_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_slab.json index 4783fd060e..de67ffce1e 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:red_plank_slab", + "item": "spectrum:red_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_stairs.json index f3211440c3..09ab9cb3c9 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/red_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:red_plank_stairs", + "item": "spectrum:red_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_button.json index aae23e1294..65b75398d1 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:white_plank_button" + "item": "spectrum:white_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_fence.json index 9eaafafe21..5130ace15a 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:white_plank_fence", + "item": "spectrum:white_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_fence_gate.json index ff43f64e69..ab4e58d88a 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:white_plank_fence_gate" + "item": "spectrum:white_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_pressure_plate.json index d43110e15c..e45e020b2e 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:white_plank_pressure_plate" + "item": "spectrum:white_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_slab.json index c5a21aa65a..9699b11bc3 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:white_plank_slab", + "item": "spectrum:white_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_stairs.json index 96cce9eafd..e104abc70a 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/white_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:white_plank_stairs", + "item": "spectrum:white_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_button.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_button.json index 6e64a0f44d..bc2551eb4a 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_button.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_button.json @@ -7,6 +7,6 @@ } ], "result": { - "item": "spectrum:yellow_plank_button" + "item": "spectrum:yellow_button" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_fence.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_fence.json index 8b5d72b230..723fe63ccd 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_fence.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_fence.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "spectrum:yellow_plank_fence", + "item": "spectrum:yellow_fence", "count": 3 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_fence_gate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_fence_gate.json index ce01dc2e7e..4986640ae4 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_fence_gate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_fence_gate.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "spectrum:yellow_plank_fence_gate" + "item": "spectrum:yellow_fence_gate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_pressure_plate.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_pressure_plate.json index a9ee591250..24a081a836 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_pressure_plate.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_pressure_plate.json @@ -10,6 +10,6 @@ } }, "result": { - "item": "spectrum:yellow_plank_pressure_plate" + "item": "spectrum:yellow_pressure_plate" } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_slab.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_slab.json index bb56aecc12..18491b15a2 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_slab.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_slab.json @@ -10,7 +10,7 @@ } }, "result": { - "item": "spectrum:yellow_plank_slab", + "item": "spectrum:yellow_slab", "count": 6 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_stairs.json b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_stairs.json index 2a000fc189..638f984019 100644 --- a/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_stairs.json +++ b/src/main/resources/data/spectrum/recipes/crafting_table/colored_wood/yellow_plank_stairs.json @@ -12,7 +12,7 @@ } }, "result": { - "item": "spectrum:yellow_plank_stairs", + "item": "spectrum:yellow_stairs", "count": 4 } } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/blocks/colored_buttons.json b/src/main/resources/data/spectrum/tags/blocks/colored_buttons.json index 6a6ef11b4c..e5f085a132 100644 --- a/src/main/resources/data/spectrum/tags/blocks/colored_buttons.json +++ b/src/main/resources/data/spectrum/tags/blocks/colored_buttons.json @@ -1,21 +1,21 @@ { "replace": false, "values": [ - "spectrum:black_plank_button", - "spectrum:blue_plank_button", - "spectrum:brown_plank_button", - "spectrum:cyan_plank_button", - "spectrum:gray_plank_button", - "spectrum:green_plank_button", - "spectrum:light_blue_plank_button", - "spectrum:light_gray_plank_button", - "spectrum:lime_plank_button", - "spectrum:magenta_plank_button", - "spectrum:orange_plank_button", - "spectrum:pink_plank_button", - "spectrum:purple_plank_button", - "spectrum:red_plank_button", - "spectrum:white_plank_button", - "spectrum:yellow_plank_button" + "spectrum:black_button", + "spectrum:blue_button", + "spectrum:brown_button", + "spectrum:cyan_button", + "spectrum:gray_button", + "spectrum:green_button", + "spectrum:light_blue_button", + "spectrum:light_gray_button", + "spectrum:lime_button", + "spectrum:magenta_button", + "spectrum:orange_button", + "spectrum:pink_button", + "spectrum:purple_button", + "spectrum:red_button", + "spectrum:white_button", + "spectrum:yellow_button" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/blocks/colored_fence_gates.json b/src/main/resources/data/spectrum/tags/blocks/colored_fence_gates.json index 6de1008192..fe85341d38 100644 --- a/src/main/resources/data/spectrum/tags/blocks/colored_fence_gates.json +++ b/src/main/resources/data/spectrum/tags/blocks/colored_fence_gates.json @@ -1,21 +1,21 @@ { "replace": false, "values": [ - "spectrum:black_plank_fence_gate", - "spectrum:blue_plank_fence_gate", - "spectrum:brown_plank_fence_gate", - "spectrum:cyan_plank_fence_gate", - "spectrum:gray_plank_fence_gate", - "spectrum:green_plank_fence_gate", - "spectrum:light_blue_plank_fence_gate", - "spectrum:light_gray_plank_fence_gate", - "spectrum:lime_plank_fence_gate", - "spectrum:magenta_plank_fence_gate", - "spectrum:orange_plank_fence_gate", - "spectrum:pink_plank_fence_gate", - "spectrum:purple_plank_fence_gate", - "spectrum:red_plank_fence_gate", - "spectrum:white_plank_fence_gate", - "spectrum:yellow_plank_fence_gate" + "spectrum:black_fence_gate", + "spectrum:blue_fence_gate", + "spectrum:brown_fence_gate", + "spectrum:cyan_fence_gate", + "spectrum:gray_fence_gate", + "spectrum:green_fence_gate", + "spectrum:light_blue_fence_gate", + "spectrum:light_gray_fence_gate", + "spectrum:lime_fence_gate", + "spectrum:magenta_fence_gate", + "spectrum:orange_fence_gate", + "spectrum:pink_fence_gate", + "spectrum:purple_fence_gate", + "spectrum:red_fence_gate", + "spectrum:white_fence_gate", + "spectrum:yellow_fence_gate" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/blocks/colored_fences.json b/src/main/resources/data/spectrum/tags/blocks/colored_fences.json index 96722c599d..d8e299bbe3 100644 --- a/src/main/resources/data/spectrum/tags/blocks/colored_fences.json +++ b/src/main/resources/data/spectrum/tags/blocks/colored_fences.json @@ -1,21 +1,21 @@ { "replace": false, "values": [ - "spectrum:black_plank_fence", - "spectrum:blue_plank_fence", - "spectrum:brown_plank_fence", - "spectrum:cyan_plank_fence", - "spectrum:gray_plank_fence", - "spectrum:green_plank_fence", - "spectrum:light_blue_plank_fence", - "spectrum:light_gray_plank_fence", - "spectrum:lime_plank_fence", - "spectrum:magenta_plank_fence", - "spectrum:orange_plank_fence", - "spectrum:pink_plank_fence", - "spectrum:purple_plank_fence", - "spectrum:red_plank_fence", - "spectrum:white_plank_fence", - "spectrum:yellow_plank_fence" + "spectrum:black_fence", + "spectrum:blue_fence", + "spectrum:brown_fence", + "spectrum:cyan_fence", + "spectrum:gray_fence", + "spectrum:green_fence", + "spectrum:light_blue_fence", + "spectrum:light_gray_fence", + "spectrum:lime_fence", + "spectrum:magenta_fence", + "spectrum:orange_fence", + "spectrum:pink_fence", + "spectrum:purple_fence", + "spectrum:red_fence", + "spectrum:white_fence", + "spectrum:yellow_fence" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/blocks/colored_pressure_plates.json b/src/main/resources/data/spectrum/tags/blocks/colored_pressure_plates.json index 1b3537062b..fd7d9a7067 100644 --- a/src/main/resources/data/spectrum/tags/blocks/colored_pressure_plates.json +++ b/src/main/resources/data/spectrum/tags/blocks/colored_pressure_plates.json @@ -1,21 +1,21 @@ { "replace": false, "values": [ - "spectrum:black_plank_pressure_plate", - "spectrum:blue_plank_pressure_plate", - "spectrum:brown_plank_pressure_plate", - "spectrum:cyan_plank_pressure_plate", - "spectrum:gray_plank_pressure_plate", - "spectrum:green_plank_pressure_plate", - "spectrum:light_blue_plank_pressure_plate", - "spectrum:light_gray_plank_pressure_plate", - "spectrum:lime_plank_pressure_plate", - "spectrum:magenta_plank_pressure_plate", - "spectrum:orange_plank_pressure_plate", - "spectrum:pink_plank_pressure_plate", - "spectrum:purple_plank_pressure_plate", - "spectrum:red_plank_pressure_plate", - "spectrum:white_plank_pressure_plate", - "spectrum:yellow_plank_pressure_plate" + "spectrum:black_pressure_plate", + "spectrum:blue_pressure_plate", + "spectrum:brown_pressure_plate", + "spectrum:cyan_pressure_plate", + "spectrum:gray_pressure_plate", + "spectrum:green_pressure_plate", + "spectrum:light_blue_pressure_plate", + "spectrum:light_gray_pressure_plate", + "spectrum:lime_pressure_plate", + "spectrum:magenta_pressure_plate", + "spectrum:orange_pressure_plate", + "spectrum:pink_pressure_plate", + "spectrum:purple_pressure_plate", + "spectrum:red_pressure_plate", + "spectrum:white_pressure_plate", + "spectrum:yellow_pressure_plate" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/blocks/colored_slabs.json b/src/main/resources/data/spectrum/tags/blocks/colored_slabs.json index 43d7253d6d..3ed08deac8 100644 --- a/src/main/resources/data/spectrum/tags/blocks/colored_slabs.json +++ b/src/main/resources/data/spectrum/tags/blocks/colored_slabs.json @@ -1,21 +1,21 @@ { "replace": false, "values": [ - "spectrum:black_plank_slab", - "spectrum:blue_plank_slab", - "spectrum:brown_plank_slab", - "spectrum:cyan_plank_slab", - "spectrum:gray_plank_slab", - "spectrum:green_plank_slab", - "spectrum:light_blue_plank_slab", - "spectrum:light_gray_plank_slab", - "spectrum:lime_plank_slab", - "spectrum:magenta_plank_slab", - "spectrum:orange_plank_slab", - "spectrum:pink_plank_slab", - "spectrum:purple_plank_slab", - "spectrum:red_plank_slab", - "spectrum:white_plank_slab", - "spectrum:yellow_plank_slab" + "spectrum:black_slab", + "spectrum:blue_slab", + "spectrum:brown_slab", + "spectrum:cyan_slab", + "spectrum:gray_slab", + "spectrum:green_slab", + "spectrum:light_blue_slab", + "spectrum:light_gray_slab", + "spectrum:lime_slab", + "spectrum:magenta_slab", + "spectrum:orange_slab", + "spectrum:pink_slab", + "spectrum:purple_slab", + "spectrum:red_slab", + "spectrum:white_slab", + "spectrum:yellow_slab" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/blocks/colored_stairs.json b/src/main/resources/data/spectrum/tags/blocks/colored_stairs.json index 218d98de75..3d1eee7c95 100644 --- a/src/main/resources/data/spectrum/tags/blocks/colored_stairs.json +++ b/src/main/resources/data/spectrum/tags/blocks/colored_stairs.json @@ -1,21 +1,21 @@ { "replace": false, "values": [ - "spectrum:black_plank_stairs", - "spectrum:blue_plank_stairs", - "spectrum:brown_plank_stairs", - "spectrum:cyan_plank_stairs", - "spectrum:gray_plank_stairs", - "spectrum:green_plank_stairs", - "spectrum:light_blue_plank_stairs", - "spectrum:light_gray_plank_stairs", - "spectrum:lime_plank_stairs", - "spectrum:magenta_plank_stairs", - "spectrum:orange_plank_stairs", - "spectrum:pink_plank_stairs", - "spectrum:purple_plank_stairs", - "spectrum:red_plank_stairs", - "spectrum:white_plank_stairs", - "spectrum:yellow_plank_stairs" + "spectrum:black_stairs", + "spectrum:blue_stairs", + "spectrum:brown_stairs", + "spectrum:cyan_stairs", + "spectrum:gray_stairs", + "spectrum:green_stairs", + "spectrum:light_blue_stairs", + "spectrum:light_gray_stairs", + "spectrum:lime_stairs", + "spectrum:magenta_stairs", + "spectrum:orange_stairs", + "spectrum:pink_stairs", + "spectrum:purple_stairs", + "spectrum:red_stairs", + "spectrum:white_stairs", + "spectrum:yellow_stairs" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/items/colored_buttons.json b/src/main/resources/data/spectrum/tags/items/colored_buttons.json index 6a6ef11b4c..e5f085a132 100644 --- a/src/main/resources/data/spectrum/tags/items/colored_buttons.json +++ b/src/main/resources/data/spectrum/tags/items/colored_buttons.json @@ -1,21 +1,21 @@ { "replace": false, "values": [ - "spectrum:black_plank_button", - "spectrum:blue_plank_button", - "spectrum:brown_plank_button", - "spectrum:cyan_plank_button", - "spectrum:gray_plank_button", - "spectrum:green_plank_button", - "spectrum:light_blue_plank_button", - "spectrum:light_gray_plank_button", - "spectrum:lime_plank_button", - "spectrum:magenta_plank_button", - "spectrum:orange_plank_button", - "spectrum:pink_plank_button", - "spectrum:purple_plank_button", - "spectrum:red_plank_button", - "spectrum:white_plank_button", - "spectrum:yellow_plank_button" + "spectrum:black_button", + "spectrum:blue_button", + "spectrum:brown_button", + "spectrum:cyan_button", + "spectrum:gray_button", + "spectrum:green_button", + "spectrum:light_blue_button", + "spectrum:light_gray_button", + "spectrum:lime_button", + "spectrum:magenta_button", + "spectrum:orange_button", + "spectrum:pink_button", + "spectrum:purple_button", + "spectrum:red_button", + "spectrum:white_button", + "spectrum:yellow_button" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/items/colored_fences.json b/src/main/resources/data/spectrum/tags/items/colored_fences.json index 96722c599d..d8e299bbe3 100644 --- a/src/main/resources/data/spectrum/tags/items/colored_fences.json +++ b/src/main/resources/data/spectrum/tags/items/colored_fences.json @@ -1,21 +1,21 @@ { "replace": false, "values": [ - "spectrum:black_plank_fence", - "spectrum:blue_plank_fence", - "spectrum:brown_plank_fence", - "spectrum:cyan_plank_fence", - "spectrum:gray_plank_fence", - "spectrum:green_plank_fence", - "spectrum:light_blue_plank_fence", - "spectrum:light_gray_plank_fence", - "spectrum:lime_plank_fence", - "spectrum:magenta_plank_fence", - "spectrum:orange_plank_fence", - "spectrum:pink_plank_fence", - "spectrum:purple_plank_fence", - "spectrum:red_plank_fence", - "spectrum:white_plank_fence", - "spectrum:yellow_plank_fence" + "spectrum:black_fence", + "spectrum:blue_fence", + "spectrum:brown_fence", + "spectrum:cyan_fence", + "spectrum:gray_fence", + "spectrum:green_fence", + "spectrum:light_blue_fence", + "spectrum:light_gray_fence", + "spectrum:lime_fence", + "spectrum:magenta_fence", + "spectrum:orange_fence", + "spectrum:pink_fence", + "spectrum:purple_fence", + "spectrum:red_fence", + "spectrum:white_fence", + "spectrum:yellow_fence" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/items/colored_pressure_plates.json b/src/main/resources/data/spectrum/tags/items/colored_pressure_plates.json index 1b3537062b..fd7d9a7067 100644 --- a/src/main/resources/data/spectrum/tags/items/colored_pressure_plates.json +++ b/src/main/resources/data/spectrum/tags/items/colored_pressure_plates.json @@ -1,21 +1,21 @@ { "replace": false, "values": [ - "spectrum:black_plank_pressure_plate", - "spectrum:blue_plank_pressure_plate", - "spectrum:brown_plank_pressure_plate", - "spectrum:cyan_plank_pressure_plate", - "spectrum:gray_plank_pressure_plate", - "spectrum:green_plank_pressure_plate", - "spectrum:light_blue_plank_pressure_plate", - "spectrum:light_gray_plank_pressure_plate", - "spectrum:lime_plank_pressure_plate", - "spectrum:magenta_plank_pressure_plate", - "spectrum:orange_plank_pressure_plate", - "spectrum:pink_plank_pressure_plate", - "spectrum:purple_plank_pressure_plate", - "spectrum:red_plank_pressure_plate", - "spectrum:white_plank_pressure_plate", - "spectrum:yellow_plank_pressure_plate" + "spectrum:black_pressure_plate", + "spectrum:blue_pressure_plate", + "spectrum:brown_pressure_plate", + "spectrum:cyan_pressure_plate", + "spectrum:gray_pressure_plate", + "spectrum:green_pressure_plate", + "spectrum:light_blue_pressure_plate", + "spectrum:light_gray_pressure_plate", + "spectrum:lime_pressure_plate", + "spectrum:magenta_pressure_plate", + "spectrum:orange_pressure_plate", + "spectrum:pink_pressure_plate", + "spectrum:purple_pressure_plate", + "spectrum:red_pressure_plate", + "spectrum:white_pressure_plate", + "spectrum:yellow_pressure_plate" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/items/colored_slabs.json b/src/main/resources/data/spectrum/tags/items/colored_slabs.json index 43d7253d6d..3ed08deac8 100644 --- a/src/main/resources/data/spectrum/tags/items/colored_slabs.json +++ b/src/main/resources/data/spectrum/tags/items/colored_slabs.json @@ -1,21 +1,21 @@ { "replace": false, "values": [ - "spectrum:black_plank_slab", - "spectrum:blue_plank_slab", - "spectrum:brown_plank_slab", - "spectrum:cyan_plank_slab", - "spectrum:gray_plank_slab", - "spectrum:green_plank_slab", - "spectrum:light_blue_plank_slab", - "spectrum:light_gray_plank_slab", - "spectrum:lime_plank_slab", - "spectrum:magenta_plank_slab", - "spectrum:orange_plank_slab", - "spectrum:pink_plank_slab", - "spectrum:purple_plank_slab", - "spectrum:red_plank_slab", - "spectrum:white_plank_slab", - "spectrum:yellow_plank_slab" + "spectrum:black_slab", + "spectrum:blue_slab", + "spectrum:brown_slab", + "spectrum:cyan_slab", + "spectrum:gray_slab", + "spectrum:green_slab", + "spectrum:light_blue_slab", + "spectrum:light_gray_slab", + "spectrum:lime_slab", + "spectrum:magenta_slab", + "spectrum:orange_slab", + "spectrum:pink_slab", + "spectrum:purple_slab", + "spectrum:red_slab", + "spectrum:white_slab", + "spectrum:yellow_slab" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/items/colored_stairs.json b/src/main/resources/data/spectrum/tags/items/colored_stairs.json index 218d98de75..3d1eee7c95 100644 --- a/src/main/resources/data/spectrum/tags/items/colored_stairs.json +++ b/src/main/resources/data/spectrum/tags/items/colored_stairs.json @@ -1,21 +1,21 @@ { "replace": false, "values": [ - "spectrum:black_plank_stairs", - "spectrum:blue_plank_stairs", - "spectrum:brown_plank_stairs", - "spectrum:cyan_plank_stairs", - "spectrum:gray_plank_stairs", - "spectrum:green_plank_stairs", - "spectrum:light_blue_plank_stairs", - "spectrum:light_gray_plank_stairs", - "spectrum:lime_plank_stairs", - "spectrum:magenta_plank_stairs", - "spectrum:orange_plank_stairs", - "spectrum:pink_plank_stairs", - "spectrum:purple_plank_stairs", - "spectrum:red_plank_stairs", - "spectrum:white_plank_stairs", - "spectrum:yellow_plank_stairs" + "spectrum:black_stairs", + "spectrum:blue_stairs", + "spectrum:brown_stairs", + "spectrum:cyan_stairs", + "spectrum:gray_stairs", + "spectrum:green_stairs", + "spectrum:light_blue_stairs", + "spectrum:light_gray_stairs", + "spectrum:lime_stairs", + "spectrum:magenta_stairs", + "spectrum:orange_stairs", + "spectrum:pink_stairs", + "spectrum:purple_stairs", + "spectrum:red_stairs", + "spectrum:white_stairs", + "spectrum:yellow_stairs" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/items/coming_soon_tooltip.json b/src/main/resources/data/spectrum/tags/items/coming_soon_tooltip.json index 94789ed677..31052db7e5 100644 --- a/src/main/resources/data/spectrum/tags/items/coming_soon_tooltip.json +++ b/src/main/resources/data/spectrum/tags/items/coming_soon_tooltip.json @@ -163,24 +163,24 @@ "spectrum:white_planks", "spectrum:gray_planks", "spectrum:light_gray_planks", - "spectrum:white_plank_stairs", - "spectrum:gray_plank_stairs", - "spectrum:light_gray_plank_stairs", - "spectrum:white_plank_pressure_plate", - "spectrum:gray_plank_pressure_plate", - "spectrum:light_gray_plank_pressure_plate", - "spectrum:white_plank_fence", - "spectrum:gray_plank_fence", - "spectrum:light_gray_plank_fence", - "spectrum:white_plank_fence_gate", - "spectrum:gray_plank_fence_gate", - "spectrum:light_gray_plank_fence_gate", - "spectrum:white_plank_button", - "spectrum:gray_plank_button", - "spectrum:light_gray_plank_button", - "spectrum:white_plank_slab", - "spectrum:gray_plank_slab", - "spectrum:light_gray_plank_slab", + "spectrum:white_stairs", + "spectrum:gray_stairs", + "spectrum:light_gray_stairs", + "spectrum:white_pressure_plate", + "spectrum:gray_pressure_plate", + "spectrum:light_gray_pressure_plate", + "spectrum:white_fence", + "spectrum:gray_fence", + "spectrum:light_gray_fence", + "spectrum:white_fence_gate", + "spectrum:gray_fence_gate", + "spectrum:light_gray_fence_gate", + "spectrum:white_button", + "spectrum:gray_button", + "spectrum:light_gray_button", + "spectrum:white_slab", + "spectrum:gray_slab", + "spectrum:light_gray_slab", "spectrum:white_glowblock", "spectrum:gray_glowblock", "spectrum:light_gray_glowblock", From ee6589b7131f21d1fbf9647aa4dae63701359784 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 07:26:41 +0200 Subject: [PATCH 0021/1051] moved minecraftServer assignment to ServerLifecycleEvents --- src/main/java/de/dafuqs/spectrum/SpectrumCommon.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java b/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java index eae7d25c18..9ba266bf88 100644 --- a/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java +++ b/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java @@ -36,6 +36,7 @@ import me.shedaniel.autoconfig.serializer.JanksonConfigSerializer; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.entity.event.v1.EntitySleepEvents; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents; import net.fabricmc.fabric.api.event.player.AttackBlockCallback; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; @@ -243,9 +244,13 @@ public void onInitialize() { return ActionResult.PASS; }); + ServerLifecycleEvents.SERVER_STARTING.register(server -> { + SpectrumCommon.logInfo("Fetching server instance..."); + SpectrumCommon.minecraftServer = server; + }); + ServerWorldEvents.LOAD.register((minecraftServer, serverWorld) -> { - SpectrumCommon.minecraftServer = minecraftServer; - + SpectrumCommon.logInfo("Querying fluid luminance..."); for (Iterator it = Registry.BLOCK.stream().iterator(); it.hasNext(); ) { Block block = it.next(); if (block instanceof FluidBlock fluidBlock) { @@ -253,6 +258,7 @@ public void onInitialize() { } } + SpectrumCommon.logInfo("Injecting additional recipes..."); FirestarterMobBlock.addBlockSmeltingRecipes(minecraftServer.getRecipeManager()); injectEnchantmentUpgradeRecipes(minecraftServer); }); From 42ab6208b047a7da1a03c2cdff00709a2900a8d4 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 07:51:08 +0200 Subject: [PATCH 0022/1051] removed most references to SpectrumCommon.minecraftServer --- .../de/dafuqs/spectrum/SpectrumCommon.java | 2 +- .../cinderhearth/CinderhearthBlockEntity.java | 4 +- .../CrystallarieumBlockEntity.java | 4 +- .../enchanter/EnchanterBlockEntity.java | 4 +- .../FusionShrineBlockEntity.java | 4 +- .../blocks/pedestal/PedestalBlockEntity.java | 4 +- .../SpiritInstillerBlockEntity.java | 4 +- .../spirit_sallow/OminousSaplingBlock.java | 5 +- .../commands/ProgressionSanityCommand.java | 57 +++++++++++-------- .../spectrum/mixin/ItemEntityMixin.java | 7 ++- 10 files changed, 54 insertions(+), 41 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java b/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java index 9ba266bf88..9a4c3d8ac8 100644 --- a/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java +++ b/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java @@ -75,7 +75,7 @@ public class SpectrumCommon implements ModInitializer { private static final Logger LOGGER = LoggerFactory.getLogger("Spectrum"); public static SpectrumConfig CONFIG; public static RegistryKey DEEPER_DOWN = RegistryKey.of(Registry.WORLD_KEY, new Identifier(MOD_ID, "deeper_down")); - public static MinecraftServer minecraftServer; + private static MinecraftServer minecraftServer; /** * Caches the luminance states from fluids as int * for blocks that react to the light level of fluids diff --git a/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java index 057d92e053..4be51c271e 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java @@ -200,8 +200,8 @@ public void readNbt(NbtCompound nbt) { } if (nbt.contains("CurrentRecipe")) { String recipeString = nbt.getString("CurrentRecipe"); - if (!recipeString.isEmpty()) { - Optional optionalRecipe = SpectrumCommon.minecraftServer.getRecipeManager().get(new Identifier(recipeString)); + if (!recipeString.isEmpty() && world != null && world.getServer() != null) { + Optional optionalRecipe = world.getServer().getRecipeManager().get(new Identifier(recipeString)); this.currentRecipe = optionalRecipe.orElse(null); } else { this.currentRecipe = null; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java index 2f7aaa2c2e..440d3d8031 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java @@ -177,8 +177,8 @@ public void readNbt(NbtCompound nbt) { this.currentRecipe = null; if (nbt.contains("CurrentRecipe")) { String recipeString = nbt.getString("CurrentRecipe"); - if (!recipeString.isEmpty()) { - Optional optionalRecipe = SpectrumCommon.minecraftServer.getRecipeManager().get(new Identifier(recipeString)); + if (!recipeString.isEmpty() && world != null && world.getServer() != null) { + Optional optionalRecipe = world.getServer().getRecipeManager().get(new Identifier(recipeString)); if (optionalRecipe.isPresent() && (optionalRecipe.get() instanceof CrystallarieumRecipe crystallarieumRecipe)) { this.currentRecipe = crystallarieumRecipe; } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlockEntity.java index 51c571c49d..546cb0a37c 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlockEntity.java @@ -671,8 +671,8 @@ public void readNbt(NbtCompound nbt) { this.currentRecipe = null; if (nbt.contains("CurrentRecipe")) { String recipeString = nbt.getString("CurrentRecipe"); - if (!recipeString.isEmpty()) { - Optional optionalRecipe = SpectrumCommon.minecraftServer.getRecipeManager().get(new Identifier(recipeString)); + if (!recipeString.isEmpty() && world != null && world.getServer() != null) { + Optional optionalRecipe = world.getServer().getRecipeManager().get(new Identifier(recipeString)); if (optionalRecipe.isPresent() && (optionalRecipe.get() instanceof EnchanterRecipe || optionalRecipe.get() instanceof EnchantmentUpgradeRecipe)) { this.currentRecipe = optionalRecipe.get(); } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlockEntity.java index 5be33aa970..6d1f404731 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlockEntity.java @@ -291,8 +291,8 @@ public void readNbt(NbtCompound nbt) { this.currentRecipe = null; if (nbt.contains("CurrentRecipe")) { String recipeString = nbt.getString("CurrentRecipe"); - if (!recipeString.isEmpty()) { - Optional optionalRecipe = SpectrumCommon.minecraftServer.getRecipeManager().get(new Identifier(recipeString)); + if (!recipeString.isEmpty() && world != null && world.getServer() != null) { + Optional optionalRecipe = world.getServer().getRecipeManager().get(new Identifier(recipeString)); if (optionalRecipe.isPresent() && optionalRecipe.get() instanceof FusionShrineRecipe optionalFusionRecipe) { this.currentRecipe = optionalFusionRecipe; } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockEntity.java index d5645fda65..b21208fe11 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockEntity.java @@ -600,8 +600,8 @@ public void readNbt(NbtCompound nbt) { this.currentRecipe = null; if (nbt.contains("CurrentRecipe")) { String recipeString = nbt.getString("CurrentRecipe"); - if (!recipeString.isEmpty()) { - Optional optionalRecipe = SpectrumCommon.minecraftServer.getRecipeManager().get(new Identifier(recipeString)); + if (!recipeString.isEmpty() && world != null && world.getServer() != null) { + Optional optionalRecipe = world.getServer().getRecipeManager().get(new Identifier(recipeString)); this.currentRecipe = optionalRecipe.orElse(null); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java index 0549aab24d..abe3617e91 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java @@ -324,8 +324,8 @@ public void readNbt(NbtCompound nbt) { this.currentRecipe = null; if (nbt.contains("CurrentRecipe")) { String recipeString = nbt.getString("CurrentRecipe"); - if (!recipeString.isEmpty()) { - Optional optionalRecipe = SpectrumCommon.minecraftServer.getRecipeManager().get(new Identifier(recipeString)); + if (!recipeString.isEmpty() && world != null && world.getServer() != null) { + Optional optionalRecipe = world.getServer().getRecipeManager().get(new Identifier(recipeString)); if (optionalRecipe.isPresent() && optionalRecipe.get() instanceof ISpiritInstillerRecipe spiritInstillerRecipe) { this.currentRecipe = spiritInstillerRecipe; } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/OminousSaplingBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/OminousSaplingBlock.java index 8c2d3830fb..65e9098392 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/OminousSaplingBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/OminousSaplingBlock.java @@ -2,6 +2,7 @@ import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.helpers.Support; +import de.dafuqs.spectrum.interfaces.PlayerOwned; import de.dafuqs.spectrum.registries.SpectrumBlockEntities; import net.minecraft.block.BlockEntityProvider; import net.minecraft.block.BlockState; @@ -52,8 +53,8 @@ private void generateOminousTree(ServerWorld world, BlockPos pos, BlockState sta OminousSaplingBlockEntity ominousSaplingBlockEntity = getBlockEntity(world, pos); if (ominousSaplingBlockEntity != null) { UUID ownerUUID = ominousSaplingBlockEntity.getOwnerUUID(); - ServerPlayerEntity serverPlayerEntity = SpectrumCommon.minecraftServer.getPlayerManager().getPlayer(ownerUUID); - if (serverPlayerEntity != null) { // offline? + PlayerEntity playerEntity = PlayerOwned.getPlayerEntityIfOnline(ownerUUID); + if (playerEntity instanceof ServerPlayerEntity serverPlayerEntity) { Support.grantAdvancementCriterion(serverPlayerEntity, "lategame/grow_ominous_sapling", "grow"); } } diff --git a/src/main/java/de/dafuqs/spectrum/commands/ProgressionSanityCommand.java b/src/main/java/de/dafuqs/spectrum/commands/ProgressionSanityCommand.java index 3c9ef7838d..2abf81405f 100644 --- a/src/main/java/de/dafuqs/spectrum/commands/ProgressionSanityCommand.java +++ b/src/main/java/de/dafuqs/spectrum/commands/ProgressionSanityCommand.java @@ -34,6 +34,9 @@ import net.minecraft.loot.LootTable; import net.minecraft.loot.LootTables; import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.RecipeManager; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.ServerAdvancementLoader; import net.minecraft.server.command.CommandManager; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; @@ -119,8 +122,12 @@ private static int execute(ServerCommandSource source) { usedColorsForEachTier.put(pedestalRecipeTier, colorMap); } + MinecraftServer minecraftServer = source.getWorld().getServer(); + RecipeManager recipeManager = minecraftServer.getRecipeManager(); + ServerAdvancementLoader advancementLoader = minecraftServer.getAdvancementLoader(); + // Pedestal recipes that use gemstone powder not available at that tier yet - for (PedestalCraftingRecipe pedestalRecipe : SpectrumCommon.minecraftServer.getRecipeManager().listAllOfType(SpectrumRecipeTypes.PEDESTAL)) { + for (PedestalCraftingRecipe pedestalRecipe : recipeManager.listAllOfType(SpectrumRecipeTypes.PEDESTAL)) { /* There are some recipes that use advanced ingredients by design despite being of a low tier, like black colored lamps. While the player does not have access to that yet it is no problem at all @@ -144,15 +151,15 @@ private static int execute(ServerCommandSource source) { } // Impossible to unlock pedestal recipes - for (PedestalCraftingRecipe recipe : SpectrumCommon.minecraftServer.getRecipeManager().listAllOfType(SpectrumRecipeTypes.PEDESTAL)) { - if (!doesAdvancementExist(recipe.getRequiredAdvancementIdentifier())) { + for (PedestalCraftingRecipe recipe : recipeManager.listAllOfType(SpectrumRecipeTypes.PEDESTAL)) { + if (!doesAdvancementExist(advancementLoader, recipe.getRequiredAdvancementIdentifier())) { SpectrumCommon.logWarning("[SANITY: Pedestal Recipe Unlocks] Advancement '" + recipe.getRequiredAdvancementIdentifier() + "' in recipe '" + recipe.getId() + "' does not exist"); } } // Impossible to unlock fusion shrine recipes - for (FusionShrineRecipe recipe : SpectrumCommon.minecraftServer.getRecipeManager().listAllOfType(SpectrumRecipeTypes.FUSION_SHRINE)) { - if (!doesAdvancementExist(recipe.getRequiredAdvancementIdentifier())) { + for (FusionShrineRecipe recipe : recipeManager.listAllOfType(SpectrumRecipeTypes.FUSION_SHRINE)) { + if (!doesAdvancementExist(advancementLoader, recipe.getRequiredAdvancementIdentifier())) { SpectrumCommon.logWarning("[SANITY: Fusion Shrine Recipe Unlocks] Advancement '" + recipe.getRequiredAdvancementIdentifier() + "' in recipe '" + recipe.getId() + "' does not exist"); } for (Ingredient inputIngredient : recipe.getIngredients()) { @@ -169,36 +176,36 @@ private static int execute(ServerCommandSource source) { } // Impossible to unlock potion workshop brewing recipes - for (PotionWorkshopBrewingRecipe recipe : SpectrumCommon.minecraftServer.getRecipeManager().listAllOfType(SpectrumRecipeTypes.POTION_WORKSHOP_BREWING)) { - if (!doesAdvancementExist(recipe.getRequiredAdvancementIdentifier())) { + for (PotionWorkshopBrewingRecipe recipe : recipeManager.listAllOfType(SpectrumRecipeTypes.POTION_WORKSHOP_BREWING)) { + if (!doesAdvancementExist(advancementLoader, recipe.getRequiredAdvancementIdentifier())) { SpectrumCommon.logWarning("[SANITY: Potion Workshop Brewing Unlocks] Advancement '" + recipe.getRequiredAdvancementIdentifier() + "' in recipe '" + recipe.getId() + "' does not exist"); } } // Impossible to unlock potion workshop crafting recipes - for (PotionWorkshopCraftingRecipe recipe : SpectrumCommon.minecraftServer.getRecipeManager().listAllOfType(SpectrumRecipeTypes.POTION_WORKSHOP_CRAFTING)) { - if (!doesAdvancementExist(recipe.getRequiredAdvancementIdentifier())) { + for (PotionWorkshopCraftingRecipe recipe : recipeManager.listAllOfType(SpectrumRecipeTypes.POTION_WORKSHOP_CRAFTING)) { + if (!doesAdvancementExist(advancementLoader, recipe.getRequiredAdvancementIdentifier())) { SpectrumCommon.logWarning("[SANITY: Potion Workshop Crafting Unlocks] Advancement '" + recipe.getRequiredAdvancementIdentifier() + "' in recipe '" + recipe.getId() + "' does not exist"); } } // Impossible to unlock potion reagents - for (PotionWorkshopReactingRecipe recipe : SpectrumCommon.minecraftServer.getRecipeManager().listAllOfType(SpectrumRecipeTypes.POTION_WORKSHOP_REACTING)) { - if (!doesAdvancementExist(recipe.getRequiredAdvancementIdentifier())) { + for (PotionWorkshopReactingRecipe recipe : recipeManager.listAllOfType(SpectrumRecipeTypes.POTION_WORKSHOP_REACTING)) { + if (!doesAdvancementExist(advancementLoader, recipe.getRequiredAdvancementIdentifier())) { SpectrumCommon.logWarning("[SANITY: Potion Workshop Reagents] Advancement '" + recipe.getRequiredAdvancementIdentifier() + "' in recipe '" + recipe.getId() + "' does not exist"); } } // Impossible to unlock spirit instiller recipes - for (ISpiritInstillerRecipe recipe : SpectrumCommon.minecraftServer.getRecipeManager().listAllOfType(SpectrumRecipeTypes.SPIRIT_INSTILLING)) { - if (!doesAdvancementExist(recipe.getRequiredAdvancementIdentifier())) { + for (ISpiritInstillerRecipe recipe : recipeManager.listAllOfType(SpectrumRecipeTypes.SPIRIT_INSTILLING)) { + if (!doesAdvancementExist(advancementLoader, recipe.getRequiredAdvancementIdentifier())) { SpectrumCommon.logWarning("[SANITY: Spirit Instiller Recipe Unlocks] Advancement '" + recipe.getRequiredAdvancementIdentifier() + "' in recipe '" + recipe.getId() + "' does not exist"); } } // Enchanting recipes - for (EnchanterRecipe enchanterRecipe : SpectrumCommon.minecraftServer.getRecipeManager().listAllOfType(SpectrumRecipeTypes.ENCHANTER)) { - if (!doesAdvancementExist(enchanterRecipe.getRequiredAdvancementIdentifier())) { + for (EnchanterRecipe enchanterRecipe : recipeManager.listAllOfType(SpectrumRecipeTypes.ENCHANTER)) { + if (!doesAdvancementExist(advancementLoader, enchanterRecipe.getRequiredAdvancementIdentifier())) { SpectrumCommon.logWarning("[SANITY: Enchanting Recipe Unlocks] Advancement '" + enchanterRecipe.getRequiredAdvancementIdentifier() + "' in recipe '" + enchanterRecipe.getId() + "' does not exist"); } for (Ingredient inputIngredient : enchanterRecipe.getIngredients()) { @@ -215,8 +222,8 @@ private static int execute(ServerCommandSource source) { } // Enchantment upgrade recipes - for (EnchantmentUpgradeRecipe enchantmentUpgradeRecipe : SpectrumCommon.minecraftServer.getRecipeManager().listAllOfType(SpectrumRecipeTypes.ENCHANTMENT_UPGRADE)) { - if (!doesAdvancementExist(enchantmentUpgradeRecipe.getRequiredAdvancementIdentifier())) { + for (EnchantmentUpgradeRecipe enchantmentUpgradeRecipe : recipeManager.listAllOfType(SpectrumRecipeTypes.ENCHANTMENT_UPGRADE)) { + if (!doesAdvancementExist(advancementLoader, enchantmentUpgradeRecipe.getRequiredAdvancementIdentifier())) { SpectrumCommon.logWarning("[SANITY: Enchantment Upgrade Recipe Unlocks] Advancement '" + enchantmentUpgradeRecipe.getRequiredAdvancementIdentifier() + "' in recipe '" + enchantmentUpgradeRecipe.getId() + "' does not exist"); } for (Ingredient inputIngredient : enchantmentUpgradeRecipe.getIngredients()) { @@ -234,19 +241,19 @@ private static int execute(ServerCommandSource source) { // Impossible to unlock block cloaks for (Map.Entry> cloaks : RevelationRegistry.getBlockStateEntries().entrySet()) { - if (!doesAdvancementExist(cloaks.getKey())) { + if (!doesAdvancementExist(advancementLoader, cloaks.getKey())) { SpectrumCommon.logWarning("[SANITY: Block Cloaks] Advancement '" + cloaks.getKey().toString() + "' for block / item cloaking does not exist. Registered cloaks: " + cloaks.getValue().size()); } } // "has advancement" criteria with nonexistent advancements - for (Advancement advancement : SpectrumCommon.minecraftServer.getAdvancementLoader().getAdvancements()) { + for (Advancement advancement : advancementLoader.getAdvancements()) { for (AdvancementCriterion criterion : advancement.getCriteria().values()) { CriterionConditions conditions = criterion.getConditions(); Identifier id = conditions.getId(); if (id.equals(AdvancementGottenCriterion.ID) && conditions instanceof AdvancementGottenCriterion.Conditions hasAdvancementConditions) { Identifier advancementIdentifier = hasAdvancementConditions.getAdvancementIdentifier(); - Advancement advancementCriterionAdvancement = SpectrumCommon.minecraftServer.getAdvancementLoader().get(advancementIdentifier); + Advancement advancementCriterionAdvancement = advancementLoader.get(advancementIdentifier); if (advancementCriterionAdvancement == null) { SpectrumCommon.logWarning("[SANITY: Has_Advancement Criteria] Advancement '" + advancement.getId() + "' references advancement '" + advancementIdentifier + "' that does not exist"); } @@ -255,7 +262,7 @@ private static int execute(ServerCommandSource source) { } // advancements that dont require parent - for (Advancement advancement : SpectrumCommon.minecraftServer.getAdvancementLoader().getAdvancements()) { + for (Advancement advancement : advancementLoader.getAdvancements()) { if (advancement.getId().getNamespace().equals(SpectrumCommon.MOD_ID) && !advancement.getId().getPath().contains("hidden") && !advancement.getId().getPath().contains("progression") && !advancement.getId().getPath().contains("milestones") && advancement.getParent() != null) { Identifier previousAdvancementIdentifier = null; for (String[] requirement : advancement.getRequirements()) { @@ -282,7 +289,7 @@ private static int execute(ServerCommandSource source) { } // Item Crushing recipes with nonexistent sounds - for (AnvilCrushingRecipe anvilCrushingRecipe : SpectrumCommon.minecraftServer.getRecipeManager().listAllOfType(SpectrumRecipeTypes.ANVIL_CRUSHING)) { + for (AnvilCrushingRecipe anvilCrushingRecipe : recipeManager.listAllOfType(SpectrumRecipeTypes.ANVIL_CRUSHING)) { SoundEvent soundEvent = anvilCrushingRecipe.getSoundEvent(); if (soundEvent == null) { SpectrumCommon.logWarning("[SANITY: Item Crushing] Recipe '" + anvilCrushingRecipe.getId() + "' has a nonexistent sound set"); @@ -293,7 +300,7 @@ private static int execute(ServerCommandSource source) { for (Map.Entry, Enchantment> enchantment : Registry.ENCHANTMENT.getEntrySet()) { if (enchantment.getValue() instanceof SpectrumEnchantment spectrumEnchantment) { Identifier advancementIdentifier = spectrumEnchantment.getUnlockAdvancementIdentifier(); - Advancement advancementCriterionAdvancement = SpectrumCommon.minecraftServer.getAdvancementLoader().get(advancementIdentifier); + Advancement advancementCriterionAdvancement = advancementLoader.get(advancementIdentifier); if (advancementCriterionAdvancement == null) { SpectrumCommon.logWarning("[SANITY: Enchantments] Enchantment '" + enchantment.getKey().getValue() + "' references advancement '" + advancementIdentifier + "' that does not exist"); } @@ -328,8 +335,8 @@ private static int execute(ServerCommandSource source) { return 0; } - private static boolean doesAdvancementExist(Identifier identifier) { - return SpectrumCommon.minecraftServer.getAdvancementLoader().get(identifier) != null; + private static boolean doesAdvancementExist(ServerAdvancementLoader advancementLoader, Identifier identifier) { + return advancementLoader.get(identifier) != null; } } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java index d464d4826e..5ad657802d 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java @@ -16,6 +16,7 @@ import net.minecraft.entity.damage.DamageSource; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.server.MinecraftServer; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvent; @@ -97,7 +98,11 @@ private void doAnvilCrafting(float damageAmount) { autoCompactingInventory = new AutoCompactingInventory(); } autoCompactingInventory.setCompacting(AutoCompactingInventory.AutoCraftingMode.OneXOne, thisItemStack); - Optional optionalAnvilCrushingRecipe = SpectrumCommon.minecraftServer.getRecipeManager().getFirstMatch(SpectrumRecipeTypes.ANVIL_CRUSHING, autoCompactingInventory, world); + MinecraftServer server = world.getServer(); + if(server == null) { + return; + } + Optional optionalAnvilCrushingRecipe = server.getRecipeManager().getFirstMatch(SpectrumRecipeTypes.ANVIL_CRUSHING, autoCompactingInventory, world); if (optionalAnvilCrushingRecipe.isPresent()) { // Item can be crafted via anvil. Do anvil crafting AnvilCrushingRecipe recipe = optionalAnvilCrushingRecipe.get(); From 1808daadf64f1930c177ce94031a0d0a8eab6175 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 08:12:46 +0200 Subject: [PATCH 0023/1051] removed most references to SpectrumCommon.minecraftServer --- src/main/java/de/dafuqs/spectrum/SpectrumCommon.java | 2 +- .../blocks/cinderhearth/CinderhearthBlockEntity.java | 4 ++-- .../blocks/crystallarieum/CrystallarieumBlockEntity.java | 4 ++-- .../spectrum/blocks/enchanter/EnchanterBlockEntity.java | 4 ++-- .../blocks/fusion_shrine/FusionShrineBlockEntity.java | 4 ++-- .../spectrum/blocks/pedestal/PedestalBlockEntity.java | 4 ++-- .../blocks/spirit_instiller/SpiritInstillerBlockEntity.java | 4 ++-- src/main/java/de/dafuqs/spectrum/helpers/Support.java | 5 ++++- .../java/de/dafuqs/spectrum/interfaces/PlayerOwned.java | 2 +- .../spectrum/inventories/CraftingTabletScreenHandler.java | 2 +- src/main/java/de/dafuqs/spectrum/items/GuidebookItem.java | 6 +++++- src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java | 6 +----- .../spectrum/networking/SpectrumC2SPacketReceiver.java | 2 +- 13 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java b/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java index 9a4c3d8ac8..9ba266bf88 100644 --- a/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java +++ b/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java @@ -75,7 +75,7 @@ public class SpectrumCommon implements ModInitializer { private static final Logger LOGGER = LoggerFactory.getLogger("Spectrum"); public static SpectrumConfig CONFIG; public static RegistryKey DEEPER_DOWN = RegistryKey.of(Registry.WORLD_KEY, new Identifier(MOD_ID, "deeper_down")); - private static MinecraftServer minecraftServer; + public static MinecraftServer minecraftServer; /** * Caches the luminance states from fluids as int * for blocks that react to the light level of fluids diff --git a/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java index 4be51c271e..f010101b73 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java @@ -200,8 +200,8 @@ public void readNbt(NbtCompound nbt) { } if (nbt.contains("CurrentRecipe")) { String recipeString = nbt.getString("CurrentRecipe"); - if (!recipeString.isEmpty() && world != null && world.getServer() != null) { - Optional optionalRecipe = world.getServer().getRecipeManager().get(new Identifier(recipeString)); + if (!recipeString.isEmpty() && world != null) { + Optional optionalRecipe = world.getRecipeManager().get(new Identifier(recipeString)); this.currentRecipe = optionalRecipe.orElse(null); } else { this.currentRecipe = null; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java index 440d3d8031..14d96c99c9 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java @@ -177,8 +177,8 @@ public void readNbt(NbtCompound nbt) { this.currentRecipe = null; if (nbt.contains("CurrentRecipe")) { String recipeString = nbt.getString("CurrentRecipe"); - if (!recipeString.isEmpty() && world != null && world.getServer() != null) { - Optional optionalRecipe = world.getServer().getRecipeManager().get(new Identifier(recipeString)); + if (!recipeString.isEmpty() && world != null) { + Optional optionalRecipe = world.getRecipeManager().get(new Identifier(recipeString)); if (optionalRecipe.isPresent() && (optionalRecipe.get() instanceof CrystallarieumRecipe crystallarieumRecipe)) { this.currentRecipe = crystallarieumRecipe; } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlockEntity.java index 546cb0a37c..64ee7529a2 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/enchanter/EnchanterBlockEntity.java @@ -671,8 +671,8 @@ public void readNbt(NbtCompound nbt) { this.currentRecipe = null; if (nbt.contains("CurrentRecipe")) { String recipeString = nbt.getString("CurrentRecipe"); - if (!recipeString.isEmpty() && world != null && world.getServer() != null) { - Optional optionalRecipe = world.getServer().getRecipeManager().get(new Identifier(recipeString)); + if (!recipeString.isEmpty() && world != null) { + Optional optionalRecipe = world.getRecipeManager().get(new Identifier(recipeString)); if (optionalRecipe.isPresent() && (optionalRecipe.get() instanceof EnchanterRecipe || optionalRecipe.get() instanceof EnchantmentUpgradeRecipe)) { this.currentRecipe = optionalRecipe.get(); } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlockEntity.java index 6d1f404731..79aca19264 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/fusion_shrine/FusionShrineBlockEntity.java @@ -291,8 +291,8 @@ public void readNbt(NbtCompound nbt) { this.currentRecipe = null; if (nbt.contains("CurrentRecipe")) { String recipeString = nbt.getString("CurrentRecipe"); - if (!recipeString.isEmpty() && world != null && world.getServer() != null) { - Optional optionalRecipe = world.getServer().getRecipeManager().get(new Identifier(recipeString)); + if (!recipeString.isEmpty() && world != null) { + Optional optionalRecipe = world.getRecipeManager().get(new Identifier(recipeString)); if (optionalRecipe.isPresent() && optionalRecipe.get() instanceof FusionShrineRecipe optionalFusionRecipe) { this.currentRecipe = optionalFusionRecipe; } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockEntity.java index b21208fe11..059ade1b27 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/pedestal/PedestalBlockEntity.java @@ -600,8 +600,8 @@ public void readNbt(NbtCompound nbt) { this.currentRecipe = null; if (nbt.contains("CurrentRecipe")) { String recipeString = nbt.getString("CurrentRecipe"); - if (!recipeString.isEmpty() && world != null && world.getServer() != null) { - Optional optionalRecipe = world.getServer().getRecipeManager().get(new Identifier(recipeString)); + if (!recipeString.isEmpty() && world != null) { + Optional optionalRecipe = world.getRecipeManager().get(new Identifier(recipeString)); this.currentRecipe = optionalRecipe.orElse(null); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java index abe3617e91..53e9adedfb 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java @@ -324,8 +324,8 @@ public void readNbt(NbtCompound nbt) { this.currentRecipe = null; if (nbt.contains("CurrentRecipe")) { String recipeString = nbt.getString("CurrentRecipe"); - if (!recipeString.isEmpty() && world != null && world.getServer() != null) { - Optional optionalRecipe = world.getServer().getRecipeManager().get(new Identifier(recipeString)); + if (!recipeString.isEmpty() && world != null) { + Optional optionalRecipe = world.getRecipeManager().get(new Identifier(recipeString)); if (optionalRecipe.isPresent() && optionalRecipe.get() instanceof ISpiritInstillerRecipe spiritInstillerRecipe) { this.currentRecipe = spiritInstillerRecipe; } diff --git a/src/main/java/de/dafuqs/spectrum/helpers/Support.java b/src/main/java/de/dafuqs/spectrum/helpers/Support.java index 8a29b37ea9..96dca04df6 100644 --- a/src/main/java/de/dafuqs/spectrum/helpers/Support.java +++ b/src/main/java/de/dafuqs/spectrum/helpers/Support.java @@ -187,7 +187,10 @@ public static BlockPos directionalOffset(BlockPos origin, Vec3i offset, @NotNull } public static void grantAdvancementCriterion(@NotNull ServerPlayerEntity serverPlayerEntity, Identifier advancementIdentifier, String criterion) { - ServerAdvancementLoader sal = SpectrumCommon.minecraftServer.getAdvancementLoader(); + if(serverPlayerEntity.getServer() == null) { + return; + } + ServerAdvancementLoader sal = serverPlayerEntity.getServer().getAdvancementLoader(); PlayerAdvancementTracker tracker = serverPlayerEntity.getAdvancementTracker(); Advancement advancement = sal.get(advancementIdentifier); diff --git a/src/main/java/de/dafuqs/spectrum/interfaces/PlayerOwned.java b/src/main/java/de/dafuqs/spectrum/interfaces/PlayerOwned.java index 0748beb40c..226747f6ec 100644 --- a/src/main/java/de/dafuqs/spectrum/interfaces/PlayerOwned.java +++ b/src/main/java/de/dafuqs/spectrum/interfaces/PlayerOwned.java @@ -9,7 +9,7 @@ public interface PlayerOwned { static PlayerEntity getPlayerEntityIfOnline(UUID ownerUUID) { - if (ownerUUID != null) { + if (ownerUUID != null || SpectrumCommon.minecraftServer == null) { return SpectrumCommon.minecraftServer.getPlayerManager().getPlayer(ownerUUID); } return null; diff --git a/src/main/java/de/dafuqs/spectrum/inventories/CraftingTabletScreenHandler.java b/src/main/java/de/dafuqs/spectrum/inventories/CraftingTabletScreenHandler.java index 6e1d2b9f07..63d3b26b11 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/CraftingTabletScreenHandler.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/CraftingTabletScreenHandler.java @@ -180,7 +180,7 @@ protected void updateResult(ScreenHandler handler, @NotNull World world, PlayerE inventory.setStack(13, ItemStack.EMPTY); ItemStack itemStack = ItemStack.EMPTY; - Optional optionalCraftingRecipe = world.getServer().getRecipeManager().getFirstMatch(RecipeType.CRAFTING, inventory, world); + Optional optionalCraftingRecipe = world.getRecipeManager().getFirstMatch(RecipeType.CRAFTING, inventory, world); if (optionalCraftingRecipe.isPresent()) { lockableCraftingResultSlot.unlock(); diff --git a/src/main/java/de/dafuqs/spectrum/items/GuidebookItem.java b/src/main/java/de/dafuqs/spectrum/items/GuidebookItem.java index 13c9ccd060..68826b96ba 100644 --- a/src/main/java/de/dafuqs/spectrum/items/GuidebookItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/GuidebookItem.java @@ -34,10 +34,14 @@ public GuidebookItem(Settings settings) { } public static void reprocessAdvancementUnlocks(ServerPlayerEntity serverPlayerEntity) { + if(serverPlayerEntity.getServer() == null) { + return; + } + PlayerAdvancementTracker tracker = serverPlayerEntity.getAdvancementTracker(); // "has advancement" criteria with nonexistent advancements - for (Advancement advancement : SpectrumCommon.minecraftServer.getAdvancementLoader().getAdvancements()) { + for (Advancement advancement : serverPlayerEntity.getServer().getAdvancementLoader().getAdvancements()) { if (advancement.getId().getNamespace().equals(SpectrumCommon.MOD_ID)) { AdvancementProgress hasAdvancement = tracker.getProgress(advancement); if (!hasAdvancement.isDone()) { diff --git a/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java index 5ad657802d..3efdaf9013 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java @@ -98,11 +98,7 @@ private void doAnvilCrafting(float damageAmount) { autoCompactingInventory = new AutoCompactingInventory(); } autoCompactingInventory.setCompacting(AutoCompactingInventory.AutoCraftingMode.OneXOne, thisItemStack); - MinecraftServer server = world.getServer(); - if(server == null) { - return; - } - Optional optionalAnvilCrushingRecipe = server.getRecipeManager().getFirstMatch(SpectrumRecipeTypes.ANVIL_CRUSHING, autoCompactingInventory, world); + Optional optionalAnvilCrushingRecipe = world.getRecipeManager().getFirstMatch(SpectrumRecipeTypes.ANVIL_CRUSHING, autoCompactingInventory, world); if (optionalAnvilCrushingRecipe.isPresent()) { // Item can be crafted via anvil. Do anvil crafting AnvilCrushingRecipe recipe = optionalAnvilCrushingRecipe.get(); diff --git a/src/main/java/de/dafuqs/spectrum/networking/SpectrumC2SPacketReceiver.java b/src/main/java/de/dafuqs/spectrum/networking/SpectrumC2SPacketReceiver.java index 69fc39102e..7111275031 100644 --- a/src/main/java/de/dafuqs/spectrum/networking/SpectrumC2SPacketReceiver.java +++ b/src/main/java/de/dafuqs/spectrum/networking/SpectrumC2SPacketReceiver.java @@ -129,7 +129,7 @@ public static void registerC2SReceivers() { } inkColorSelectedPacketReceiver.onInkColorSelectedPacket(color); - for(ServerPlayerEntity serverPlayer : SpectrumCommon.minecraftServer.getPlayerManager().getPlayerList()) { + for(ServerPlayerEntity serverPlayer : server.getPlayerManager().getPlayerList()) { if(serverPlayer.currentScreenHandler instanceof InkColorSelectedPacketReceiver receiver && receiver.getBlockEntity() != null && receiver.getBlockEntity() == inkColorSelectedPacketReceiver.getBlockEntity()) { SpectrumS2CPacketSender.sendInkColorSelected(color, serverPlayer); } From bb7a44ccc987efc94efeab2373221cd32d86a30b Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 08:15:56 +0200 Subject: [PATCH 0024/1051] fixed nourishing crash with effect potencies >= 8 --- .../spectrum/status_effects/NourishingStatusEffect.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/dafuqs/spectrum/status_effects/NourishingStatusEffect.java b/src/main/java/de/dafuqs/spectrum/status_effects/NourishingStatusEffect.java index 0288a7b2fa..d43ae1f59b 100644 --- a/src/main/java/de/dafuqs/spectrum/status_effects/NourishingStatusEffect.java +++ b/src/main/java/de/dafuqs/spectrum/status_effects/NourishingStatusEffect.java @@ -24,7 +24,10 @@ public void applyUpdateEffect(LivingEntity entity, int amplifier) { public boolean canApplyUpdateEffect(int duration, int amplifier) { int i = 200 >> amplifier; - return duration % i == 0; // TODO: + if(i > 0) { + return duration % i == 0; + } + return true; } } \ No newline at end of file From a07ebc3080b607ceed77d5eb2591f432b2a5a05b Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 08:23:50 +0200 Subject: [PATCH 0025/1051] unlock glowblocks only with quitoxic reeds collected --- .../progression/glowblocks/unlock_any_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_black_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_blue_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_brown_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_cyan_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_gray_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_green_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_light_blue_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_light_gray_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_lime_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_magenta_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_orange_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_pink_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_purple_glowblock.json | 12 ++++++++++++ .../progression/glowblocks/unlock_red_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_white_glowblock.json | 12 ++++++++++++ .../glowblocks/unlock_yellow_glowblock.json | 12 ++++++++++++ .../manual/en_us/entries/decoration/glowblocks.json | 2 +- .../pedestal/tier3/glowblocks/black_glowblock.json | 2 +- .../pedestal/tier3/glowblocks/blue_glowblock.json | 2 +- .../pedestal/tier3/glowblocks/brown_glowblock.json | 2 +- .../pedestal/tier3/glowblocks/cyan_glowblock.json | 2 +- .../pedestal/tier3/glowblocks/gray_glowblock.json | 2 +- .../pedestal/tier3/glowblocks/green_glowblock.json | 2 +- .../tier3/glowblocks/light_blue_glowblock.json | 2 +- .../tier3/glowblocks/light_gray_glowblock.json | 2 +- .../pedestal/tier3/glowblocks/lime_glowblock.json | 2 +- .../pedestal/tier3/glowblocks/magenta_glowblock.json | 2 +- .../pedestal/tier3/glowblocks/orange_glowblock.json | 2 +- .../pedestal/tier3/glowblocks/pink_glowblock.json | 2 +- .../pedestal/tier3/glowblocks/purple_glowblock.json | 2 +- .../pedestal/tier3/glowblocks/red_glowblock.json | 2 +- .../pedestal/tier3/glowblocks/white_glowblock.json | 2 +- .../pedestal/tier3/glowblocks/yellow_glowblock.json | 2 +- 34 files changed, 221 insertions(+), 17 deletions(-) create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_any_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_black_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_blue_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_brown_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_cyan_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_gray_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_green_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_light_blue_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_light_gray_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_lime_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_magenta_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_orange_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_pink_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_purple_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_red_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_white_glowblock.json create mode 100644 src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_yellow_glowblock.json diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_any_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_any_glowblock.json new file mode 100644 index 0000000000..f4fed93805 --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_any_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_any_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_black_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_black_glowblock.json new file mode 100644 index 0000000000..c03b3272f6 --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_black_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_black_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_black_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_blue_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_blue_glowblock.json new file mode 100644 index 0000000000..19f89ebb8b --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_blue_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_blue_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_blue_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_brown_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_brown_glowblock.json new file mode 100644 index 0000000000..6da83ee97c --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_brown_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_brown_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_brown_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_cyan_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_cyan_glowblock.json new file mode 100644 index 0000000000..4aea70db42 --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_cyan_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_cyan_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_cyan_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_gray_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_gray_glowblock.json new file mode 100644 index 0000000000..9ad73a1c40 --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_gray_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_gray_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_gray_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_green_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_green_glowblock.json new file mode 100644 index 0000000000..1825525fc3 --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_green_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_green_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_green_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_light_blue_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_light_blue_glowblock.json new file mode 100644 index 0000000000..1ca885c10c --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_light_blue_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_light_blue_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_light_blue_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_light_gray_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_light_gray_glowblock.json new file mode 100644 index 0000000000..31564b1e74 --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_light_gray_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_light_gray_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_light_gray_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_lime_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_lime_glowblock.json new file mode 100644 index 0000000000..22a427616f --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_lime_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_lime_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_lime_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_magenta_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_magenta_glowblock.json new file mode 100644 index 0000000000..521e262a9c --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_magenta_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_magenta_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_magenta_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_orange_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_orange_glowblock.json new file mode 100644 index 0000000000..a00f6b1fb5 --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_orange_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_orange_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_orange_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_pink_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_pink_glowblock.json new file mode 100644 index 0000000000..26519c2c67 --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_pink_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_pink_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_pink_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_purple_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_purple_glowblock.json new file mode 100644 index 0000000000..a5bf861cfd --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_purple_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_purple_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_purple_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_red_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_red_glowblock.json new file mode 100644 index 0000000000..4f5763378c --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_red_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_red_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_red_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_white_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_white_glowblock.json new file mode 100644 index 0000000000..7f15355648 --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_white_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_white_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_white_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_yellow_glowblock.json b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_yellow_glowblock.json new file mode 100644 index 0000000000..df6df21a76 --- /dev/null +++ b/src/main/resources/data/spectrum/advancements/progression/glowblocks/unlock_yellow_glowblock.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "has_quitoxic_reeds": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:collect_quitoxic_reeds" } + }, + "has_yellow_pigment": { + "trigger":"revelationary:advancement_gotten", + "conditions": { "advancement_identifier": "spectrum:hidden/collect_pigment/collect_yellow_pigment" } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/patchouli_books/manual/en_us/entries/decoration/glowblocks.json b/src/main/resources/data/spectrum/patchouli_books/manual/en_us/entries/decoration/glowblocks.json index ba3a387ed3..a6fa2d8f38 100644 --- a/src/main/resources/data/spectrum/patchouli_books/manual/en_us/entries/decoration/glowblocks.json +++ b/src/main/resources/data/spectrum/patchouli_books/manual/en_us/entries/decoration/glowblocks.json @@ -1,6 +1,6 @@ { "name": "Glowblocks", - "advancement": "spectrum:midgame/build_advanced_pedestal_structure", + "advancement": "spectrum:progression/glowblocks/unlock_any_glowblock", "icon": "spectrum:orange_glowblock", "category": "spectrum:decoration_category", "extra_recipe_mappings": { diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/black_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/black_glowblock.json index c4fb346782..327d6f2e92 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/black_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/black_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:black_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_black_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_black_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/blue_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/blue_glowblock.json index 0578d4ad65..d0ab7eea13 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/blue_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/blue_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:blue_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_blue_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_blue_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/brown_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/brown_glowblock.json index 85cbea20cc..847ea70eb3 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/brown_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/brown_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:brown_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_brown_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_brown_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/cyan_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/cyan_glowblock.json index 59284b9395..994f8d36ea 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/cyan_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/cyan_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:cyan_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_cyan_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_cyan_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/gray_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/gray_glowblock.json index 217cf4cc6f..8fb34eb9e3 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/gray_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/gray_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:gray_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_gray_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_gray_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/green_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/green_glowblock.json index 088fe29283..2e21967c52 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/green_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/green_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:green_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_green_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_green_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/light_blue_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/light_blue_glowblock.json index b6f8e0c9ca..e10555fe23 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/light_blue_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/light_blue_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:light_blue_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_light_blue_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_light_blue_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/light_gray_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/light_gray_glowblock.json index afea817c68..6892a141df 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/light_gray_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/light_gray_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:light_gray_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_light_gray_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_light_gray_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/lime_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/lime_glowblock.json index cde8328d94..6c72b09b3e 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/lime_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/lime_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:lime_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_lime_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_lime_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/magenta_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/magenta_glowblock.json index deab7bac99..55511b79eb 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/magenta_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/magenta_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:magenta_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_magenta_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_magenta_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/orange_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/orange_glowblock.json index ba3c265711..3112289efb 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/orange_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/orange_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:orange_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_orange_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_orange_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/pink_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/pink_glowblock.json index a6824527b3..67dddf5503 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/pink_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/pink_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:pink_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_pink_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_pink_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/purple_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/purple_glowblock.json index 82e23cd80b..fb0c27cdc4 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/purple_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/purple_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:purple_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_purple_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_purple_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/red_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/red_glowblock.json index c100c46e2b..136d71f0bc 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/red_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/red_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:red_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_red_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_red_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/white_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/white_glowblock.json index fce5ada9f8..bbac27d70d 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/white_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/white_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:white_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_white_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_white_glowblock" } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/yellow_glowblock.json b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/yellow_glowblock.json index 23f6c3f1b5..3709c43fbf 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/yellow_glowblock.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier3/glowblocks/yellow_glowblock.json @@ -26,5 +26,5 @@ "item": "spectrum:yellow_glowblock", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_pigment/collect_yellow_pigment" + "required_advancement": "spectrum:progression/glowblocks/unlock_yellow_glowblock" } \ No newline at end of file From 558fb12223812e2e3d39b99961eebc0cebe38d4d Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 10:31:14 +0200 Subject: [PATCH 0026/1051] improved pedestal rei compat --- .../compat/REI/REICommonIntegration.java | 4 +- .../REI/plugins/PedestalCraftingCategory.java | 7 +- .../REI/plugins/PedestalCraftingDisplay.java | 96 +++++++++---------- .../PedestalCraftingDisplaySerializer.java | 41 ++++++++ 4 files changed, 93 insertions(+), 55 deletions(-) create mode 100644 src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingDisplaySerializer.java diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/REICommonIntegration.java b/src/main/java/de/dafuqs/spectrum/compat/REI/REICommonIntegration.java index 139642a6ab..d88dc16f0e 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/REICommonIntegration.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/REICommonIntegration.java @@ -1,6 +1,6 @@ package de.dafuqs.spectrum.compat.REI; -import de.dafuqs.spectrum.compat.REI.plugins.PedestalCraftingDisplay; +import de.dafuqs.spectrum.compat.REI.plugins.PedestalCraftingDisplaySerializer; import de.dafuqs.spectrum.inventories.CraftingTabletScreenHandler; import de.dafuqs.spectrum.inventories.PedestalScreenHandler; import me.shedaniel.rei.api.common.display.DisplaySerializerRegistry; @@ -15,7 +15,7 @@ public class REICommonIntegration implements REIServerPlugin { // For shift-clicking into crafting gui @Override public void registerDisplaySerializer(DisplaySerializerRegistry registry) { - registry.register(SpectrumPlugins.PEDESTAL_CRAFTING, PedestalCraftingDisplay.serializer()); + registry.register(SpectrumPlugins.PEDESTAL_CRAFTING, PedestalCraftingDisplaySerializer.serializer()); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingCategory.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingCategory.java index eeb4b3ce00..07d0723544 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingCategory.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingCategory.java @@ -16,7 +16,6 @@ import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryStacks; -import me.shedaniel.rei.plugin.common.displays.crafting.DefaultCraftingDisplay; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -68,10 +67,10 @@ public List setupDisplay(PedestalCraftingDisplay display, Rectangle boun // set crafting slot contents List input = display.getInputEntries(); int shownGemstoneSlotCount = display.getTier() == PedestalRecipeTier.COMPLEX ? 5 : display.getTier() == PedestalRecipeTier.ADVANCED ? 4 : 3; - int gemstoneDustStartSlot = input.size() - 5; - for (int i = 0; i < gemstoneDustStartSlot; i++) { + int gemstoneDustStartSlot = 9; + for (int i = 0; i < 9; i++) { if (!input.get(i).isEmpty()) { - slots.get(DefaultCraftingDisplay.getSlotWithSize(display.getWidth(), i, 3)).disableBackground().entries(input.get(i)); + slots.get(i).disableBackground().entries(input.get(i)); } } diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingDisplay.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingDisplay.java index 42e1bc6abe..d00e84065d 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingDisplay.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingDisplay.java @@ -14,12 +14,8 @@ import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; import net.minecraft.client.MinecraftClient; -import net.minecraft.item.Item; import net.minecraft.util.Identifier; -import org.jetbrains.annotations.NotNull; -import net.minecraft.util.math.random.Random; -import java.util.stream.Collectors; import java.util.*; public class PedestalCraftingDisplay extends BasicDisplay implements SimpleGridMenuDisplay, GatedRecipeDisplay { @@ -28,6 +24,9 @@ public class PedestalCraftingDisplay extends BasicDisplay implements SimpleGridM protected final float experience; protected final int craftingTime; + protected final int width; + protected final int height; + protected final Identifier requiredAdvancementIdentifier; protected final PedestalRecipeTier pedestalRecipeTier; @@ -43,73 +42,72 @@ public PedestalCraftingDisplay(PedestalCraftingRecipe recipe) { this.experience = recipe.getExperience(); this.craftingTime = recipe.getCraftingTime(); + this.width = recipe.getWidth(); + this.height = recipe.getHeight(); + this.requiredAdvancementIdentifier = recipe.getRequiredAdvancementIdentifier(); this.pedestalRecipeTier = recipe.getTier(); - - HashMap gemstonePowderInputs = recipe.getGemstonePowderInputs(); - addGemstonePowderCraftingInput(gemstonePowderInputs, BuiltinGemstoneColor.CYAN, SpectrumItems.TOPAZ_POWDER); - addGemstonePowderCraftingInput(gemstonePowderInputs, BuiltinGemstoneColor.MAGENTA, SpectrumItems.AMETHYST_POWDER); - addGemstonePowderCraftingInput(gemstonePowderInputs, BuiltinGemstoneColor.YELLOW, SpectrumItems.CITRINE_POWDER); - addGemstonePowderCraftingInput(gemstonePowderInputs, BuiltinGemstoneColor.BLACK, SpectrumItems.ONYX_POWDER); - addGemstonePowderCraftingInput(gemstonePowderInputs, BuiltinGemstoneColor.WHITE, SpectrumItems.MOONSTONE_POWDER); } private static List mapIngredients(PedestalCraftingRecipe recipe) { int shownGemstoneSlotCount = recipe.getTier() == PedestalRecipeTier.COMPLEX ? 5 : recipe.getTier() == PedestalRecipeTier.ADVANCED ? 4 : 3; - List list = recipe.getIngredients().stream().map(EntryIngredients::ofIngredient).collect(Collectors.toCollection(ArrayList::new)); - while(list.size() < 9 + shownGemstoneSlotCount) { + + List list = new ArrayList<>(9 + shownGemstoneSlotCount); + for (int i = 0; i < 9 + shownGemstoneSlotCount; i++) { list.add(EntryIngredient.empty()); } + for (int i = 0; i < recipe.getIngredients().size(); i++) { + list.set(PedestalCraftingDisplaySerializer.getSlotWithSize(recipe.getWidth(), i), EntryIngredients.ofIngredient(recipe.getIngredients().get(i))); + } + + HashMap gemstonePowderInputs = recipe.getGemstonePowderInputs(); + int firstGemstoneSlotId = 3*3; + + int cyan = gemstonePowderInputs.get(BuiltinGemstoneColor.CYAN); + if(cyan > 0) { + list.set(firstGemstoneSlotId, EntryIngredients.of(SpectrumItems.TOPAZ_POWDER, cyan)); + } + int magenta = gemstonePowderInputs.get(BuiltinGemstoneColor.MAGENTA); + if(magenta > 0) { + list.set(firstGemstoneSlotId+1, EntryIngredients.of(SpectrumItems.AMETHYST_POWDER, magenta)); + } + int yellow = gemstonePowderInputs.get(BuiltinGemstoneColor.YELLOW); + if(yellow > 0) { + list.set(firstGemstoneSlotId+2, EntryIngredients.of(SpectrumItems.CITRINE_POWDER, yellow)); + } + if(shownGemstoneSlotCount >= 4) { + int black = gemstonePowderInputs.get(BuiltinGemstoneColor.BLACK); + if(black > 0) { + list.set(firstGemstoneSlotId+3, EntryIngredients.of(SpectrumItems.ONYX_POWDER, black)); + } + if(shownGemstoneSlotCount == 5) { + int white = gemstonePowderInputs.get(BuiltinGemstoneColor.WHITE); + if(white > 0) { + list.set(firstGemstoneSlotId+4, EntryIngredients.of(SpectrumItems.MOONSTONE_POWDER, white)); + } + } + } + return list; } /** * When using Shift click on the plus button in the REI gui to autofill crafting grids & recipe favourites */ - public PedestalCraftingDisplay(List inputs, List outputs, float experience, int craftingTime, Identifier requiredAdvancementIdentifier, String recipeTier) { + public PedestalCraftingDisplay(List inputs, List outputs, int width, int height, float experience, int craftingTime, Identifier requiredAdvancementIdentifier, String recipeTier) { super(inputs, outputs); this.output = outputs.get(0); this.experience = experience; this.craftingTime = craftingTime; + this.width = width; + this.height = height; + this.requiredAdvancementIdentifier = requiredAdvancementIdentifier; this.pedestalRecipeTier = PedestalRecipeTier.valueOf(recipeTier.toUpperCase(Locale.ROOT)); } - - public static Serializer serializer() { - return BasicDisplay.Serializer.of((input, output, location, tag) -> { - float experience = tag.getFloat("Experience"); - int craftingTime = tag.getInt("CraftingTime"); - String recipeTier = tag.getString("RecipeTier"); - Identifier requiredAdvancementIdentifier = Identifier.tryParse(tag.getString("Advancement")); - return PedestalCraftingDisplay.simple(input, output, experience, craftingTime, requiredAdvancementIdentifier, recipeTier); - }, (display, tag) -> { - tag.putFloat("Experience", display.experience); - tag.putInt("CraftingTime", display.craftingTime); - tag.putString("RecipeTier", display.pedestalRecipeTier.toString()); - tag.putString("Advancement", display.requiredAdvancementIdentifier.toString()); - tag.putInt("Width", display.getWidth()); - }); - } - - private static @NotNull PedestalCraftingDisplay simple(List inputs, List outputs, float experience, int craftingTime, Identifier requiredAdvancementIdentifier, String recipeTier) { - return new PedestalCraftingDisplay(inputs, outputs, experience, craftingTime, requiredAdvancementIdentifier, recipeTier); - } - - private void addGemstonePowderCraftingInput(@NotNull HashMap gemstonePowderInputs, BuiltinGemstoneColor gemstoneColor, Item item) { - if (gemstonePowderInputs.containsKey(gemstoneColor)) { - int amount = gemstonePowderInputs.get(gemstoneColor); - if (amount > 0) { - this.inputs.add(EntryIngredients.of(item, amount)); - } else { - this.inputs.add(EntryIngredient.empty()); - } - } else { - this.inputs.add(EntryIngredient.empty()); - } - } - + @Override public List getInputEntries() { if (this.isUnlocked()) { @@ -134,7 +132,7 @@ public CategoryIdentifier getCategoryIdentifier() { } public boolean isUnlocked() { - return PedestalRecipeTier.hasUnlockedRequiredTier(MinecraftClient.getInstance().player, this.pedestalRecipeTier) && AdvancementHelper.hasAdvancement(MinecraftClient.getInstance().player, this.requiredAdvancementIdentifier); + return PedestalRecipeTier.hasUnlockedRequiredTier(MinecraftClient.getInstance().player, this.pedestalRecipeTier) && AdvancementHelper.hasAdvancementClient(this.requiredAdvancementIdentifier); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingDisplaySerializer.java b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingDisplaySerializer.java new file mode 100644 index 0000000000..e23b925f20 --- /dev/null +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/plugins/PedestalCraftingDisplaySerializer.java @@ -0,0 +1,41 @@ +package de.dafuqs.spectrum.compat.REI.plugins; + +import me.shedaniel.rei.api.common.display.basic.BasicDisplay; +import me.shedaniel.rei.api.common.entry.EntryIngredient; +import net.minecraft.util.Identifier; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class PedestalCraftingDisplaySerializer { + + public static BasicDisplay.Serializer serializer() { + return BasicDisplay.Serializer.of((input, output, location, tag) -> { + float experience = tag.getFloat("Experience"); + int craftingTime = tag.getInt("CraftingTime"); + int width = tag.getInt("Width"); + int height = tag.getInt("Height"); + String recipeTier = tag.getString("RecipeTier"); + Identifier requiredAdvancementIdentifier = Identifier.tryParse(tag.getString("Advancement")); + return simple(input, output, width, height, experience, craftingTime, requiredAdvancementIdentifier, recipeTier); + }, (display, tag) -> { + tag.putFloat("Experience", display.experience); + tag.putInt("CraftingTime", display.craftingTime); + tag.putString("RecipeTier", display.pedestalRecipeTier.toString()); + tag.putString("Advancement", display.requiredAdvancementIdentifier.toString()); + tag.putInt("Width", display.getWidth()); + tag.putInt("Height", display.getHeight()); + }); + } + + static @NotNull PedestalCraftingDisplay simple(List inputs, List outputs, int width, int height, float experience, int craftingTime, Identifier requiredAdvancementIdentifier, String recipeTier) { + return new PedestalCraftingDisplay(inputs, outputs, width, height, experience, craftingTime, requiredAdvancementIdentifier, recipeTier); + } + + public static int getSlotWithSize(int recipeWidth, int index) { + int x = index % recipeWidth; + int y = (index - x) / recipeWidth; + return 3 * y + x; + } + +} From 9077363573379631527c6a116b9c39ddf10ba271 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 12:38:49 +0200 Subject: [PATCH 0027/1051] thank you, lithium --- .../spectrum/blocks/fluid/MidnightSolutionFluidBlock.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluidBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluidBlock.java index bf80825c67..4f868c2d61 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluidBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluidBlock.java @@ -113,7 +113,7 @@ public void onEntityCollision(BlockState state, World world, BlockPos pos, Entit livingEntity.dropStack(SpectrumItems.MIDNIGHT_CHIP.getDefaultStack()); } } - } else if (entity instanceof ItemEntity itemEntity && itemEntity.age % 120 == 0 && !itemEntity.cannotPickup()) { // cannotPickup: looks nicer, also exploit protection + } else if (entity instanceof ItemEntity itemEntity && !itemEntity.cannotPickup()) { ItemStack itemStack = itemEntity.getStack(); // if the item is enchanted: remove enchantments and spawn XP From 903516b5663355180de62ad68e19469fffe1e06c Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 12:53:15 +0200 Subject: [PATCH 0028/1051] fixed cinderhearth not decreasing ink from items --- .../spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java index f010101b73..fae96acfe0 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java @@ -247,6 +247,9 @@ public static void serverTick(World world, BlockPos blockPos, BlockState blockSt if (stack.getItem() instanceof InkStorageItem inkStorageItem) { InkStorage itemStorage = inkStorageItem.getEnergyStorage(stack); didSomething = InkStorage.transferInk(itemStorage, cinderhearthBlockEntity.inkStorage) != 0; + if (didSomething) { + inkStorageItem.setEnergyStorage(stack, itemStorage); + } } if (didSomething) { cinderhearthBlockEntity.markDirty(); From c2e454f7ea84d19735e6e5d82ee4a7a905e9eb21 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 13:16:17 +0200 Subject: [PATCH 0029/1051] fixed color picker gui not getting ink updated when only adding pigment --- .../blocks/energy/ColorPickerBlockEntity.java | 31 +++++++++---------- .../inventories/ColorPickerScreen.java | 4 +-- .../inventories/widgets/InkGaugeWidget.java | 14 ++++----- .../widgets/StackedInkMeterWidget.java | 13 +++++--- 4 files changed, 32 insertions(+), 30 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/blocks/energy/ColorPickerBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/energy/ColorPickerBlockEntity.java index e4ab4a22dd..aae59acfdc 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/energy/ColorPickerBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/energy/ColorPickerBlockEntity.java @@ -67,23 +67,22 @@ public ColorPickerBlockEntity(BlockPos blockPos, BlockState blockState) { } public static void tick(World world, BlockPos pos, BlockState state, ColorPickerBlockEntity blockEntity) { - if (!world.isClient && !blockEntity.paused) { + if (!world.isClient) { blockEntity.inkDirty = false; - boolean didSomething; - - if (world.getTime() % TICKS_PER_CONVERSION == 0) { - didSomething = blockEntity.tryConvertPigmentToEnergy((ServerWorld) world); - } else { - didSomething = true; - } - didSomething = didSomething | blockEntity.tryFillInkContainer(); // that's an OR - - if (didSomething) { - blockEntity.updateInClientWorld(); - blockEntity.setInkDirty(); - blockEntity.markDirty(); - } else { - blockEntity.paused = true; + if (!blockEntity.paused) { + boolean convertedPigment = false; + if (world.getTime() % TICKS_PER_CONVERSION == 0) { + convertedPigment = blockEntity.tryConvertPigmentToEnergy((ServerWorld) world); + } + boolean filledContainer = blockEntity.tryFillInkContainer(); // that's an OR + + if (convertedPigment || filledContainer) { + blockEntity.updateInClientWorld(); + blockEntity.setInkDirty(); + blockEntity.markDirty(); + } else { + blockEntity.paused = true; + } } } } diff --git a/src/main/java/de/dafuqs/spectrum/inventories/ColorPickerScreen.java b/src/main/java/de/dafuqs/spectrum/inventories/ColorPickerScreen.java index 1778cae16a..175e9620f8 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/ColorPickerScreen.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/ColorPickerScreen.java @@ -37,8 +37,8 @@ protected void init() { int startY = (this.height - this.backgroundHeight) / 2; this.colorSelectionWidget = new ColorSelectionWidget(startX + 113, startY + 55, startX + 139, startY + 25, this, this.handler.getBlockEntity()); - this.inkGaugeWidget = new InkGaugeWidget(startX + 54, startY + 21, 42, 42, this, this.handler.getBlockEntity().getEnergyStorage()); - this.inkMeterWidget = new StackedInkMeterWidget(startX + 100, startY + 21, 4, 40, this, this.handler.getBlockEntity().getEnergyStorage()); + this.inkGaugeWidget = new InkGaugeWidget(startX + 54, startY + 21, 42, 42, this, this.handler.getBlockEntity()); + this.inkMeterWidget = new StackedInkMeterWidget(startX + 100, startY + 21, 4, 40, this, this.handler.getBlockEntity()); this.colorSelectionWidget.setChangedListener(this); diff --git a/src/main/java/de/dafuqs/spectrum/inventories/widgets/InkGaugeWidget.java b/src/main/java/de/dafuqs/spectrum/inventories/widgets/InkGaugeWidget.java index aece54d8c0..3c9d6f53a8 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/widgets/InkGaugeWidget.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/widgets/InkGaugeWidget.java @@ -1,6 +1,6 @@ package de.dafuqs.spectrum.inventories.widgets; -import de.dafuqs.spectrum.energy.InkStorage; +import de.dafuqs.spectrum.energy.InkStorageBlockEntity; import de.dafuqs.spectrum.energy.color.InkColor; import de.dafuqs.spectrum.helpers.RenderHelper; import net.fabricmc.api.EnvType; @@ -31,16 +31,16 @@ public class InkGaugeWidget extends DrawableHelper implements Drawable, Element, protected boolean hovered; protected Screen screen; - protected InkStorage inkStorage; + protected InkStorageBlockEntity blockEntity; - public InkGaugeWidget(int x, int y, int width, int height, Screen screen, InkStorage inkStorage) { + public InkGaugeWidget(int x, int y, int width, int height, Screen screen, InkStorageBlockEntity blockEntity) { this.x = x; this.y = y; this.width = width; this.height = height; this.screen = screen; - this.inkStorage = inkStorage; + this.blockEntity = blockEntity; } public boolean isMouseOver(double mouseX, double mouseY) { @@ -65,7 +65,7 @@ public void appendNarrations(NarrationMessageBuilder builder) { public void drawMouseoverTooltip(MatrixStack matrices, int x, int y) { List tooltip = new ArrayList<>(); int padding = 0; - Map energy = inkStorage.getEnergy(); + Map energy = blockEntity.getEnergyStorage().getEnergy(); for (Long color : energy.values()) { padding = Math.max(padding, StringUtils.length(String.valueOf(color))); } @@ -86,7 +86,7 @@ public void drawMouseoverTooltip(MatrixStack matrices, int x, int y) { public void draw(MatrixStack matrices) { - long totalInk = inkStorage.getCurrentTotal(); + long totalInk = blockEntity.getEnergyStorage().getCurrentTotal(); if (totalInk > 0) { int centerX = x + width / 2; @@ -94,7 +94,7 @@ public void draw(MatrixStack matrices) { int radius = 22; double startRad = -0.5 * Math.PI; - for (Map.Entry entry : inkStorage.getEnergy().entrySet()) { + for (Map.Entry entry : blockEntity.getEnergyStorage().getEnergy().entrySet()) { InkColor color = entry.getKey(); long currentInk = entry.getValue(); diff --git a/src/main/java/de/dafuqs/spectrum/inventories/widgets/StackedInkMeterWidget.java b/src/main/java/de/dafuqs/spectrum/inventories/widgets/StackedInkMeterWidget.java index a48be1d45e..b836dacd9b 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/widgets/StackedInkMeterWidget.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/widgets/StackedInkMeterWidget.java @@ -1,6 +1,7 @@ package de.dafuqs.spectrum.inventories.widgets; import de.dafuqs.spectrum.energy.InkStorage; +import de.dafuqs.spectrum.energy.InkStorageBlockEntity; import de.dafuqs.spectrum.energy.color.InkColor; import de.dafuqs.spectrum.helpers.RenderHelper; import de.dafuqs.spectrum.helpers.Support; @@ -29,16 +30,16 @@ public class StackedInkMeterWidget extends DrawableHelper implements Drawable, E protected boolean hovered; protected Screen screen; - protected InkStorage inkStorage; + protected InkStorageBlockEntity blockEntity; - public StackedInkMeterWidget(int x, int y, int width, int height, Screen screen, InkStorage inkStorage) { + public StackedInkMeterWidget(int x, int y, int width, int height, Screen screen, InkStorageBlockEntity blockEntity) { this.x = x; this.y = y; this.width = width; this.height = height; this.screen = screen; - this.inkStorage = inkStorage; + this.blockEntity = blockEntity; } public boolean isMouseOver(double mouseX, double mouseY) { @@ -61,15 +62,17 @@ public void appendNarrations(NarrationMessageBuilder builder) { } public void drawMouseoverTooltip(MatrixStack matrices, int x, int y) { - long currentTotal = this.inkStorage.getCurrentTotal(); + InkStorage inkStorage = this.blockEntity.getEnergyStorage(); + long currentTotal = inkStorage.getCurrentTotal(); String readableCurrentTotalString = Support.getShortenedNumberString(currentTotal); - String percent = Support.getSensiblePercent(this.inkStorage.getCurrentTotal(), (this.inkStorage.getMaxTotal())); + String percent = Support.getSensiblePercent(inkStorage.getCurrentTotal(), (inkStorage.getMaxTotal())); screen.renderTooltip(matrices, List.of(Text.translatable("spectrum.tooltip.ink_powered.percent_filled", readableCurrentTotalString, percent)), Optional.empty(), x, y); } public void draw(MatrixStack matrices) { + InkStorage inkStorage = this.blockEntity.getEnergyStorage(); long currentTotal = inkStorage.getCurrentTotal(); if (currentTotal > 0) { From 796333946a57e22451012575207b999736b8c3de Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 13:20:03 +0200 Subject: [PATCH 0030/1051] stone ring => tuff ring --- src/main/resources/assets/spectrum/lang/en_us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/spectrum/lang/en_us.json b/src/main/resources/assets/spectrum/lang/en_us.json index 5baade9bb0..13205cbb02 100644 --- a/src/main/resources/assets/spectrum/lang/en_us.json +++ b/src/main/resources/assets/spectrum/lang/en_us.json @@ -1787,7 +1787,7 @@ "trinkets.slot.head.crown": "Crown", "trinkets.slot.legs.pigment_palette": "Pigment Palette", - "item.spectrum.fanciful_stone_ring": "Fanciful Stone Ring", + "item.spectrum.fanciful_stone_ring": "Fanciful Tuff Ring", "item.spectrum.fanciful_belt": "Fanciful Belt", "item.spectrum.fanciful_pendant": "Fanciful Pendant", "item.spectrum.fanciful_circlet": "Fanciful Circlet", From 1e10848c0fc301e6dae6793de4e7bc335e280359 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 13:20:11 +0200 Subject: [PATCH 0031/1051] optimized imports --- .../spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java | 1 - .../blocks/crystallarieum/CrystallarieumBlockEntity.java | 1 - .../blocks/spirit_instiller/SpiritInstillerBlockEntity.java | 1 - .../spectrum/blocks/spirit_sallow/OminousSaplingBlock.java | 1 - src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java | 2 -- .../dafuqs/spectrum/networking/SpectrumC2SPacketReceiver.java | 1 - 6 files changed, 7 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java index fae96acfe0..a9c22edb26 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/cinderhearth/CinderhearthBlockEntity.java @@ -1,6 +1,5 @@ package de.dafuqs.spectrum.blocks.cinderhearth; -import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.blocks.MultiblockCrafter; import de.dafuqs.spectrum.blocks.upgrade.Upgradeable; import de.dafuqs.spectrum.energy.InkStorage; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java index 14d96c99c9..c98d9d5771 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/crystallarieum/CrystallarieumBlockEntity.java @@ -1,6 +1,5 @@ package de.dafuqs.spectrum.blocks.crystallarieum; -import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.energy.InkStorageBlockEntity; import de.dafuqs.spectrum.energy.storage.IndividualCappedInkStorage; import de.dafuqs.spectrum.events.SpectrumGameEvents; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java b/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java index 53e9adedfb..99cd3ff9d1 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/spirit_instiller/SpiritInstillerBlockEntity.java @@ -1,6 +1,5 @@ package de.dafuqs.spectrum.blocks.spirit_instiller; -import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.blocks.MultiblockCrafter; import de.dafuqs.spectrum.blocks.decoration.GemstoneChimeBlock; import de.dafuqs.spectrum.blocks.enchanter.EnchanterBlockEntity; diff --git a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/OminousSaplingBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/OminousSaplingBlock.java index 65e9098392..13e379e642 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/OminousSaplingBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/spirit_sallow/OminousSaplingBlock.java @@ -1,6 +1,5 @@ package de.dafuqs.spectrum.blocks.spirit_sallow; -import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.helpers.Support; import de.dafuqs.spectrum.interfaces.PlayerOwned; import de.dafuqs.spectrum.registries.SpectrumBlockEntities; diff --git a/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java index 3efdaf9013..010988d4c1 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/ItemEntityMixin.java @@ -1,6 +1,5 @@ package de.dafuqs.spectrum.mixin; -import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.helpers.Support; import de.dafuqs.spectrum.interfaces.GravitableItem; import de.dafuqs.spectrum.inventories.AutoCompactingInventory; @@ -16,7 +15,6 @@ import net.minecraft.entity.damage.DamageSource; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.server.MinecraftServer; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvent; diff --git a/src/main/java/de/dafuqs/spectrum/networking/SpectrumC2SPacketReceiver.java b/src/main/java/de/dafuqs/spectrum/networking/SpectrumC2SPacketReceiver.java index 7111275031..3064ee975f 100644 --- a/src/main/java/de/dafuqs/spectrum/networking/SpectrumC2SPacketReceiver.java +++ b/src/main/java/de/dafuqs/spectrum/networking/SpectrumC2SPacketReceiver.java @@ -1,6 +1,5 @@ package de.dafuqs.spectrum.networking; -import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.blocks.chests.CompactingChestBlockEntity; import de.dafuqs.spectrum.blocks.particle_spawner.ParticleSpawnerBlockEntity; import de.dafuqs.spectrum.energy.color.InkColor; From f305cb6d46116d68d29a44eb30bde04eb90f179f Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 13:52:51 +0200 Subject: [PATCH 0032/1051] REI overlay does not show on paintbrush screen --- .../compat/REI/REIClientIntegration.java | 2 ++ .../compat/REI/REIOverlayDecider.java | 27 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/main/java/de/dafuqs/spectrum/compat/REI/REIOverlayDecider.java diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/REIClientIntegration.java b/src/main/java/de/dafuqs/spectrum/compat/REI/REIClientIntegration.java index 1d39b79292..18d9e7a11f 100644 --- a/src/main/java/de/dafuqs/spectrum/compat/REI/REIClientIntegration.java +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/REIClientIntegration.java @@ -158,6 +158,8 @@ public void registerScreens(ScreenRegistry registry) { registry.registerContainerClickArea(new Rectangle(35, 33, 22, 15), CinderhearthScreen.class, SpectrumPlugins.CINDERHEARTH); registry.registerContainerClickArea(new Rectangle(35, 33, 22, 15), CinderhearthScreen.class, BuiltinPlugin.BLASTING); + + registry.registerDecider(REIOverlayDecider.INSTANCE); } } diff --git a/src/main/java/de/dafuqs/spectrum/compat/REI/REIOverlayDecider.java b/src/main/java/de/dafuqs/spectrum/compat/REI/REIOverlayDecider.java new file mode 100644 index 0000000000..10a6b4495f --- /dev/null +++ b/src/main/java/de/dafuqs/spectrum/compat/REI/REIOverlayDecider.java @@ -0,0 +1,27 @@ +package de.dafuqs.spectrum.compat.REI; + +import de.dafuqs.spectrum.inventories.PaintbrushScreen; +import me.shedaniel.rei.api.client.registry.screen.OverlayDecider; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.util.ActionResult; + +@Environment(EnvType.CLIENT) +public class REIOverlayDecider implements OverlayDecider { + + public static final OverlayDecider INSTANCE = new REIOverlayDecider(); + + @Override + public boolean isHandingScreen(Class screen) { + return screen.getPackageName().startsWith("de.dafuqs.spectrum"); + } + + @Override + public ActionResult shouldScreenBeOverlaid(R screen) { + if(screen instanceof PaintbrushScreen) { + return ActionResult.FAIL; + } + return ActionResult.PASS; + } +} From d958edd3d7eee82ca3fedd74653f4df9e252e5df Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 14:40:46 +0200 Subject: [PATCH 0033/1051] paintbrush gui is navigable via mouse. Add keyboard input tooltip --- .../inventories/PaintbrushScreen.java | 205 ++++++++++++------ .../inventories/PotionWorkshopScreen.java | 2 +- 2 files changed, 143 insertions(+), 64 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreen.java b/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreen.java index ac5df02c81..1439e6f4b2 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreen.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreen.java @@ -14,6 +14,7 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.sound.SoundCategory; +import net.minecraft.text.LiteralText; import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.Pair; @@ -25,8 +26,12 @@ public class PaintbrushScreen extends HandledScreen { + public static final int TEXT_COLOR = 0xEEEEEE; public static final Identifier BACKGROUND = new Identifier(SpectrumCommon.MOD_ID, "textures/gui/paintbrush.png"); - + + protected final Text note1 = new LiteralText("Movement Keys to move"); + protected final Text note2 = new LiteralText("Drop/Inventory to select"); + public static final List MAIN_GRID = new ArrayList<>() {{ add(InkColors.MAGENTA); add(InkColors.CYAN); @@ -82,6 +87,9 @@ public PaintbrushScreen(PaintbrushScreenHandler handler, PlayerInventory playerI @Override protected void drawForeground(MatrixStack matrices, int mouseX, int mouseY) { drawGrid(matrices, backgroundWidth / 2, backgroundHeight / 2, GRIDS.get(currentGrid)); + + this.textRenderer.draw(matrices, note1, (backgroundWidth - textRenderer.getWidth(note1)) / 2, 202, TEXT_COLOR); + this.textRenderer.draw(matrices, note2, (backgroundWidth - textRenderer.getWidth(note2)) / 2, 212, TEXT_COLOR); } protected void drawGrid(MatrixStack matrices, int startX, int startY, List grid) { @@ -110,80 +118,156 @@ protected void drawBackground(MatrixStack matrices, float delta, int mouseX, int } + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) { + if(button == 1) { + // select + selectBack(); + } else { + // back + int startX = backgroundWidth / 2; + int startY = backgroundHeight / 2; + + mouseX = mouseX - x; + mouseY = mouseY - y; + + int centerElementSize = currentGrid == 0 ? 5 : 14; + if(mouseX >= startX -centerElementSize && mouseX <= startX + centerElementSize && mouseY >= startY -centerElementSize && mouseY <= startY + centerElementSize) { + selectCenter(); + return true; + } + + List grid = GRIDS.get(currentGrid); + Iterator> iOffset = SQUARE_OFFSETS.iterator(); + int offsetID = 0; + for (InkColor color : grid) { + Pair offset = iOffset.next(); + if (color != null) { + if(mouseX >= startX + offset.getLeft() && mouseX <= startX + offset.getLeft() + 32 && mouseY >= startY + offset.getRight() && mouseY <= startY + offset.getRight() + 32) { + switch (offsetID) { + case 0 -> { + selectLeft(); + return true; + } + case 1 -> { + selectUp(); + return true; + } + case 2 -> { + selectRight(); + return true; + } + case 3 -> { + selectDown(); + return true; + } + } + } + } + offsetID++; + } + } + + return super.mouseClicked(mouseX, mouseY, button); + } + @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { GameOptions options = MinecraftClient.getInstance().options; if (options.leftKey.matchesKey(keyCode, scanCode)) { - if(currentGrid == 0) { - currentGrid = 1; - client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_SWITCH, SoundCategory.NEUTRAL, 0.5F, 1.0F, false); - } else { - InkColor selectedColor = GRIDS.get(currentGrid).get(0); - if(selectedColor == null) { - currentGrid = 0; - client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_SWITCH, SoundCategory.NEUTRAL, 0.5F, 1.0F, false); - } else { - chooseColor(selectedColor); - } - } + selectLeft(); return true; } else if(options.forwardKey.matchesKey(keyCode, scanCode)) { - if(currentGrid == 0) { - currentGrid = 2; - client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_SWITCH, SoundCategory.NEUTRAL, 0.5F, 1.0F, false); - } else { - InkColor selectedColor = GRIDS.get(currentGrid).get(1); - if(selectedColor == null) { - currentGrid = 0; - client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_SWITCH, SoundCategory.NEUTRAL, 0.5F, 1.0F, false); - } else { - chooseColor(selectedColor); - } - } + selectUp(); return true; } else if(options.rightKey.matchesKey(keyCode, scanCode)) { - if(currentGrid == 0) { - currentGrid = 3; - client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_SWITCH, SoundCategory.NEUTRAL, 0.5F, 1.0F, false); - } else { - InkColor selectedColor = GRIDS.get(currentGrid).get(2); - if(selectedColor == null) { - currentGrid = 0; - client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_SWITCH, SoundCategory.NEUTRAL, 0.5F, 1.0F, false); - } else { - chooseColor(selectedColor); - } - } + selectRight(); return true; } else if(options.backKey.matchesKey(keyCode, scanCode)) { - if(currentGrid == 0) { - if(handler.hasAccessToWhites()) { - currentGrid = 4; - client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_SWITCH, SoundCategory.NEUTRAL, 0.5F, 1.0F, false); - } else { - chooseColor(MAIN_GRID.get(3)); - } - } else { - InkColor selectedColor = GRIDS.get(currentGrid).get(3); - if(selectedColor == null) { - currentGrid = 0; - client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_SWITCH, SoundCategory.NEUTRAL, 0.5F, 1.0F, false); - } else { - chooseColor(selectedColor); - } - } + selectDown(); return true; } else if(options.dropKey.matchesKey(keyCode, scanCode) || options.inventoryKey.matchesKey(keyCode, scanCode)) { - if(currentGrid == 0) { - chooseColor(null); - } else { - chooseColor(MAIN_GRID.get(currentGrid-1)); - } + selectCenter(); return true; } return super.keyPressed(keyCode, scanCode, modifiers); } + private void selectCenter() { + if(currentGrid == 0) { + chooseColor(null); + } else { + chooseColor(MAIN_GRID.get(currentGrid-1)); + } + } + + private void selectRight() { + if(currentGrid == 0) { + currentGrid = 3; + client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_SWITCH, SoundCategory.NEUTRAL, 0.5F, 1.0F, false); + } else { + InkColor selectedColor = GRIDS.get(currentGrid).get(2); + if(selectedColor == null) { + selectBack(); + } else { + chooseColor(selectedColor); + } + } + } + + private void selectUp() { + if(currentGrid == 0) { + currentGrid = 2; + client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_SWITCH, SoundCategory.NEUTRAL, 0.5F, 1.0F, false); + } else { + InkColor selectedColor = GRIDS.get(currentGrid).get(1); + if(selectedColor == null) { + selectBack(); + } else { + chooseColor(selectedColor); + } + } + } + + private void selectLeft() { + if(currentGrid == 0) { + currentGrid = 1; + client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_SWITCH, SoundCategory.NEUTRAL, 0.5F, 1.0F, false); + } else { + InkColor selectedColor = GRIDS.get(currentGrid).get(0); + if(selectedColor == null) { + selectBack(); + } else { + chooseColor(selectedColor); + } + } + } + + private void selectDown() { + if(currentGrid == 0) { + if(handler.hasAccessToWhites()) { + currentGrid = 4; + client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_SWITCH, SoundCategory.NEUTRAL, 0.5F, 1.0F, false); + } else { + chooseColor(MAIN_GRID.get(3)); + } + } else { + InkColor selectedColor = GRIDS.get(currentGrid).get(3); + if(selectedColor == null) { + selectBack(); + } else { + chooseColor(selectedColor); + } + } + } + + private void selectBack() { + if(currentGrid != 0) { + currentGrid = 0; + client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_SWITCH, SoundCategory.NEUTRAL, 0.5F, 1.0F, false); + } + } + private void chooseColor(@Nullable InkColor inkColor) { SpectrumC2SPacketSender.sendInkColorSelectedInGUI(inkColor); client.world.playSound(client.player.getBlockPos(), SpectrumSoundEvents.PAINTBRUSH_PAINT, SoundCategory.NEUTRAL, 0.6F, 1.0F, false); @@ -191,9 +275,4 @@ private void chooseColor(@Nullable InkColor inkColor) { } - @Override - public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { - super.render(matrices, mouseX, mouseY, delta); - } - } \ No newline at end of file diff --git a/src/main/java/de/dafuqs/spectrum/inventories/PotionWorkshopScreen.java b/src/main/java/de/dafuqs/spectrum/inventories/PotionWorkshopScreen.java index 14c4b00d3a..bccf426cc5 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/PotionWorkshopScreen.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/PotionWorkshopScreen.java @@ -35,7 +35,7 @@ public PotionWorkshopScreen(PotionWorkshopScreenHandler handler, PlayerInventory @Override protected void drawForeground(MatrixStack matrices, int mouseX, int mouseY) { // draw "title" and "inventory" texts - int titleX = (backgroundWidth - textRenderer.getWidth(title)) / 2; // 8; + int titleX = (backgroundWidth - textRenderer.getWidth(title)) / 2; int titleY = 6; Text title = this.title; int playerInventoryX = 8; From 4041827a375afab75a312f07a5eee21f98cba287 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 14:58:00 +0200 Subject: [PATCH 0034/1051] ability tooltips for the paintbrush --- .../inventories/PaintbrushScreen.java | 10 +++---- .../items/magic_items/PaintBrushItem.java | 27 +++++++++++++------ .../progression/UnlockToastManager.java | 2 +- .../resources/assets/spectrum/lang/en_us.json | 7 +++++ 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreen.java b/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreen.java index 1439e6f4b2..efeb2cab2c 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreen.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreen.java @@ -14,8 +14,8 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.sound.SoundCategory; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; +import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.Pair; import org.jetbrains.annotations.Nullable; @@ -29,8 +29,8 @@ public class PaintbrushScreen extends HandledScreen { public static final int TEXT_COLOR = 0xEEEEEE; public static final Identifier BACKGROUND = new Identifier(SpectrumCommon.MOD_ID, "textures/gui/paintbrush.png"); - protected final Text note1 = new LiteralText("Movement Keys to move"); - protected final Text note2 = new LiteralText("Drop/Inventory to select"); + protected static final Text CONTROLS_TEXT_1 = new TranslatableText("item.spectrum.paintbrush.gui.controls1"); + protected static final Text CONTROLS_TEXT_2 = new TranslatableText("item.spectrum.paintbrush.gui.controls2"); public static final List MAIN_GRID = new ArrayList<>() {{ add(InkColors.MAGENTA); @@ -88,8 +88,8 @@ public PaintbrushScreen(PaintbrushScreenHandler handler, PlayerInventory playerI protected void drawForeground(MatrixStack matrices, int mouseX, int mouseY) { drawGrid(matrices, backgroundWidth / 2, backgroundHeight / 2, GRIDS.get(currentGrid)); - this.textRenderer.draw(matrices, note1, (backgroundWidth - textRenderer.getWidth(note1)) / 2, 202, TEXT_COLOR); - this.textRenderer.draw(matrices, note2, (backgroundWidth - textRenderer.getWidth(note2)) / 2, 212, TEXT_COLOR); + this.textRenderer.draw(matrices, CONTROLS_TEXT_1, (backgroundWidth - textRenderer.getWidth(CONTROLS_TEXT_1)) / 2, 202, TEXT_COLOR); + this.textRenderer.draw(matrices, CONTROLS_TEXT_2, (backgroundWidth - textRenderer.getWidth(CONTROLS_TEXT_2)) / 2, 212, TEXT_COLOR); } protected void drawGrid(MatrixStack matrices, int startX, int startY, List grid) { diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/PaintBrushItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/PaintBrushItem.java index 3971210980..c033bdc76d 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/PaintBrushItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/PaintBrushItem.java @@ -36,12 +36,11 @@ public class PaintBrushItem extends Item { - public static final Identifier UNLOCK_ADVANCEMENT_ID = SpectrumCommon.locate("progression/unlock_paintbrush"); public static final Identifier UNLOCK_COLORING_ADVANCEMENT_ID = SpectrumCommon.locate("collect_pigment"); - public static final Identifier UNLOCK_PAINT_SLINGING_ADVANCEMENT_ID = SpectrumCommon.locate("midgame/fill_ink_container"); + public static final Identifier UNLOCK_INK_SLINGING_ADVANCEMENT_ID = SpectrumCommon.locate("midgame/fill_ink_container"); public static final int COOLDOWN_DURATION_TICKS = 10; - public static final int BLOCK_COLOR_COST = 10; + public static final int BLOCK_COLOR_COST = 25; public static final int INK_FLING_COST = 100; public static final String COLOR_NBT_STRING = "Color"; @@ -60,15 +59,27 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { super.appendTooltip(stack, world, tooltip, context); Optional color = getColor(stack); - color.ifPresent(inkColor -> tooltip.add(Text.translatable("spectrum.ink.color." + inkColor))); - } + if(color.isPresent()) { + tooltip.add(Text.translatable("spectrum.ink.color." + color.get())); + } else { + tooltip.add(Text.translatable("item.spectrum.paintbrush.tooltip.select_color")); + } + + tooltip.add(Text.translatable("item.spectrum.paintbrush.ability.header").formatted(Formatting.GRAY)); + tooltip.add(Text.translatable("item.spectrum.paintbrush.ability.pedestal_triggering").formatted(Formatting.GRAY)); + if(AdvancementHelper.hasAdvancementClient(UNLOCK_COLORING_ADVANCEMENT_ID)) { + tooltip.add(Text.translatable("item.spectrum.paintbrush.ability.block_coloring").formatted(Formatting.GRAY)); + } + if(AdvancementHelper.hasAdvancementClient(UNLOCK_INK_SLINGING_ADVANCEMENT_ID)) { + tooltip.add(Text.translatable("item.spectrum.paintbrush.ability.ink_slinging").formatted(Formatting.GRAY)); + } } public static boolean canColor(PlayerEntity player) { return AdvancementHelper.hasAdvancement(player, UNLOCK_COLORING_ADVANCEMENT_ID); } - public static boolean canPaintSling(PlayerEntity player) { - return AdvancementHelper.hasAdvancement(player, UNLOCK_PAINT_SLINGING_ADVANCEMENT_ID); + public static boolean canInkSling(PlayerEntity player) { + return AdvancementHelper.hasAdvancement(player, UNLOCK_INK_SLINGING_ADVANCEMENT_ID); } public NamedScreenHandlerFactory createScreenHandlerFactory(World world, ServerPlayerEntity serverPlayerEntity, ItemStack itemStack) { @@ -143,7 +154,7 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han } } return TypedActionResult.pass(user.getStackInHand(hand)); - } else if(canPaintSling(user)){ + } else if(canInkSling(user)){ Optional optionalInkColor = getColor(user.getStackInHand(hand)); if (optionalInkColor.isPresent()) { diff --git a/src/main/java/de/dafuqs/spectrum/progression/UnlockToastManager.java b/src/main/java/de/dafuqs/spectrum/progression/UnlockToastManager.java index c8fdaf0b6d..763a8231dd 100644 --- a/src/main/java/de/dafuqs/spectrum/progression/UnlockToastManager.java +++ b/src/main/java/de/dafuqs/spectrum/progression/UnlockToastManager.java @@ -38,7 +38,7 @@ public class UnlockToastManager { put(SpectrumCommon.locate("midgame/spectrum_midgame"), new Pair<>(SpectrumBlocks.PEDESTAL_ONYX.asItem().getDefaultStack(), "second_advancement_tree_unlocked")); put(SpectrumCommon.locate("lategame/spectrum_lategame"), new Pair<>(SpectrumBlocks.PEDESTAL_MOONSTONE.asItem().getDefaultStack(), "third_advancement_tree_unlocked")); put(PaintBrushItem.UNLOCK_COLORING_ADVANCEMENT_ID, new Pair<>(SpectrumItems.PAINTBRUSH.getDefaultStack(), "block_coloring_unlocked")); - put(PaintBrushItem.UNLOCK_PAINT_SLINGING_ADVANCEMENT_ID, new Pair<>(SpectrumItems.PAINTBRUSH.getDefaultStack(), "paint_flinging_unlocked")); + put(PaintBrushItem.UNLOCK_INK_SLINGING_ADVANCEMENT_ID, new Pair<>(SpectrumItems.PAINTBRUSH.getDefaultStack(), "paint_flinging_unlocked")); }}; public static void registerGatedRecipe(RecipeType recipeType, GatedRecipe gatedRecipe) { diff --git a/src/main/resources/assets/spectrum/lang/en_us.json b/src/main/resources/assets/spectrum/lang/en_us.json index 13205cbb02..2191f81c68 100644 --- a/src/main/resources/assets/spectrum/lang/en_us.json +++ b/src/main/resources/assets/spectrum/lang/en_us.json @@ -1326,6 +1326,13 @@ "item.spectrum.manual": "Colorful World", "item.spectrum.manual.landing_text": "$(br)The energies growing$(br)$(c_gray) like roots, they sprout$()$(br)magic of nature overflowing$(br)$(c_gray) ’til you discover$(br) what's all about.", "item.spectrum.paintbrush": "Paintbrush", + "item.spectrum.paintbrush.tooltip.select_color": "Crouch-Use to select a Color", + "item.spectrum.paintbrush.ability.header": "Abilities:", + "item.spectrum.paintbrush.ability.pedestal_triggering": "- Pedestal Triggering", + "item.spectrum.paintbrush.ability.block_coloring": "- Block Coloring", + "item.spectrum.paintbrush.ability.ink_slinging": "- Ink Slinging", + "item.spectrum.paintbrush.gui.controls1": "Movement Keys to move", + "item.spectrum.paintbrush.gui.controls2": "Drop/Inventory to select", "item.spectrum.multitool": "Multitool", "item.spectrum.silker_pickaxe": "Tender Pickaxe", "item.spectrum.fortune_pickaxe": "Lucky Pickaxe", From ba9aad8d47419c6f9ddfe3afbd44d61b7f82e795 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 15:00:00 +0200 Subject: [PATCH 0035/1051] paintbrush screen works --- src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java | 6 ++---- .../de/dafuqs/spectrum/inventories/PaintbrushScreen.java | 5 ++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java b/src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java index 5a10f09e1b..c1af090936 100644 --- a/src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java +++ b/src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java @@ -29,8 +29,7 @@ public static void fillTriangle(MatrixStack matrices, int p1x, int p1y, int p2x, builder.vertex(matrix, p1x, p1y, 0F).color(red, green, blue, alpha).next(); builder.vertex(matrix, p2x, p2y, 0F).color(red, green, blue, alpha).next(); builder.vertex(matrix, p3x, p3y, 0F).color(red, green, blue, alpha).next(); - builder.end(); - BufferRenderer.drawWithShader(builder.end()); // TODO: test + BufferRenderer.drawWithShader(builder.end()); RenderSystem.enableTexture(); RenderSystem.disableBlend(); } @@ -54,8 +53,7 @@ public static void fillQuad(MatrixStack matrices, int x, int y, int height, int builder.vertex(matrix, x, y+height, 0F).color(red, green, blue, alpha).next(); builder.vertex(matrix, x+width, y+height, 0F).color(red, green, blue, alpha).next(); builder.vertex(matrix, x+width, y, 0F).color(red, green, blue, alpha).next(); - builder.end(); - BufferRenderer.drawWithShader(builder.end()); // TODO: test + BufferRenderer.drawWithShader(builder.end()); RenderSystem.enableTexture(); RenderSystem.disableBlend(); } diff --git a/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreen.java b/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreen.java index efeb2cab2c..9129fdd6ae 100644 --- a/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreen.java +++ b/src/main/java/de/dafuqs/spectrum/inventories/PaintbrushScreen.java @@ -15,7 +15,6 @@ import net.minecraft.entity.player.PlayerInventory; import net.minecraft.sound.SoundCategory; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.Pair; import org.jetbrains.annotations.Nullable; @@ -29,8 +28,8 @@ public class PaintbrushScreen extends HandledScreen { public static final int TEXT_COLOR = 0xEEEEEE; public static final Identifier BACKGROUND = new Identifier(SpectrumCommon.MOD_ID, "textures/gui/paintbrush.png"); - protected static final Text CONTROLS_TEXT_1 = new TranslatableText("item.spectrum.paintbrush.gui.controls1"); - protected static final Text CONTROLS_TEXT_2 = new TranslatableText("item.spectrum.paintbrush.gui.controls2"); + protected static final Text CONTROLS_TEXT_1 = Text.translatable("item.spectrum.paintbrush.gui.controls1"); + protected static final Text CONTROLS_TEXT_2 = Text.translatable("item.spectrum.paintbrush.gui.controls2"); public static final List MAIN_GRID = new ArrayList<>() {{ add(InkColors.MAGENTA); From 3ae8a0b7cf0adcb6aa91245d9ad350e26dfa955f Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 22:07:54 +0200 Subject: [PATCH 0036/1051] ink projectile death message --- .../de/dafuqs/spectrum/registries/SpectrumDamageSources.java | 2 +- src/main/resources/assets/spectrum/lang/en_us.json | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumDamageSources.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumDamageSources.java index 3f83d49462..2661f04f78 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumDamageSources.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumDamageSources.java @@ -15,7 +15,7 @@ public class SpectrumDamageSources { public static final DamageSource DIKE_GATE = new SpectrumDamageSource("spectrum_dike_gate").setNeutral().setUsesMagic(); public static DamageSource inkProjectile(InkProjectileEntity projectile, @Nullable Entity attacker) { - return (new ProjectileDamageSource("arrow", projectile, attacker)).setProjectile(); // TODO + return (new ProjectileDamageSource("spectrum_ink_projectile", projectile, attacker)).setProjectile(); } public static class SpectrumDamageSource extends DamageSource { diff --git a/src/main/resources/assets/spectrum/lang/en_us.json b/src/main/resources/assets/spectrum/lang/en_us.json index 2191f81c68..ac5da09940 100644 --- a/src/main/resources/assets/spectrum/lang/en_us.json +++ b/src/main/resources/assets/spectrum/lang/en_us.json @@ -155,6 +155,8 @@ "multiblock.spectrum.cinderhearth.structure": "Cinderhearth", "death.attack.spectrum_decay": "%s was eaten alive", + "death.attack.spectrum_ink_projectile": "%1$s taught %2$s the joy of painting", + "death.attack.spectrum_ink_projectile.item": "%1$s taught %2$s the joy of painting using %3$s", "death.attack.spectrum_floatblock": "%s was smashed by a Floating Block", "death.attack.spectrum_shooting_star": "%s was smitten by a Shooting Star. Make a Wish!", "death.attack.spectrum_midnight_solution": "%s was lost in Translation", From ce03c05feeb1bf73926435237f59aa7eb998e0a9 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 22:14:41 +0200 Subject: [PATCH 0037/1051] register multiblocks late --- src/main/java/de/dafuqs/spectrum/SpectrumCommon.java | 5 +++-- .../dafuqs/spectrum/entity/entity/InkProjectileEntity.java | 1 - .../spectrum/mixin/client/BlockOverlayRendererMixin.java | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java b/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java index 9ba266bf88..22c121048d 100644 --- a/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java +++ b/src/main/java/de/dafuqs/spectrum/SpectrumCommon.java @@ -192,8 +192,6 @@ public void onInitialize() { logInfo("Registering Data Loaders..."); ResourceManagerHelper.get(ResourceType.SERVER_DATA).registerReloadListener(ResonanceEnchantment.ResonanceDropsDataLoader.INSTANCE); - logInfo("Registering MultiBlocks..."); - //SpectrumMultiblocks.register(); //TODO logInfo("Registering Flammable Blocks..."); SpectrumFlammableBlocks.register(); logInfo("Registering Compostable Blocks..."); @@ -247,6 +245,9 @@ public void onInitialize() { ServerLifecycleEvents.SERVER_STARTING.register(server -> { SpectrumCommon.logInfo("Fetching server instance..."); SpectrumCommon.minecraftServer = server; + + logInfo("Registering MultiBlocks..."); + SpectrumMultiblocks.register(); }); ServerWorldEvents.LOAD.register((minecraftServer, serverWorld) -> { diff --git a/src/main/java/de/dafuqs/spectrum/entity/entity/InkProjectileEntity.java b/src/main/java/de/dafuqs/spectrum/entity/entity/InkProjectileEntity.java index cba877d221..0c1b24e856 100644 --- a/src/main/java/de/dafuqs/spectrum/entity/entity/InkProjectileEntity.java +++ b/src/main/java/de/dafuqs/spectrum/entity/entity/InkProjectileEntity.java @@ -109,7 +109,6 @@ public void readCustomDataFromNbt(NbtCompound nbt) { } } - // TODO @Override public void tick() { super.tick(); diff --git a/src/main/java/de/dafuqs/spectrum/mixin/client/BlockOverlayRendererMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/client/BlockOverlayRendererMixin.java index 05f87d3913..941d7db082 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/client/BlockOverlayRendererMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/client/BlockOverlayRendererMixin.java @@ -55,8 +55,7 @@ private static void renderOverlay(MinecraftClient client, MatrixStack matrixStac bufferBuilder.vertex(matrix4f, 1.0F, -1.0F, -0.5F).texture(0.0F + m, 4.0F + n).next(); bufferBuilder.vertex(matrix4f, 1.0F, 1.0F, -0.5F).texture(0.0F + m, 0.0F + n).next(); bufferBuilder.vertex(matrix4f, -1.0F, 1.0F, -0.5F).texture(4.0F + m, 0.0F + n).next(); - bufferBuilder.end(); - BufferRenderer.drawWithShader(bufferBuilder.end()); // TODO: test + BufferRenderer.drawWithShader(bufferBuilder.end()); RenderSystem.disableBlend(); } From c3e4ef02b48256a6489b157c5c9d9d1ac16ee903 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 22:19:28 +0200 Subject: [PATCH 0038/1051] ink projectile death message --- src/main/resources/assets/spectrum/lang/en_us.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/spectrum/lang/en_us.json b/src/main/resources/assets/spectrum/lang/en_us.json index ac5da09940..91b5d2ec59 100644 --- a/src/main/resources/assets/spectrum/lang/en_us.json +++ b/src/main/resources/assets/spectrum/lang/en_us.json @@ -155,8 +155,8 @@ "multiblock.spectrum.cinderhearth.structure": "Cinderhearth", "death.attack.spectrum_decay": "%s was eaten alive", - "death.attack.spectrum_ink_projectile": "%1$s taught %2$s the joy of painting", - "death.attack.spectrum_ink_projectile.item": "%1$s taught %2$s the joy of painting using %3$s", + "death.attack.spectrum_ink_projectile": "%2$s taught %1$s the joy of painting", + "death.attack.spectrum_ink_projectile.item": "%2$s taught %1$s the joy of painting using %3$s", "death.attack.spectrum_floatblock": "%s was smashed by a Floating Block", "death.attack.spectrum_shooting_star": "%s was smitten by a Shooting Star. Make a Wish!", "death.attack.spectrum_midnight_solution": "%s was lost in Translation", From 133559d24ec902ad1234e57df6a26217b07bb530 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 22:47:58 +0200 Subject: [PATCH 0039/1051] banners are working again --- .../registries/SpectrumBannerPatternTags.java | 3 +- .../registries/SpectrumBannerPatterns.java | 2 +- .../resources/assets/spectrum/lang/en_us.json | 582 +++++++++--------- .../resources/assets/spectrum/lang/pt_br.json | 582 +++++++++--------- .../resources/assets/spectrum/lang/zh_cn.json | 576 ++++++++--------- .../banner/amethyst_cluster.png | Bin .../banner/amethyst_shard.png | Bin .../banner/bedrock_dust.png | Bin .../banner/crafting_tablet.png | Bin .../banner/four_leaf_clover.png | Bin .../{pattern => entity}/banner/ink_flask.png | Bin .../{pattern => entity}/banner/jade_vine.png | Bin .../banner/knowledge_gem.png | Bin .../{pattern => entity}/banner/logo.png | Bin .../{pattern => entity}/banner/manual.png | Bin .../{pattern => entity}/banner/multitool.png | Bin .../{pattern => entity}/banner/neolith.png | Bin .../{pattern => entity}/banner/palette.png | Bin .../{pattern => entity}/banner/pigment.png | Bin .../banner/raw_azurite.png | Bin .../{pattern => entity}/banner/shimmer.png | Bin .../banner/shimmerstone.png | Bin .../{pattern => entity}/banner/vegetal.png | Bin .../shield/amethyst_cluster.png | Bin .../shield/amethyst_shard.png | Bin .../shield/bedrock_dust.png | Bin .../shield/crafting_tablet.png | Bin .../shield/four_leaf_clover.png | Bin .../{pattern => entity}/shield/ink_flask.png | Bin .../{pattern => entity}/shield/jade_vine.png | Bin .../shield/knowledge_gem.png | Bin .../{pattern => entity}/shield/logo.png | Bin .../{pattern => entity}/shield/manual.png | Bin .../{pattern => entity}/shield/multitool.png | Bin .../{pattern => entity}/shield/neolith.png | Bin .../{pattern => entity}/shield/palette.png | Bin .../{pattern => entity}/shield/pigment.png | Bin .../shield/raw_azurite.png | Bin .../{pattern => entity}/shield/shimmer.png | Bin .../shield/shimmerstone.png | Bin .../{pattern => entity}/shield/vegetal.png | Bin .../pattern_item/amethyst_cluster.json | 2 +- .../pattern_item/amethyst_shard.json | 2 +- .../banner_pattern/pattern_item/logo.json | 2 +- 44 files changed, 876 insertions(+), 875 deletions(-) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/amethyst_cluster.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/amethyst_shard.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/bedrock_dust.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/crafting_tablet.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/four_leaf_clover.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/ink_flask.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/jade_vine.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/knowledge_gem.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/logo.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/manual.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/multitool.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/neolith.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/palette.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/pigment.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/raw_azurite.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/shimmer.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/shimmerstone.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/banner/vegetal.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/amethyst_cluster.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/amethyst_shard.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/bedrock_dust.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/crafting_tablet.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/four_leaf_clover.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/ink_flask.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/jade_vine.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/knowledge_gem.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/logo.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/manual.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/multitool.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/neolith.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/palette.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/pigment.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/raw_azurite.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/shimmer.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/shimmerstone.png (100%) rename src/main/resources/assets/spectrum/textures/{pattern => entity}/shield/vegetal.png (100%) diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatternTags.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatternTags.java index 6ac5af0586..0e5d101d3c 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatternTags.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatternTags.java @@ -1,5 +1,6 @@ package de.dafuqs.spectrum.registries; +import de.dafuqs.spectrum.SpectrumCommon; import net.minecraft.block.entity.BannerPattern; import net.minecraft.tag.TagKey; import net.minecraft.util.Identifier; @@ -12,7 +13,7 @@ public class SpectrumBannerPatternTags { public static TagKey AMETHYST_SHARD_TAG = of("pattern_item/amethyst_shard"); private static TagKey of(String id) { - return TagKey.of(Registry.BANNER_PATTERN_KEY, new Identifier(id)); + return TagKey.of(Registry.BANNER_PATTERN_KEY, SpectrumCommon.locate(id)); } } diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatterns.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatterns.java index f688ad4ba2..8afbba3bb7 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatterns.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumBannerPatterns.java @@ -33,7 +33,7 @@ public class SpectrumBannerPatterns { public static RegistryEntry JADE_VINE; private static RegistryEntry registerPattern(String id, String shortId) { - BannerPattern pattern = Registry.register(Registry.BANNER_PATTERN, new Identifier(SpectrumCommon.MOD_ID, id), new BannerPattern(SpectrumCommon.MOD_ID + "_" + shortId)); + BannerPattern pattern = Registry.register(Registry.BANNER_PATTERN, SpectrumCommon.locate(id), new BannerPattern(SpectrumCommon.MOD_ID + "_" + shortId)); return Registry.BANNER_PATTERN.getEntry(Registry.BANNER_PATTERN.getKey(pattern).get()).get(); } diff --git a/src/main/resources/assets/spectrum/lang/en_us.json b/src/main/resources/assets/spectrum/lang/en_us.json index 91b5d2ec59..8edaa87108 100644 --- a/src/main/resources/assets/spectrum/lang/en_us.json +++ b/src/main/resources/assets/spectrum/lang/en_us.json @@ -1500,297 +1500,297 @@ "item.spectrum.amethyst_shard_banner_pattern": "Banner Pattern", "item.spectrum.amethyst_cluster_banner_pattern": "Banner Pattern", - "bannerpp.pattern.spectrum.shimmer.black": "Black Shimmer", - "bannerpp.pattern.spectrum.shimmer.red": "Red Shimmer", - "bannerpp.pattern.spectrum.shimmer.green": "Green Shimmer", - "bannerpp.pattern.spectrum.shimmer.brown": "Brown Shimmer", - "bannerpp.pattern.spectrum.shimmer.blue": "Blue Shimmer", - "bannerpp.pattern.spectrum.shimmer.purple": "Purple Shimmer", - "bannerpp.pattern.spectrum.shimmer.cyan": "Cyan Shimmer", - "bannerpp.pattern.spectrum.shimmer.light_gray": "Light Gray Shimmer", - "bannerpp.pattern.spectrum.shimmer.gray": "Gray Shimmer", - "bannerpp.pattern.spectrum.shimmer.pink": "Pink Shimmer", - "bannerpp.pattern.spectrum.shimmer.lime": "Lime Shimmer", - "bannerpp.pattern.spectrum.shimmer.yellow": "Yellow Shimmer", - "bannerpp.pattern.spectrum.shimmer.light_blue": "Light Blue Shimmer", - "bannerpp.pattern.spectrum.shimmer.magenta": "Magenta Shimmer", - "bannerpp.pattern.spectrum.shimmer.orange": "Orange Shimmer", - "bannerpp.pattern.spectrum.shimmer.white": "White Shimmer", - "bannerpp.pattern.spectrum.palette.black": "Black Artistry", - "bannerpp.pattern.spectrum.palette.red": "Red Artistry", - "bannerpp.pattern.spectrum.palette.green": "Green Artistry", - "bannerpp.pattern.spectrum.palette.brown": "Brown Artistry", - "bannerpp.pattern.spectrum.palette.blue": "Blue Artistry", - "bannerpp.pattern.spectrum.palette.purple": "Purple Artistry", - "bannerpp.pattern.spectrum.palette.cyan": "Cyan Artistry", - "bannerpp.pattern.spectrum.palette.light_gray": "Light Gray Artistry", - "bannerpp.pattern.spectrum.palette.gray": "Gray Artistry", - "bannerpp.pattern.spectrum.palette.pink": "Pink Artistry", - "bannerpp.pattern.spectrum.palette.lime": "Lime Artistry", - "bannerpp.pattern.spectrum.palette.yellow": "Yellow Artistry", - "bannerpp.pattern.spectrum.palette.light_blue": "Light Blue Artistry", - "bannerpp.pattern.spectrum.palette.magenta": "Magenta Artistry", - "bannerpp.pattern.spectrum.palette.orange": "Orange Artistry", - "bannerpp.pattern.spectrum.palette.white": "White Artistry", - "bannerpp.pattern.spectrum.amethyst_cluster.black": "Black Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.red": "Red Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.green": "Green Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.brown": "Brown Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.blue": "Blue Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.purple": "Purple Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.cyan": "Cyan Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.light_gray": "Light Gray Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.gray": "Gray Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.pink": "Pink Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.lime": "Lime Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.yellow": "Yellow Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.light_blue": "Light Blue Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.magenta": "Magenta Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.orange": "Orange Amethyst Cluster", - "bannerpp.pattern.spectrum.amethyst_cluster.white": "White Amethyst Cluster", - "bannerpp.pattern.spectrum.neolith.black": "Black Neolith", - "bannerpp.pattern.spectrum.neolith.red": "Red Neolith", - "bannerpp.pattern.spectrum.neolith.green": "Green Neolith", - "bannerpp.pattern.spectrum.neolith.brown": "Brown Neolith", - "bannerpp.pattern.spectrum.neolith.blue": "Blue Neolith", - "bannerpp.pattern.spectrum.neolith.purple": "Purple Neolith", - "bannerpp.pattern.spectrum.neolith.cyan": "Cyan Neolith", - "bannerpp.pattern.spectrum.neolith.light_gray": "Light Gray Neolith", - "bannerpp.pattern.spectrum.neolith.gray": "Gray Neolith", - "bannerpp.pattern.spectrum.neolith.pink": "Pink Neolith", - "bannerpp.pattern.spectrum.neolith.lime": "Lime Neolith", - "bannerpp.pattern.spectrum.neolith.yellow": "Yellow Neolith", - "bannerpp.pattern.spectrum.neolith.light_blue": "Light Blue Neolith", - "bannerpp.pattern.spectrum.neolith.magenta": "Magenta Neolith", - "bannerpp.pattern.spectrum.neolith.orange": "Orange Neolith", - "bannerpp.pattern.spectrum.neolith.white": "White Neolith", - "bannerpp.pattern.spectrum.pigment.black": "Black Pigment", - "bannerpp.pattern.spectrum.pigment.red": "Red Pigment", - "bannerpp.pattern.spectrum.pigment.green": "Green Pigment", - "bannerpp.pattern.spectrum.pigment.brown": "Brown Pigment", - "bannerpp.pattern.spectrum.pigment.blue": "Blue Pigment", - "bannerpp.pattern.spectrum.pigment.purple": "Purple Pigment", - "bannerpp.pattern.spectrum.pigment.cyan": "Cyan Pigment", - "bannerpp.pattern.spectrum.pigment.light_gray": "Light Gray Pigment", - "bannerpp.pattern.spectrum.pigment.gray": "Gray Pigment", - "bannerpp.pattern.spectrum.pigment.pink": "Pink Pigment", - "bannerpp.pattern.spectrum.pigment.lime": "Lime Pigment", - "bannerpp.pattern.spectrum.pigment.yellow": "Yellow Pigment", - "bannerpp.pattern.spectrum.pigment.light_blue": "Light Blue Pigment", - "bannerpp.pattern.spectrum.pigment.magenta": "Magenta Pigment", - "bannerpp.pattern.spectrum.pigment.orange": "Orange Pigment", - "bannerpp.pattern.spectrum.pigment.white": "White Pigment", - "bannerpp.pattern.spectrum.knowledge_gem.black": "Black Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.red": "Red Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.green": "Green Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.brown": "Brown Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.blue": "Blue Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.purple": "Purple Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.cyan": "Cyan Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.light_gray": "Light Gray Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.gray": "Gray Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.pink": "Pink Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.lime": "Lime Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.yellow": "Yellow Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.light_blue": "Light Blue Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.magenta": "Magenta Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.orange": "Orange Knowledge Gem", - "bannerpp.pattern.spectrum.knowledge_gem.white": "White Knowledge Gem", - "bannerpp.pattern.spectrum.vegetal.black": "Black Vegetal", - "bannerpp.pattern.spectrum.vegetal.red": "Red Vegetal", - "bannerpp.pattern.spectrum.vegetal.green": "Green Vegetal", - "bannerpp.pattern.spectrum.vegetal.brown": "Brown Vegetal", - "bannerpp.pattern.spectrum.vegetal.blue": "Blue Vegetal", - "bannerpp.pattern.spectrum.vegetal.purple": "Purple Vegetal", - "bannerpp.pattern.spectrum.vegetal.cyan": "Cyan Vegetal", - "bannerpp.pattern.spectrum.vegetal.light_gray": "Light Gray Vegetal", - "bannerpp.pattern.spectrum.vegetal.gray": "Gray Vegetal", - "bannerpp.pattern.spectrum.vegetal.pink": "Pink Vegetal", - "bannerpp.pattern.spectrum.vegetal.lime": "Lime Vegetal", - "bannerpp.pattern.spectrum.vegetal.yellow": "Yellow Vegetal", - "bannerpp.pattern.spectrum.vegetal.light_blue": "Light Blue Vegetal", - "bannerpp.pattern.spectrum.vegetal.magenta": "Magenta Vegetal", - "bannerpp.pattern.spectrum.vegetal.orange": "Orange Vegetal", - "bannerpp.pattern.spectrum.vegetal.white": "White Vegetal", - "bannerpp.pattern.spectrum.logo.black": "Black Color Theory", - "bannerpp.pattern.spectrum.logo.red": "Red Color Theory", - "bannerpp.pattern.spectrum.logo.green": "Green Color Theory", - "bannerpp.pattern.spectrum.logo.brown": "Brown Color Theory", - "bannerpp.pattern.spectrum.logo.blue": "Blue Color Theory", - "bannerpp.pattern.spectrum.logo.purple": "Purple Color Theory", - "bannerpp.pattern.spectrum.logo.cyan": "Cyan Color Theory", - "bannerpp.pattern.spectrum.logo.light_gray": "Light Gray Color Theory", - "bannerpp.pattern.spectrum.logo.gray": "Gray Color Theory", - "bannerpp.pattern.spectrum.logo.pink": "Pink Color Theory", - "bannerpp.pattern.spectrum.logo.lime": "Lime Color Theory", - "bannerpp.pattern.spectrum.logo.yellow": "Yellow Color Theory", - "bannerpp.pattern.spectrum.logo.light_blue": "Light Blue Color Theory", - "bannerpp.pattern.spectrum.logo.magenta": "Magenta Color Theory", - "bannerpp.pattern.spectrum.logo.orange": "Orange Color Theory", - "bannerpp.pattern.spectrum.logo.white": "White Color Theory", - "bannerpp.pattern.spectrum.four_leaf_clover.black": "Black Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.red": "Red Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.green": "Green Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.brown": "Brown Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.blue": "Blue Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.purple": "Purple Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.cyan": "Cyan Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.light_gray": "Light Gray Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.gray": "Gray Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.pink": "Pink Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.lime": "Lime Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.yellow": "Yellow Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.light_blue": "Light Blue Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.magenta": "Magenta Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.orange": "Orange Four-leafed Clover", - "bannerpp.pattern.spectrum.four_leaf_clover.white": "White Four-leafed Clover", - "bannerpp.pattern.spectrum.multitool.black": "Black Multitool", - "bannerpp.pattern.spectrum.multitool.red": "Red Multitool", - "bannerpp.pattern.spectrum.multitool.green": "Green Multitool", - "bannerpp.pattern.spectrum.multitool.brown": "Brown Multitool", - "bannerpp.pattern.spectrum.multitool.blue": "Blue Multitool", - "bannerpp.pattern.spectrum.multitool.purple": "Purple Multitool", - "bannerpp.pattern.spectrum.multitool.cyan": "Cyan Multitool", - "bannerpp.pattern.spectrum.multitool.light_gray": "Light Gray Multitool", - "bannerpp.pattern.spectrum.multitool.gray": "Gray Multitool", - "bannerpp.pattern.spectrum.multitool.pink": "Pink Multitool", - "bannerpp.pattern.spectrum.multitool.lime": "Lime Multitool", - "bannerpp.pattern.spectrum.multitool.yellow": "Yellow Multitool", - "bannerpp.pattern.spectrum.multitool.light_blue": "Light Blue Multitool", - "bannerpp.pattern.spectrum.multitool.magenta": "Magenta Multitool", - "bannerpp.pattern.spectrum.multitool.orange": "Orange Multitool", - "bannerpp.pattern.spectrum.multitool.white": "White Multitool", - "bannerpp.pattern.spectrum.manual.black": "Black Colorful World", - "bannerpp.pattern.spectrum.manual.red": "Red Colorful World", - "bannerpp.pattern.spectrum.manual.green": "Green Colorful World", - "bannerpp.pattern.spectrum.manual.brown": "Brown Colorful World", - "bannerpp.pattern.spectrum.manual.blue": "Blue Colorful World", - "bannerpp.pattern.spectrum.manual.purple": "Purple Colorful World", - "bannerpp.pattern.spectrum.manual.cyan": "Cyan Colorful World", - "bannerpp.pattern.spectrum.manual.light_gray": "Light Gray Colorful World", - "bannerpp.pattern.spectrum.manual.gray": "Gray Colorful World", - "bannerpp.pattern.spectrum.manual.pink": "Pink Colorful World", - "bannerpp.pattern.spectrum.manual.lime": "Lime Colorful World", - "bannerpp.pattern.spectrum.manual.yellow": "Yellow Colorful World", - "bannerpp.pattern.spectrum.manual.light_blue": "Light Blue Colorful World", - "bannerpp.pattern.spectrum.manual.magenta": "Magenta Colorful World", - "bannerpp.pattern.spectrum.manual.orange": "Orange Colorful World", - "bannerpp.pattern.spectrum.manual.white": "White Colorful World", - "bannerpp.pattern.spectrum.crafting_tablet.black": "Black Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.red": "Red Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.green": "Green Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.brown": "Brown Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.blue": "Blue Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.purple": "Purple Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.cyan": "Cyan Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.light_gray": "Light Gray Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.gray": "Gray Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.pink": "Pink Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.lime": "Lime Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.yellow": "Yellow Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.light_blue": "Light Blue Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.magenta": "Magenta Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.orange": "Orange Crafting Tablet", - "bannerpp.pattern.spectrum.crafting_tablet.white": "White Crafting Tablet", - "bannerpp.pattern.spectrum.ink_flask.black": "Black Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.red": "Red Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.green": "Green Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.brown": "Brown Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.blue": "Blue Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.purple": "Purple Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.cyan": "Cyan Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.light_gray": "Light Gray Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.gray": "Gray Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.pink": "Pink Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.lime": "Lime Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.yellow": "Yellow Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.light_blue": "Light Blue Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.magenta": "Magenta Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.orange": "Orange Ink Flask", - "bannerpp.pattern.spectrum.ink_flask.white": "White Ink Flask", - "bannerpp.pattern.spectrum.amethyst_shard.black": "Black Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.red": "Red Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.green": "Green Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.brown": "Brown Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.blue": "Blue Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.purple": "Purple Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.cyan": "Cyan Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.light_gray": "Light Gray Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.gray": "Gray Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.pink": "Pink Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.lime": "Lime Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.yellow": "Yellow Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.light_blue": "Light Blue Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.magenta": "Magenta Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.orange": "Orange Amethyst Shard", - "bannerpp.pattern.spectrum.amethyst_shard.white": "White Amethyst Shard", - "bannerpp.pattern.spectrum.raw_azurite.black": "Black Azurite", - "bannerpp.pattern.spectrum.raw_azurite.red": "Red Azurite", - "bannerpp.pattern.spectrum.raw_azurite.green": "Green Azurite", - "bannerpp.pattern.spectrum.raw_azurite.brown": "Brown Azurite", - "bannerpp.pattern.spectrum.raw_azurite.blue": "Blue Azurite", - "bannerpp.pattern.spectrum.raw_azurite.purple": "Purple Azurite", - "bannerpp.pattern.spectrum.raw_azurite.cyan": "Cyan Azurite", - "bannerpp.pattern.spectrum.raw_azurite.light_gray": "Light Gray Azurite", - "bannerpp.pattern.spectrum.raw_azurite.gray": "Gray Azurite", - "bannerpp.pattern.spectrum.raw_azurite.pink": "Pink Azurite", - "bannerpp.pattern.spectrum.raw_azurite.lime": "Lime Azurite", - "bannerpp.pattern.spectrum.raw_azurite.yellow": "Yellow Azurite", - "bannerpp.pattern.spectrum.raw_azurite.light_blue": "Light Blue Azurite", - "bannerpp.pattern.spectrum.raw_azurite.magenta": "Magenta Azurite", - "bannerpp.pattern.spectrum.raw_azurite.orange": "Orange Azurite", - "bannerpp.pattern.spectrum.raw_azurite.white": "White Azurite", - - "bannerpp.pattern.spectrum.bedrock_dust.black": "Black Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.red": "Red Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.green": "Green Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.brown": "Brown Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.blue": "Blue Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.purple": "Purple Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.cyan": "Cyan Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.light_gray": "Light Gray Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.gray": "Gray Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.pink": "Pink Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.lime": "Lime Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.yellow": "Yellow Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.light_blue": "Light Blue Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.magenta": "Magenta Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.orange": "Orange Bedrock Dust", - "bannerpp.pattern.spectrum.bedrock_dust.white": "White Bedrock Dust", - - "bannerpp.pattern.spectrum.shimmerstone.black": "Black Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.red": "Red Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.green": "Green Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.brown": "Brown Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.blue": "Blue Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.purple": "Purple Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.cyan": "Cyan Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.light_gray": "Light Gray Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.gray": "Gray Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.pink": "Pink Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.lime": "Lime Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.yellow": "Yellow Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.light_blue": "Light Blue Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.magenta": "Magenta Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.orange": "Orange Shimmerstone", - "bannerpp.pattern.spectrum.shimmerstone.white": "White Shimmerstone", - - "bannerpp.pattern.spectrum.jade_vine.black": "Black Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.red": "Red Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.green": "Green Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.brown": "Brown Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.blue": "Blue Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.purple": "Purple Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.cyan": "Cyan Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.light_gray": "Light Gray Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.gray": "Gray Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.pink": "Pink Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.lime": "Lime Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.yellow": "Yellow Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.light_blue": "Light Blue Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.magenta": "Magenta Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.orange": "Orange Jade Vine", - "bannerpp.pattern.spectrum.jade_vine.white": "White Jade Vine", + "block.minecraft.banner.spectrum.shimmer.black": "Black Shimmer", + "block.minecraft.banner.spectrum.shimmer.red": "Red Shimmer", + "block.minecraft.banner.spectrum.shimmer.green": "Green Shimmer", + "block.minecraft.banner.spectrum.shimmer.brown": "Brown Shimmer", + "block.minecraft.banner.spectrum.shimmer.blue": "Blue Shimmer", + "block.minecraft.banner.spectrum.shimmer.purple": "Purple Shimmer", + "block.minecraft.banner.spectrum.shimmer.cyan": "Cyan Shimmer", + "block.minecraft.banner.spectrum.shimmer.light_gray": "Light Gray Shimmer", + "block.minecraft.banner.spectrum.shimmer.gray": "Gray Shimmer", + "block.minecraft.banner.spectrum.shimmer.pink": "Pink Shimmer", + "block.minecraft.banner.spectrum.shimmer.lime": "Lime Shimmer", + "block.minecraft.banner.spectrum.shimmer.yellow": "Yellow Shimmer", + "block.minecraft.banner.spectrum.shimmer.light_blue": "Light Blue Shimmer", + "block.minecraft.banner.spectrum.shimmer.magenta": "Magenta Shimmer", + "block.minecraft.banner.spectrum.shimmer.orange": "Orange Shimmer", + "block.minecraft.banner.spectrum.shimmer.white": "White Shimmer", + "block.minecraft.banner.spectrum.palette.black": "Black Artistry", + "block.minecraft.banner.spectrum.palette.red": "Red Artistry", + "block.minecraft.banner.spectrum.palette.green": "Green Artistry", + "block.minecraft.banner.spectrum.palette.brown": "Brown Artistry", + "block.minecraft.banner.spectrum.palette.blue": "Blue Artistry", + "block.minecraft.banner.spectrum.palette.purple": "Purple Artistry", + "block.minecraft.banner.spectrum.palette.cyan": "Cyan Artistry", + "block.minecraft.banner.spectrum.palette.light_gray": "Light Gray Artistry", + "block.minecraft.banner.spectrum.palette.gray": "Gray Artistry", + "block.minecraft.banner.spectrum.palette.pink": "Pink Artistry", + "block.minecraft.banner.spectrum.palette.lime": "Lime Artistry", + "block.minecraft.banner.spectrum.palette.yellow": "Yellow Artistry", + "block.minecraft.banner.spectrum.palette.light_blue": "Light Blue Artistry", + "block.minecraft.banner.spectrum.palette.magenta": "Magenta Artistry", + "block.minecraft.banner.spectrum.palette.orange": "Orange Artistry", + "block.minecraft.banner.spectrum.palette.white": "White Artistry", + "block.minecraft.banner.spectrum.amethyst_cluster.black": "Black Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.red": "Red Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.green": "Green Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.brown": "Brown Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.blue": "Blue Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.purple": "Purple Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.cyan": "Cyan Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.light_gray": "Light Gray Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.gray": "Gray Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.pink": "Pink Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.lime": "Lime Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.yellow": "Yellow Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.light_blue": "Light Blue Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.magenta": "Magenta Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.orange": "Orange Amethyst Cluster", + "block.minecraft.banner.spectrum.amethyst_cluster.white": "White Amethyst Cluster", + "block.minecraft.banner.spectrum.neolith.black": "Black Neolith", + "block.minecraft.banner.spectrum.neolith.red": "Red Neolith", + "block.minecraft.banner.spectrum.neolith.green": "Green Neolith", + "block.minecraft.banner.spectrum.neolith.brown": "Brown Neolith", + "block.minecraft.banner.spectrum.neolith.blue": "Blue Neolith", + "block.minecraft.banner.spectrum.neolith.purple": "Purple Neolith", + "block.minecraft.banner.spectrum.neolith.cyan": "Cyan Neolith", + "block.minecraft.banner.spectrum.neolith.light_gray": "Light Gray Neolith", + "block.minecraft.banner.spectrum.neolith.gray": "Gray Neolith", + "block.minecraft.banner.spectrum.neolith.pink": "Pink Neolith", + "block.minecraft.banner.spectrum.neolith.lime": "Lime Neolith", + "block.minecraft.banner.spectrum.neolith.yellow": "Yellow Neolith", + "block.minecraft.banner.spectrum.neolith.light_blue": "Light Blue Neolith", + "block.minecraft.banner.spectrum.neolith.magenta": "Magenta Neolith", + "block.minecraft.banner.spectrum.neolith.orange": "Orange Neolith", + "block.minecraft.banner.spectrum.neolith.white": "White Neolith", + "block.minecraft.banner.spectrum.pigment.black": "Black Pigment", + "block.minecraft.banner.spectrum.pigment.red": "Red Pigment", + "block.minecraft.banner.spectrum.pigment.green": "Green Pigment", + "block.minecraft.banner.spectrum.pigment.brown": "Brown Pigment", + "block.minecraft.banner.spectrum.pigment.blue": "Blue Pigment", + "block.minecraft.banner.spectrum.pigment.purple": "Purple Pigment", + "block.minecraft.banner.spectrum.pigment.cyan": "Cyan Pigment", + "block.minecraft.banner.spectrum.pigment.light_gray": "Light Gray Pigment", + "block.minecraft.banner.spectrum.pigment.gray": "Gray Pigment", + "block.minecraft.banner.spectrum.pigment.pink": "Pink Pigment", + "block.minecraft.banner.spectrum.pigment.lime": "Lime Pigment", + "block.minecraft.banner.spectrum.pigment.yellow": "Yellow Pigment", + "block.minecraft.banner.spectrum.pigment.light_blue": "Light Blue Pigment", + "block.minecraft.banner.spectrum.pigment.magenta": "Magenta Pigment", + "block.minecraft.banner.spectrum.pigment.orange": "Orange Pigment", + "block.minecraft.banner.spectrum.pigment.white": "White Pigment", + "block.minecraft.banner.spectrum.knowledge_gem.black": "Black Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.red": "Red Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.green": "Green Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.brown": "Brown Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.blue": "Blue Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.purple": "Purple Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.cyan": "Cyan Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.light_gray": "Light Gray Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.gray": "Gray Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.pink": "Pink Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.lime": "Lime Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.yellow": "Yellow Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.light_blue": "Light Blue Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.magenta": "Magenta Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.orange": "Orange Knowledge Gem", + "block.minecraft.banner.spectrum.knowledge_gem.white": "White Knowledge Gem", + "block.minecraft.banner.spectrum.vegetal.black": "Black Vegetal", + "block.minecraft.banner.spectrum.vegetal.red": "Red Vegetal", + "block.minecraft.banner.spectrum.vegetal.green": "Green Vegetal", + "block.minecraft.banner.spectrum.vegetal.brown": "Brown Vegetal", + "block.minecraft.banner.spectrum.vegetal.blue": "Blue Vegetal", + "block.minecraft.banner.spectrum.vegetal.purple": "Purple Vegetal", + "block.minecraft.banner.spectrum.vegetal.cyan": "Cyan Vegetal", + "block.minecraft.banner.spectrum.vegetal.light_gray": "Light Gray Vegetal", + "block.minecraft.banner.spectrum.vegetal.gray": "Gray Vegetal", + "block.minecraft.banner.spectrum.vegetal.pink": "Pink Vegetal", + "block.minecraft.banner.spectrum.vegetal.lime": "Lime Vegetal", + "block.minecraft.banner.spectrum.vegetal.yellow": "Yellow Vegetal", + "block.minecraft.banner.spectrum.vegetal.light_blue": "Light Blue Vegetal", + "block.minecraft.banner.spectrum.vegetal.magenta": "Magenta Vegetal", + "block.minecraft.banner.spectrum.vegetal.orange": "Orange Vegetal", + "block.minecraft.banner.spectrum.vegetal.white": "White Vegetal", + "block.minecraft.banner.spectrum.logo.black": "Black Color Theory", + "block.minecraft.banner.spectrum.logo.red": "Red Color Theory", + "block.minecraft.banner.spectrum.logo.green": "Green Color Theory", + "block.minecraft.banner.spectrum.logo.brown": "Brown Color Theory", + "block.minecraft.banner.spectrum.logo.blue": "Blue Color Theory", + "block.minecraft.banner.spectrum.logo.purple": "Purple Color Theory", + "block.minecraft.banner.spectrum.logo.cyan": "Cyan Color Theory", + "block.minecraft.banner.spectrum.logo.light_gray": "Light Gray Color Theory", + "block.minecraft.banner.spectrum.logo.gray": "Gray Color Theory", + "block.minecraft.banner.spectrum.logo.pink": "Pink Color Theory", + "block.minecraft.banner.spectrum.logo.lime": "Lime Color Theory", + "block.minecraft.banner.spectrum.logo.yellow": "Yellow Color Theory", + "block.minecraft.banner.spectrum.logo.light_blue": "Light Blue Color Theory", + "block.minecraft.banner.spectrum.logo.magenta": "Magenta Color Theory", + "block.minecraft.banner.spectrum.logo.orange": "Orange Color Theory", + "block.minecraft.banner.spectrum.logo.white": "White Color Theory", + "block.minecraft.banner.spectrum.four_leaf_clover.black": "Black Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.red": "Red Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.green": "Green Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.brown": "Brown Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.blue": "Blue Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.purple": "Purple Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.cyan": "Cyan Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.light_gray": "Light Gray Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.gray": "Gray Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.pink": "Pink Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.lime": "Lime Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.yellow": "Yellow Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.light_blue": "Light Blue Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.magenta": "Magenta Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.orange": "Orange Four-leafed Clover", + "block.minecraft.banner.spectrum.four_leaf_clover.white": "White Four-leafed Clover", + "block.minecraft.banner.spectrum.multitool.black": "Black Multitool", + "block.minecraft.banner.spectrum.multitool.red": "Red Multitool", + "block.minecraft.banner.spectrum.multitool.green": "Green Multitool", + "block.minecraft.banner.spectrum.multitool.brown": "Brown Multitool", + "block.minecraft.banner.spectrum.multitool.blue": "Blue Multitool", + "block.minecraft.banner.spectrum.multitool.purple": "Purple Multitool", + "block.minecraft.banner.spectrum.multitool.cyan": "Cyan Multitool", + "block.minecraft.banner.spectrum.multitool.light_gray": "Light Gray Multitool", + "block.minecraft.banner.spectrum.multitool.gray": "Gray Multitool", + "block.minecraft.banner.spectrum.multitool.pink": "Pink Multitool", + "block.minecraft.banner.spectrum.multitool.lime": "Lime Multitool", + "block.minecraft.banner.spectrum.multitool.yellow": "Yellow Multitool", + "block.minecraft.banner.spectrum.multitool.light_blue": "Light Blue Multitool", + "block.minecraft.banner.spectrum.multitool.magenta": "Magenta Multitool", + "block.minecraft.banner.spectrum.multitool.orange": "Orange Multitool", + "block.minecraft.banner.spectrum.multitool.white": "White Multitool", + "block.minecraft.banner.spectrum.manual.black": "Black Colorful World", + "block.minecraft.banner.spectrum.manual.red": "Red Colorful World", + "block.minecraft.banner.spectrum.manual.green": "Green Colorful World", + "block.minecraft.banner.spectrum.manual.brown": "Brown Colorful World", + "block.minecraft.banner.spectrum.manual.blue": "Blue Colorful World", + "block.minecraft.banner.spectrum.manual.purple": "Purple Colorful World", + "block.minecraft.banner.spectrum.manual.cyan": "Cyan Colorful World", + "block.minecraft.banner.spectrum.manual.light_gray": "Light Gray Colorful World", + "block.minecraft.banner.spectrum.manual.gray": "Gray Colorful World", + "block.minecraft.banner.spectrum.manual.pink": "Pink Colorful World", + "block.minecraft.banner.spectrum.manual.lime": "Lime Colorful World", + "block.minecraft.banner.spectrum.manual.yellow": "Yellow Colorful World", + "block.minecraft.banner.spectrum.manual.light_blue": "Light Blue Colorful World", + "block.minecraft.banner.spectrum.manual.magenta": "Magenta Colorful World", + "block.minecraft.banner.spectrum.manual.orange": "Orange Colorful World", + "block.minecraft.banner.spectrum.manual.white": "White Colorful World", + "block.minecraft.banner.spectrum.crafting_tablet.black": "Black Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.red": "Red Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.green": "Green Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.brown": "Brown Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.blue": "Blue Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.purple": "Purple Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.cyan": "Cyan Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.light_gray": "Light Gray Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.gray": "Gray Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.pink": "Pink Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.lime": "Lime Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.yellow": "Yellow Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.light_blue": "Light Blue Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.magenta": "Magenta Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.orange": "Orange Crafting Tablet", + "block.minecraft.banner.spectrum.crafting_tablet.white": "White Crafting Tablet", + "block.minecraft.banner.spectrum.ink_flask.black": "Black Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.red": "Red Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.green": "Green Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.brown": "Brown Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.blue": "Blue Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.purple": "Purple Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.cyan": "Cyan Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.light_gray": "Light Gray Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.gray": "Gray Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.pink": "Pink Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.lime": "Lime Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.yellow": "Yellow Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.light_blue": "Light Blue Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.magenta": "Magenta Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.orange": "Orange Ink Flask", + "block.minecraft.banner.spectrum.ink_flask.white": "White Ink Flask", + "block.minecraft.banner.spectrum.amethyst_shard.black": "Black Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.red": "Red Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.green": "Green Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.brown": "Brown Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.blue": "Blue Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.purple": "Purple Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.cyan": "Cyan Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.light_gray": "Light Gray Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.gray": "Gray Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.pink": "Pink Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.lime": "Lime Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.yellow": "Yellow Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.light_blue": "Light Blue Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.magenta": "Magenta Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.orange": "Orange Amethyst Shard", + "block.minecraft.banner.spectrum.amethyst_shard.white": "White Amethyst Shard", + "block.minecraft.banner.spectrum.raw_azurite.black": "Black Azurite", + "block.minecraft.banner.spectrum.raw_azurite.red": "Red Azurite", + "block.minecraft.banner.spectrum.raw_azurite.green": "Green Azurite", + "block.minecraft.banner.spectrum.raw_azurite.brown": "Brown Azurite", + "block.minecraft.banner.spectrum.raw_azurite.blue": "Blue Azurite", + "block.minecraft.banner.spectrum.raw_azurite.purple": "Purple Azurite", + "block.minecraft.banner.spectrum.raw_azurite.cyan": "Cyan Azurite", + "block.minecraft.banner.spectrum.raw_azurite.light_gray": "Light Gray Azurite", + "block.minecraft.banner.spectrum.raw_azurite.gray": "Gray Azurite", + "block.minecraft.banner.spectrum.raw_azurite.pink": "Pink Azurite", + "block.minecraft.banner.spectrum.raw_azurite.lime": "Lime Azurite", + "block.minecraft.banner.spectrum.raw_azurite.yellow": "Yellow Azurite", + "block.minecraft.banner.spectrum.raw_azurite.light_blue": "Light Blue Azurite", + "block.minecraft.banner.spectrum.raw_azurite.magenta": "Magenta Azurite", + "block.minecraft.banner.spectrum.raw_azurite.orange": "Orange Azurite", + "block.minecraft.banner.spectrum.raw_azurite.white": "White Azurite", + + "block.minecraft.banner.spectrum.bedrock_dust.black": "Black Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.red": "Red Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.green": "Green Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.brown": "Brown Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.blue": "Blue Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.purple": "Purple Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.cyan": "Cyan Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.light_gray": "Light Gray Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.gray": "Gray Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.pink": "Pink Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.lime": "Lime Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.yellow": "Yellow Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.light_blue": "Light Blue Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.magenta": "Magenta Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.orange": "Orange Bedrock Dust", + "block.minecraft.banner.spectrum.bedrock_dust.white": "White Bedrock Dust", + + "block.minecraft.banner.spectrum.shimmerstone.black": "Black Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.red": "Red Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.green": "Green Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.brown": "Brown Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.blue": "Blue Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.purple": "Purple Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.cyan": "Cyan Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.light_gray": "Light Gray Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.gray": "Gray Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.pink": "Pink Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.lime": "Lime Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.yellow": "Yellow Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.light_blue": "Light Blue Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.magenta": "Magenta Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.orange": "Orange Shimmerstone", + "block.minecraft.banner.spectrum.shimmerstone.white": "White Shimmerstone", + + "block.minecraft.banner.spectrum.jade_vine.black": "Black Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.red": "Red Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.green": "Green Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.brown": "Brown Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.blue": "Blue Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.purple": "Purple Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.cyan": "Cyan Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.light_gray": "Light Gray Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.gray": "Gray Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.pink": "Pink Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.lime": "Lime Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.yellow": "Yellow Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.light_blue": "Light Blue Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.magenta": "Magenta Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.orange": "Orange Jade Vine", + "block.minecraft.banner.spectrum.jade_vine.white": "White Jade Vine", "trinkets.slot.chest.pin": "Pin", "trinkets.slot.head.crown": "Crown", diff --git a/src/main/resources/assets/spectrum/lang/pt_br.json b/src/main/resources/assets/spectrum/lang/pt_br.json index cf89af9c6d..1631665e50 100644 --- a/src/main/resources/assets/spectrum/lang/pt_br.json +++ b/src/main/resources/assets/spectrum/lang/pt_br.json @@ -1202,297 +1202,297 @@ "item.spectrum.amethyst_shard_banner_pattern": "Desenho para Estandarte", "item.spectrum.amethyst_cluster_banner_pattern": "Desenho para Estandarte", - "bannerpp.pattern.spectrum.shimmer.black": "Cintilo Preto", - "bannerpp.pattern.spectrum.shimmer.red": "Cintilo Vermelho", - "bannerpp.pattern.spectrum.shimmer.green": "Cintilo Verde", - "bannerpp.pattern.spectrum.shimmer.brown": "Cintilo Marrom", - "bannerpp.pattern.spectrum.shimmer.blue": "Cintilo Azul", - "bannerpp.pattern.spectrum.shimmer.purple": "Cintilo Roxo", - "bannerpp.pattern.spectrum.shimmer.cyan": "Cintilo Ciano", - "bannerpp.pattern.spectrum.shimmer.light_gray": "Cintilo Cinza-Claro", - "bannerpp.pattern.spectrum.shimmer.gray": "Cintilo Cinza", - "bannerpp.pattern.spectrum.shimmer.pink": "Cintilo Rosa", - "bannerpp.pattern.spectrum.shimmer.lime": "Cintilo Verde-Limão", - "bannerpp.pattern.spectrum.shimmer.yellow": "Cintilo Amarelo", - "bannerpp.pattern.spectrum.shimmer.light_blue": "Cintilo Azul-Claro", - "bannerpp.pattern.spectrum.shimmer.magenta": "Cintilo Magenta", - "bannerpp.pattern.spectrum.shimmer.orange": "Cintilo Laranja", - "bannerpp.pattern.spectrum.shimmer.white": "Cintilo Branco", - "bannerpp.pattern.spectrum.palette.black": "Arte Preta", - "bannerpp.pattern.spectrum.palette.red": "Arte Vermelha", - "bannerpp.pattern.spectrum.palette.green": "Arte Verde", - "bannerpp.pattern.spectrum.palette.brown": "Arte Marrom", - "bannerpp.pattern.spectrum.palette.blue": "Arte Azul", - "bannerpp.pattern.spectrum.palette.purple": "Arte Roxa", - "bannerpp.pattern.spectrum.palette.cyan": "Arte Ciano", - "bannerpp.pattern.spectrum.palette.light_gray": "Arte Cinza-Claro", - "bannerpp.pattern.spectrum.palette.gray": "Arte Cinza", - "bannerpp.pattern.spectrum.palette.pink": "Arte Rosa", - "bannerpp.pattern.spectrum.palette.lime": "Arte Verde-Limão", - "bannerpp.pattern.spectrum.palette.yellow": "Arte Amarela", - "bannerpp.pattern.spectrum.palette.light_blue": "Arte Azul-Claro", - "bannerpp.pattern.spectrum.palette.magenta": "Arte Magenta", - "bannerpp.pattern.spectrum.palette.orange": "Arte Laranja", - "bannerpp.pattern.spectrum.palette.white": "Arte Branca", - "bannerpp.pattern.spectrum.amethyst_cluster.black": "Aglomerado de Ametista Preta", - "bannerpp.pattern.spectrum.amethyst_cluster.red": "Aglomerado de Ametista Vermelha", - "bannerpp.pattern.spectrum.amethyst_cluster.green": "Aglomerado de Ametista Verde", - "bannerpp.pattern.spectrum.amethyst_cluster.brown": "Aglomerado de Ametista Marrom", - "bannerpp.pattern.spectrum.amethyst_cluster.blue": "Aglomerado de Ametista Azul", - "bannerpp.pattern.spectrum.amethyst_cluster.purple": "Aglomerado de Ametista Roxa", - "bannerpp.pattern.spectrum.amethyst_cluster.cyan": "Aglomerado de Ametista Ciano", - "bannerpp.pattern.spectrum.amethyst_cluster.light_gray": "Aglomerado de Ametista Cinza-Claro", - "bannerpp.pattern.spectrum.amethyst_cluster.gray": "Aglomerado de Ametista Cinza", - "bannerpp.pattern.spectrum.amethyst_cluster.pink": "Aglomerado de Ametista Rosa", - "bannerpp.pattern.spectrum.amethyst_cluster.lime": "Aglomerado de Ametista Verde-Limão", - "bannerpp.pattern.spectrum.amethyst_cluster.yellow": "Aglomerado de Ametista Amarela", - "bannerpp.pattern.spectrum.amethyst_cluster.light_blue": "Aglomerado de Ametista Azul-Claro", - "bannerpp.pattern.spectrum.amethyst_cluster.magenta": "Aglomerado de Ametista Magenta", - "bannerpp.pattern.spectrum.amethyst_cluster.orange": "Aglomerado de Ametista Laranja", - "bannerpp.pattern.spectrum.amethyst_cluster.white": "Aglomerado de Ametista Branca", - "bannerpp.pattern.spectrum.neolith.black": "Neolito Preto", - "bannerpp.pattern.spectrum.neolith.red": "Neolito Vermelho", - "bannerpp.pattern.spectrum.neolith.green": "Neolito Verde", - "bannerpp.pattern.spectrum.neolith.brown": "Neolito Marrom", - "bannerpp.pattern.spectrum.neolith.blue": "Neolito Azul", - "bannerpp.pattern.spectrum.neolith.purple": "Neolito Roxo", - "bannerpp.pattern.spectrum.neolith.cyan": "Neolito Ciano", - "bannerpp.pattern.spectrum.neolith.light_gray": "Neolito Cinza-Claro", - "bannerpp.pattern.spectrum.neolith.gray": "Neolito Cinza", - "bannerpp.pattern.spectrum.neolith.pink": "Neolito Rosa", - "bannerpp.pattern.spectrum.neolith.lime": "Neolito Verde-Limão", - "bannerpp.pattern.spectrum.neolith.yellow": "Neolito Amarelo", - "bannerpp.pattern.spectrum.neolith.light_blue": "Neolito Azul-Claro", - "bannerpp.pattern.spectrum.neolith.magenta": "Neolito Magenta", - "bannerpp.pattern.spectrum.neolith.orange": "Neolito Laranja", - "bannerpp.pattern.spectrum.neolith.white": "Neolito Branco", - "bannerpp.pattern.spectrum.pigment.black": "Pigmento Preto", - "bannerpp.pattern.spectrum.pigment.red": "Pigmento Vermelho", - "bannerpp.pattern.spectrum.pigment.green": "Pigmento Verde", - "bannerpp.pattern.spectrum.pigment.brown": "Pigmento Marrom", - "bannerpp.pattern.spectrum.pigment.blue": "Pigmento Azul", - "bannerpp.pattern.spectrum.pigment.purple": "Pigmento Roxo", - "bannerpp.pattern.spectrum.pigment.cyan": "Pigmento Ciano", - "bannerpp.pattern.spectrum.pigment.light_gray": "Pigmento Cinza-Claro", - "bannerpp.pattern.spectrum.pigment.gray": "Pigmento Cinza", - "bannerpp.pattern.spectrum.pigment.pink": "Pigmento Rosa", - "bannerpp.pattern.spectrum.pigment.lime": "Pigmento Verde-Limão", - "bannerpp.pattern.spectrum.pigment.yellow": "Pigmento Amarelo", - "bannerpp.pattern.spectrum.pigment.light_blue": "Pigmento Azul-Claro", - "bannerpp.pattern.spectrum.pigment.magenta": "Pigmento Magenta", - "bannerpp.pattern.spectrum.pigment.orange": "Pigmento Laranja", - "bannerpp.pattern.spectrum.pigment.white": "Pigmento Branco", - "bannerpp.pattern.spectrum.knowledge_gem.black": "Gema do Conhecimento Preta", - "bannerpp.pattern.spectrum.knowledge_gem.red": "Gema do Conhecimento Vermelha", - "bannerpp.pattern.spectrum.knowledge_gem.green": "Gema do Conhecimento Verde", - "bannerpp.pattern.spectrum.knowledge_gem.brown": "Gema do Conhecimento Marrom", - "bannerpp.pattern.spectrum.knowledge_gem.blue": "Gema do Conhecimento Azul", - "bannerpp.pattern.spectrum.knowledge_gem.purple": "Gema do Conhecimento Roxa", - "bannerpp.pattern.spectrum.knowledge_gem.cyan": "Gema do Conhecimento Ciano", - "bannerpp.pattern.spectrum.knowledge_gem.light_gray": "Gema do Conhecimento Cinza-Claro", - "bannerpp.pattern.spectrum.knowledge_gem.gray": "Gema do Conhecimento Cinza", - "bannerpp.pattern.spectrum.knowledge_gem.pink": "Gema do Conhecimento Rosa", - "bannerpp.pattern.spectrum.knowledge_gem.lime": "Gema do Conhecimento Verde-Limão", - "bannerpp.pattern.spectrum.knowledge_gem.yellow": "Gema do Conhecimento Amarela", - "bannerpp.pattern.spectrum.knowledge_gem.light_blue": "Gema do Conhecimento Azul-Claro", - "bannerpp.pattern.spectrum.knowledge_gem.magenta": "Gema do Conhecimento Magenta", - "bannerpp.pattern.spectrum.knowledge_gem.orange": "Gema do Conhecimento Laranja", - "bannerpp.pattern.spectrum.knowledge_gem.white": "Gema do Conhecimento Branca", - "bannerpp.pattern.spectrum.vegetal.black": "Vegetal Preto", - "bannerpp.pattern.spectrum.vegetal.red": "Vegetal Vermelho", - "bannerpp.pattern.spectrum.vegetal.green": "Vegetal Verde", - "bannerpp.pattern.spectrum.vegetal.brown": "Vegetal Marrom", - "bannerpp.pattern.spectrum.vegetal.blue": "Vegetal Azul", - "bannerpp.pattern.spectrum.vegetal.purple": "Vegetal Roxo", - "bannerpp.pattern.spectrum.vegetal.cyan": "Vegetal Ciano", - "bannerpp.pattern.spectrum.vegetal.light_gray": "Vegetal Cinza-Claro", - "bannerpp.pattern.spectrum.vegetal.gray": "Vegetal Cinza", - "bannerpp.pattern.spectrum.vegetal.pink": "Vegetal Rosa", - "bannerpp.pattern.spectrum.vegetal.lime": "Vegetal Verde-Limão", - "bannerpp.pattern.spectrum.vegetal.yellow": "Vegetal Amarelo", - "bannerpp.pattern.spectrum.vegetal.light_blue": "Vegetal Azul-Claro", - "bannerpp.pattern.spectrum.vegetal.magenta": "Vegetal Magenta", - "bannerpp.pattern.spectrum.vegetal.orange": "Vegetal Laranja", - "bannerpp.pattern.spectrum.vegetal.white": "Vegetal Branco", - "bannerpp.pattern.spectrum.logo.black": "Teoria das Cores Preta", - "bannerpp.pattern.spectrum.logo.red": "Teoria das Cores Vermelha", - "bannerpp.pattern.spectrum.logo.green": "Teoria das Cores Verde", - "bannerpp.pattern.spectrum.logo.brown": "Teoria das Cores Marrom", - "bannerpp.pattern.spectrum.logo.blue": "Teoria das Cores Azul", - "bannerpp.pattern.spectrum.logo.purple": "Teoria das Cores Roxa", - "bannerpp.pattern.spectrum.logo.cyan": "Teoria das Cores Ciano", - "bannerpp.pattern.spectrum.logo.light_gray": "Teoria das Cores Cinza-Claro", - "bannerpp.pattern.spectrum.logo.gray": "Teoria das Cores Cinza", - "bannerpp.pattern.spectrum.logo.pink": "Teoria das Cores Rosa", - "bannerpp.pattern.spectrum.logo.lime": "Teoria das Cores Verde-Limão", - "bannerpp.pattern.spectrum.logo.yellow": "Teoria das Cores Amarela", - "bannerpp.pattern.spectrum.logo.light_blue": "Teoria das Cores Azul-Claro", - "bannerpp.pattern.spectrum.logo.magenta": "Teoria das Cores Magenta", - "bannerpp.pattern.spectrum.logo.orange": "Teoria das Cores Laranja", - "bannerpp.pattern.spectrum.logo.white": "Teoria das Cores Branca", - "bannerpp.pattern.spectrum.four_leaf_clover.black": "Trevo de Quatro Folhas Preto", - "bannerpp.pattern.spectrum.four_leaf_clover.red": "Trevo de Quatro Folhas Vermelho", - "bannerpp.pattern.spectrum.four_leaf_clover.green": "Trevo de Quatro Folhas Verde", - "bannerpp.pattern.spectrum.four_leaf_clover.brown": "Trevo de Quatro Folhas Marrom", - "bannerpp.pattern.spectrum.four_leaf_clover.blue": "Trevo de Quatro Folhas Azul", - "bannerpp.pattern.spectrum.four_leaf_clover.purple": "Trevo de Quatro Folhas Roxo", - "bannerpp.pattern.spectrum.four_leaf_clover.cyan": "Trevo de Quatro Folhas Ciano", - "bannerpp.pattern.spectrum.four_leaf_clover.light_gray": "Trevo de Quatro Folhas Cinza-Claro", - "bannerpp.pattern.spectrum.four_leaf_clover.gray": "Trevo de Quatro Folhas Cinza", - "bannerpp.pattern.spectrum.four_leaf_clover.pink": "Trevo de Quatro Folhas Rosa", - "bannerpp.pattern.spectrum.four_leaf_clover.lime": "Trevo de Quatro Folhas Verde-Limão", - "bannerpp.pattern.spectrum.four_leaf_clover.yellow": "Trevo de Quatro Folhas Amarelo", - "bannerpp.pattern.spectrum.four_leaf_clover.light_blue": "Trevo de Quatro Folhas Azul-Claro", - "bannerpp.pattern.spectrum.four_leaf_clover.magenta": "Trevo de Quatro Folhas Magenta", - "bannerpp.pattern.spectrum.four_leaf_clover.orange": "Trevo de Quatro Folhas Laranja", - "bannerpp.pattern.spectrum.four_leaf_clover.white": "Trevo de Quatro Folhas Branco", - "bannerpp.pattern.spectrum.multitool.black": "Multiferramenta Preta", - "bannerpp.pattern.spectrum.multitool.red": "Multiferramenta Vermelha", - "bannerpp.pattern.spectrum.multitool.green": "Multiferramenta Verde", - "bannerpp.pattern.spectrum.multitool.brown": "Multiferramenta Marrom", - "bannerpp.pattern.spectrum.multitool.blue": "Multiferramenta Azul", - "bannerpp.pattern.spectrum.multitool.purple": "Multiferramenta Roxa", - "bannerpp.pattern.spectrum.multitool.cyan": "Multiferramenta Ciano", - "bannerpp.pattern.spectrum.multitool.light_gray": "Multiferramenta Cinza-Claro", - "bannerpp.pattern.spectrum.multitool.gray": "Multiferramenta Cinza", - "bannerpp.pattern.spectrum.multitool.pink": "Multiferramenta Rosa", - "bannerpp.pattern.spectrum.multitool.lime": "Multiferramenta Verde-Limão", - "bannerpp.pattern.spectrum.multitool.yellow": "Multiferramenta Amarela", - "bannerpp.pattern.spectrum.multitool.light_blue": "Multiferramenta Azul-Claro", - "bannerpp.pattern.spectrum.multitool.magenta": "Multiferramenta Magenta", - "bannerpp.pattern.spectrum.multitool.orange": "Multiferramenta Laranja", - "bannerpp.pattern.spectrum.multitool.white": "Multiferramenta Branca", - "bannerpp.pattern.spectrum.manual.black": "Mundo Colorido Preto", - "bannerpp.pattern.spectrum.manual.red": "Mundo Colorido Vermelho", - "bannerpp.pattern.spectrum.manual.green": "Mundo Colorido Verde", - "bannerpp.pattern.spectrum.manual.brown": "Mundo Colorido Marrom", - "bannerpp.pattern.spectrum.manual.blue": "Mundo Colorido Azul", - "bannerpp.pattern.spectrum.manual.purple": "Mundo Colorido Roxo", - "bannerpp.pattern.spectrum.manual.cyan": "Mundo Colorido Ciano", - "bannerpp.pattern.spectrum.manual.light_gray": "Mundo Colorido Cinza-Claro", - "bannerpp.pattern.spectrum.manual.gray": "Mundo Colorido Cinza", - "bannerpp.pattern.spectrum.manual.pink": "Mundo Colorido Rosa", - "bannerpp.pattern.spectrum.manual.lime": "Mundo Colorido Verde-Limão", - "bannerpp.pattern.spectrum.manual.yellow": "Mundo Colorido Amarelo", - "bannerpp.pattern.spectrum.manual.light_blue": "Mundo Colorido Azul-Claro", - "bannerpp.pattern.spectrum.manual.magenta": "Mundo Colorido Magenta", - "bannerpp.pattern.spectrum.manual.orange": "Mundo Colorido Laranja", - "bannerpp.pattern.spectrum.manual.white": "Mundo Colorido Branco", - "bannerpp.pattern.spectrum.crafting_tablet.black": "Tábua de Fabricação Preta", - "bannerpp.pattern.spectrum.crafting_tablet.red": "Tábua de Fabricação Vermelha", - "bannerpp.pattern.spectrum.crafting_tablet.green": "Tábua de Fabricação Verde", - "bannerpp.pattern.spectrum.crafting_tablet.brown": "Tábua de Fabricação Marrom", - "bannerpp.pattern.spectrum.crafting_tablet.blue": "Tábua de Fabricação Azul", - "bannerpp.pattern.spectrum.crafting_tablet.purple": "Tábua de Fabricação Roxa", - "bannerpp.pattern.spectrum.crafting_tablet.cyan": "Tábua de Fabricação Ciano", - "bannerpp.pattern.spectrum.crafting_tablet.light_gray": "Tábua de Fabricação Cinza-Claro", - "bannerpp.pattern.spectrum.crafting_tablet.gray": "Tábua de Fabricação Cinza", - "bannerpp.pattern.spectrum.crafting_tablet.pink": "Tábua de Fabricação Rosa", - "bannerpp.pattern.spectrum.crafting_tablet.lime": "Tábua de Fabricação Verde-Limão", - "bannerpp.pattern.spectrum.crafting_tablet.yellow": "Tábua de Fabricação Amarela", - "bannerpp.pattern.spectrum.crafting_tablet.light_blue": "Tábua de Fabricação Azul-Claro", - "bannerpp.pattern.spectrum.crafting_tablet.magenta": "Tábua de Fabricação Magenta", - "bannerpp.pattern.spectrum.crafting_tablet.orange": "Tábua de Fabricação Laranja", - "bannerpp.pattern.spectrum.crafting_tablet.white": "Tábua de Fabricação Branca", - "bannerpp.pattern.spectrum.ink_flask.black": "Frasco de Tinta Preta", - "bannerpp.pattern.spectrum.ink_flask.red": "Frasco de Tinta Vermelha", - "bannerpp.pattern.spectrum.ink_flask.green": "Frasco de Tinta Verde", - "bannerpp.pattern.spectrum.ink_flask.brown": "Frasco de Tinta Marrom", - "bannerpp.pattern.spectrum.ink_flask.blue": "Frasco de Tinta Azul", - "bannerpp.pattern.spectrum.ink_flask.purple": "Frasco de Tinta Roxa", - "bannerpp.pattern.spectrum.ink_flask.cyan": "Frasco de Tinta Ciano", - "bannerpp.pattern.spectrum.ink_flask.light_gray": "Frasco de Tinta Cinza-Claro", - "bannerpp.pattern.spectrum.ink_flask.gray": "Frasco de Tinta Cinza", - "bannerpp.pattern.spectrum.ink_flask.pink": "Frasco de Tinta Rosa", - "bannerpp.pattern.spectrum.ink_flask.lime": "Frasco de Tinta Verde-Limão", - "bannerpp.pattern.spectrum.ink_flask.yellow": "Frasco de Tinta Amarela", - "bannerpp.pattern.spectrum.ink_flask.light_blue": "Frasco de Tinta Azul-Claro", - "bannerpp.pattern.spectrum.ink_flask.magenta": "Frasco de Tinta Magenta", - "bannerpp.pattern.spectrum.ink_flask.orange": "Frasco de Tinta Laranja", - "bannerpp.pattern.spectrum.ink_flask.white": "Frasco de Tinta Branca", - "bannerpp.pattern.spectrum.amethyst_shard.black": "Fragmento de Ametista Preta", - "bannerpp.pattern.spectrum.amethyst_shard.red": "Fragmento de Ametista Vermelha", - "bannerpp.pattern.spectrum.amethyst_shard.green": "Fragmento de Ametista Verde", - "bannerpp.pattern.spectrum.amethyst_shard.brown": "Fragmento de Ametista Marrom", - "bannerpp.pattern.spectrum.amethyst_shard.blue": "Fragmento de Ametista Azul", - "bannerpp.pattern.spectrum.amethyst_shard.purple": "Fragmento de Ametista Roxa", - "bannerpp.pattern.spectrum.amethyst_shard.cyan": "Fragmento de Ametista Ciano", - "bannerpp.pattern.spectrum.amethyst_shard.light_gray": "Fragmento de Ametista Cinza-Claro", - "bannerpp.pattern.spectrum.amethyst_shard.gray": "Fragmento de Ametista Cinza", - "bannerpp.pattern.spectrum.amethyst_shard.pink": "Fragmento de Ametista Rosa", - "bannerpp.pattern.spectrum.amethyst_shard.lime": "Fragmento de Ametista Verde-Limão", - "bannerpp.pattern.spectrum.amethyst_shard.yellow": "Fragmento de Ametista Amarela", - "bannerpp.pattern.spectrum.amethyst_shard.light_blue": "Fragmento de Ametista Azul-Claro", - "bannerpp.pattern.spectrum.amethyst_shard.magenta": "Fragmento de Ametista Magenta", - "bannerpp.pattern.spectrum.amethyst_shard.orange": "Fragmento de Ametista Laranja", - "bannerpp.pattern.spectrum.amethyst_shard.white": "Fragmento de Ametista Branca", - "bannerpp.pattern.spectrum.raw_azurite.black": "Azurita Preta", - "bannerpp.pattern.spectrum.raw_azurite.red": "Azurita Vermelha", - "bannerpp.pattern.spectrum.raw_azurite.green": "Azurita Verde", - "bannerpp.pattern.spectrum.raw_azurite.brown": "Azurita Marrom", - "bannerpp.pattern.spectrum.raw_azurite.blue": "Azurita Azul", - "bannerpp.pattern.spectrum.raw_azurite.purple": "Azurita Roxa", - "bannerpp.pattern.spectrum.raw_azurite.cyan": "Azurita Ciano", - "bannerpp.pattern.spectrum.raw_azurite.light_gray": "Azurita Cinza-Claro", - "bannerpp.pattern.spectrum.raw_azurite.gray": "Azurita Cinza", - "bannerpp.pattern.spectrum.raw_azurite.pink": "Azurita Rosa", - "bannerpp.pattern.spectrum.raw_azurite.lime": "Azurita Verde-Limão", - "bannerpp.pattern.spectrum.raw_azurite.yellow": "Azurita Amarela", - "bannerpp.pattern.spectrum.raw_azurite.light_blue": "Azurita Azul-Claro", - "bannerpp.pattern.spectrum.raw_azurite.magenta": "Azurita Magenta", - "bannerpp.pattern.spectrum.raw_azurite.orange": "Azurita Laranja", - "bannerpp.pattern.spectrum.raw_azurite.white": "Azurita Branca", - - "bannerpp.pattern.spectrum.bedrock_dust.black": "Pó de Rocha-Mãe Preta", - "bannerpp.pattern.spectrum.bedrock_dust.red": "Pó de Rocha-Mãe Vermelha", - "bannerpp.pattern.spectrum.bedrock_dust.green": "Pó de Rocha-Mãe Verde", - "bannerpp.pattern.spectrum.bedrock_dust.brown": "Pó de Rocha-Mãe Marrom", - "bannerpp.pattern.spectrum.bedrock_dust.blue": "Pó de Rocha-Mãe Azul", - "bannerpp.pattern.spectrum.bedrock_dust.purple": "Pó de Rocha-Mãe Roxa", - "bannerpp.pattern.spectrum.bedrock_dust.cyan": "Pó de Rocha-Mãe Ciano", - "bannerpp.pattern.spectrum.bedrock_dust.light_gray": "Pó de Rocha-Mãe Cinza-Claro", - "bannerpp.pattern.spectrum.bedrock_dust.gray": "Pó de Rocha-Mãe Cinza", - "bannerpp.pattern.spectrum.bedrock_dust.pink": "Pó de Rocha-Mãe Rosa", - "bannerpp.pattern.spectrum.bedrock_dust.lime": "Pó de Rocha-Mãe Verde-Limão", - "bannerpp.pattern.spectrum.bedrock_dust.yellow": "Pó de Rocha-Mãe Amarela", - "bannerpp.pattern.spectrum.bedrock_dust.light_blue": "Pó de Rocha-Mãe Azul-Claro", - "bannerpp.pattern.spectrum.bedrock_dust.magenta": "Pó de Rocha-Mãe Magenta", - "bannerpp.pattern.spectrum.bedrock_dust.orange": "Pó de Rocha-Mãe Laranja", - "bannerpp.pattern.spectrum.bedrock_dust.white": "Pó de Rocha-Mãe Branca", - - "bannerpp.pattern.spectrum.shimmerstone.black": "Pedra Cintilante Preta", - "bannerpp.pattern.spectrum.shimmerstone.red": "Pedra Cintilante Vermelha", - "bannerpp.pattern.spectrum.shimmerstone.green": "Pedra Cintilante Verde", - "bannerpp.pattern.spectrum.shimmerstone.brown": "Pedra Cintilante Marrom", - "bannerpp.pattern.spectrum.shimmerstone.blue": "Pedra Cintilante Azul", - "bannerpp.pattern.spectrum.shimmerstone.purple": "Pedra Cintilante Roxa", - "bannerpp.pattern.spectrum.shimmerstone.cyan": "Pedra Cintilante Ciano", - "bannerpp.pattern.spectrum.shimmerstone.light_gray": "Pedra Cintilante Cinza-Claro", - "bannerpp.pattern.spectrum.shimmerstone.gray": "Pedra Cintilante Cinza", - "bannerpp.pattern.spectrum.shimmerstone.pink": "Pedra Cintilante Rosa", - "bannerpp.pattern.spectrum.shimmerstone.lime": "Pedra Cintilante Verde-Limão", - "bannerpp.pattern.spectrum.shimmerstone.yellow": "Pedra Cintilante Amarela", - "bannerpp.pattern.spectrum.shimmerstone.light_blue": "Pedra Cintilante Azul-Claro", - "bannerpp.pattern.spectrum.shimmerstone.magenta": "Pedra Cintilante Magenta", - "bannerpp.pattern.spectrum.shimmerstone.orange": "Pedra Cintilante Laranja", - "bannerpp.pattern.spectrum.shimmerstone.white": "Pedra Cintilante Branca", - - "bannerpp.pattern.spectrum.jade_vine.black": "Vinha de Jade Preta", - "bannerpp.pattern.spectrum.jade_vine.red": "Vinha de Jade Vermelha", - "bannerpp.pattern.spectrum.jade_vine.green": "Vinha de Jade Verde", - "bannerpp.pattern.spectrum.jade_vine.brown": "Vinha de Jade Marrom", - "bannerpp.pattern.spectrum.jade_vine.blue": "Vinha de Jade Azul", - "bannerpp.pattern.spectrum.jade_vine.purple": "Vinha de Jade Roxa", - "bannerpp.pattern.spectrum.jade_vine.cyan": "Vinha de Jade Ciano", - "bannerpp.pattern.spectrum.jade_vine.light_gray": "Vinha de Jade Cinza-Claro", - "bannerpp.pattern.spectrum.jade_vine.gray": "Vinha de Jade Cinza", - "bannerpp.pattern.spectrum.jade_vine.pink": "Vinha de Jade Rosa", - "bannerpp.pattern.spectrum.jade_vine.lime": "Vinha de Jade Verde-Limão", - "bannerpp.pattern.spectrum.jade_vine.yellow": "Vinha de Jade Amarela", - "bannerpp.pattern.spectrum.jade_vine.light_blue": "Vinha de Jade Azul-Claro", - "bannerpp.pattern.spectrum.jade_vine.magenta": "Vinha de Jade Magenta", - "bannerpp.pattern.spectrum.jade_vine.orange": "Vinha de Jade Laranja", - "bannerpp.pattern.spectrum.jade_vine.white": "Vinha de Jade Branca", + "block.minecraft.banner.spectrum.shimmer.black": "Cintilo Preto", + "block.minecraft.banner.spectrum.shimmer.red": "Cintilo Vermelho", + "block.minecraft.banner.spectrum.shimmer.green": "Cintilo Verde", + "block.minecraft.banner.spectrum.shimmer.brown": "Cintilo Marrom", + "block.minecraft.banner.spectrum.shimmer.blue": "Cintilo Azul", + "block.minecraft.banner.spectrum.shimmer.purple": "Cintilo Roxo", + "block.minecraft.banner.spectrum.shimmer.cyan": "Cintilo Ciano", + "block.minecraft.banner.spectrum.shimmer.light_gray": "Cintilo Cinza-Claro", + "block.minecraft.banner.spectrum.shimmer.gray": "Cintilo Cinza", + "block.minecraft.banner.spectrum.shimmer.pink": "Cintilo Rosa", + "block.minecraft.banner.spectrum.shimmer.lime": "Cintilo Verde-Limão", + "block.minecraft.banner.spectrum.shimmer.yellow": "Cintilo Amarelo", + "block.minecraft.banner.spectrum.shimmer.light_blue": "Cintilo Azul-Claro", + "block.minecraft.banner.spectrum.shimmer.magenta": "Cintilo Magenta", + "block.minecraft.banner.spectrum.shimmer.orange": "Cintilo Laranja", + "block.minecraft.banner.spectrum.shimmer.white": "Cintilo Branco", + "block.minecraft.banner.spectrum.palette.black": "Arte Preta", + "block.minecraft.banner.spectrum.palette.red": "Arte Vermelha", + "block.minecraft.banner.spectrum.palette.green": "Arte Verde", + "block.minecraft.banner.spectrum.palette.brown": "Arte Marrom", + "block.minecraft.banner.spectrum.palette.blue": "Arte Azul", + "block.minecraft.banner.spectrum.palette.purple": "Arte Roxa", + "block.minecraft.banner.spectrum.palette.cyan": "Arte Ciano", + "block.minecraft.banner.spectrum.palette.light_gray": "Arte Cinza-Claro", + "block.minecraft.banner.spectrum.palette.gray": "Arte Cinza", + "block.minecraft.banner.spectrum.palette.pink": "Arte Rosa", + "block.minecraft.banner.spectrum.palette.lime": "Arte Verde-Limão", + "block.minecraft.banner.spectrum.palette.yellow": "Arte Amarela", + "block.minecraft.banner.spectrum.palette.light_blue": "Arte Azul-Claro", + "block.minecraft.banner.spectrum.palette.magenta": "Arte Magenta", + "block.minecraft.banner.spectrum.palette.orange": "Arte Laranja", + "block.minecraft.banner.spectrum.palette.white": "Arte Branca", + "block.minecraft.banner.spectrum.amethyst_cluster.black": "Aglomerado de Ametista Preta", + "block.minecraft.banner.spectrum.amethyst_cluster.red": "Aglomerado de Ametista Vermelha", + "block.minecraft.banner.spectrum.amethyst_cluster.green": "Aglomerado de Ametista Verde", + "block.minecraft.banner.spectrum.amethyst_cluster.brown": "Aglomerado de Ametista Marrom", + "block.minecraft.banner.spectrum.amethyst_cluster.blue": "Aglomerado de Ametista Azul", + "block.minecraft.banner.spectrum.amethyst_cluster.purple": "Aglomerado de Ametista Roxa", + "block.minecraft.banner.spectrum.amethyst_cluster.cyan": "Aglomerado de Ametista Ciano", + "block.minecraft.banner.spectrum.amethyst_cluster.light_gray": "Aglomerado de Ametista Cinza-Claro", + "block.minecraft.banner.spectrum.amethyst_cluster.gray": "Aglomerado de Ametista Cinza", + "block.minecraft.banner.spectrum.amethyst_cluster.pink": "Aglomerado de Ametista Rosa", + "block.minecraft.banner.spectrum.amethyst_cluster.lime": "Aglomerado de Ametista Verde-Limão", + "block.minecraft.banner.spectrum.amethyst_cluster.yellow": "Aglomerado de Ametista Amarela", + "block.minecraft.banner.spectrum.amethyst_cluster.light_blue": "Aglomerado de Ametista Azul-Claro", + "block.minecraft.banner.spectrum.amethyst_cluster.magenta": "Aglomerado de Ametista Magenta", + "block.minecraft.banner.spectrum.amethyst_cluster.orange": "Aglomerado de Ametista Laranja", + "block.minecraft.banner.spectrum.amethyst_cluster.white": "Aglomerado de Ametista Branca", + "block.minecraft.banner.spectrum.neolith.black": "Neolito Preto", + "block.minecraft.banner.spectrum.neolith.red": "Neolito Vermelho", + "block.minecraft.banner.spectrum.neolith.green": "Neolito Verde", + "block.minecraft.banner.spectrum.neolith.brown": "Neolito Marrom", + "block.minecraft.banner.spectrum.neolith.blue": "Neolito Azul", + "block.minecraft.banner.spectrum.neolith.purple": "Neolito Roxo", + "block.minecraft.banner.spectrum.neolith.cyan": "Neolito Ciano", + "block.minecraft.banner.spectrum.neolith.light_gray": "Neolito Cinza-Claro", + "block.minecraft.banner.spectrum.neolith.gray": "Neolito Cinza", + "block.minecraft.banner.spectrum.neolith.pink": "Neolito Rosa", + "block.minecraft.banner.spectrum.neolith.lime": "Neolito Verde-Limão", + "block.minecraft.banner.spectrum.neolith.yellow": "Neolito Amarelo", + "block.minecraft.banner.spectrum.neolith.light_blue": "Neolito Azul-Claro", + "block.minecraft.banner.spectrum.neolith.magenta": "Neolito Magenta", + "block.minecraft.banner.spectrum.neolith.orange": "Neolito Laranja", + "block.minecraft.banner.spectrum.neolith.white": "Neolito Branco", + "block.minecraft.banner.spectrum.pigment.black": "Pigmento Preto", + "block.minecraft.banner.spectrum.pigment.red": "Pigmento Vermelho", + "block.minecraft.banner.spectrum.pigment.green": "Pigmento Verde", + "block.minecraft.banner.spectrum.pigment.brown": "Pigmento Marrom", + "block.minecraft.banner.spectrum.pigment.blue": "Pigmento Azul", + "block.minecraft.banner.spectrum.pigment.purple": "Pigmento Roxo", + "block.minecraft.banner.spectrum.pigment.cyan": "Pigmento Ciano", + "block.minecraft.banner.spectrum.pigment.light_gray": "Pigmento Cinza-Claro", + "block.minecraft.banner.spectrum.pigment.gray": "Pigmento Cinza", + "block.minecraft.banner.spectrum.pigment.pink": "Pigmento Rosa", + "block.minecraft.banner.spectrum.pigment.lime": "Pigmento Verde-Limão", + "block.minecraft.banner.spectrum.pigment.yellow": "Pigmento Amarelo", + "block.minecraft.banner.spectrum.pigment.light_blue": "Pigmento Azul-Claro", + "block.minecraft.banner.spectrum.pigment.magenta": "Pigmento Magenta", + "block.minecraft.banner.spectrum.pigment.orange": "Pigmento Laranja", + "block.minecraft.banner.spectrum.pigment.white": "Pigmento Branco", + "block.minecraft.banner.spectrum.knowledge_gem.black": "Gema do Conhecimento Preta", + "block.minecraft.banner.spectrum.knowledge_gem.red": "Gema do Conhecimento Vermelha", + "block.minecraft.banner.spectrum.knowledge_gem.green": "Gema do Conhecimento Verde", + "block.minecraft.banner.spectrum.knowledge_gem.brown": "Gema do Conhecimento Marrom", + "block.minecraft.banner.spectrum.knowledge_gem.blue": "Gema do Conhecimento Azul", + "block.minecraft.banner.spectrum.knowledge_gem.purple": "Gema do Conhecimento Roxa", + "block.minecraft.banner.spectrum.knowledge_gem.cyan": "Gema do Conhecimento Ciano", + "block.minecraft.banner.spectrum.knowledge_gem.light_gray": "Gema do Conhecimento Cinza-Claro", + "block.minecraft.banner.spectrum.knowledge_gem.gray": "Gema do Conhecimento Cinza", + "block.minecraft.banner.spectrum.knowledge_gem.pink": "Gema do Conhecimento Rosa", + "block.minecraft.banner.spectrum.knowledge_gem.lime": "Gema do Conhecimento Verde-Limão", + "block.minecraft.banner.spectrum.knowledge_gem.yellow": "Gema do Conhecimento Amarela", + "block.minecraft.banner.spectrum.knowledge_gem.light_blue": "Gema do Conhecimento Azul-Claro", + "block.minecraft.banner.spectrum.knowledge_gem.magenta": "Gema do Conhecimento Magenta", + "block.minecraft.banner.spectrum.knowledge_gem.orange": "Gema do Conhecimento Laranja", + "block.minecraft.banner.spectrum.knowledge_gem.white": "Gema do Conhecimento Branca", + "block.minecraft.banner.spectrum.vegetal.black": "Vegetal Preto", + "block.minecraft.banner.spectrum.vegetal.red": "Vegetal Vermelho", + "block.minecraft.banner.spectrum.vegetal.green": "Vegetal Verde", + "block.minecraft.banner.spectrum.vegetal.brown": "Vegetal Marrom", + "block.minecraft.banner.spectrum.vegetal.blue": "Vegetal Azul", + "block.minecraft.banner.spectrum.vegetal.purple": "Vegetal Roxo", + "block.minecraft.banner.spectrum.vegetal.cyan": "Vegetal Ciano", + "block.minecraft.banner.spectrum.vegetal.light_gray": "Vegetal Cinza-Claro", + "block.minecraft.banner.spectrum.vegetal.gray": "Vegetal Cinza", + "block.minecraft.banner.spectrum.vegetal.pink": "Vegetal Rosa", + "block.minecraft.banner.spectrum.vegetal.lime": "Vegetal Verde-Limão", + "block.minecraft.banner.spectrum.vegetal.yellow": "Vegetal Amarelo", + "block.minecraft.banner.spectrum.vegetal.light_blue": "Vegetal Azul-Claro", + "block.minecraft.banner.spectrum.vegetal.magenta": "Vegetal Magenta", + "block.minecraft.banner.spectrum.vegetal.orange": "Vegetal Laranja", + "block.minecraft.banner.spectrum.vegetal.white": "Vegetal Branco", + "block.minecraft.banner.spectrum.logo.black": "Teoria das Cores Preta", + "block.minecraft.banner.spectrum.logo.red": "Teoria das Cores Vermelha", + "block.minecraft.banner.spectrum.logo.green": "Teoria das Cores Verde", + "block.minecraft.banner.spectrum.logo.brown": "Teoria das Cores Marrom", + "block.minecraft.banner.spectrum.logo.blue": "Teoria das Cores Azul", + "block.minecraft.banner.spectrum.logo.purple": "Teoria das Cores Roxa", + "block.minecraft.banner.spectrum.logo.cyan": "Teoria das Cores Ciano", + "block.minecraft.banner.spectrum.logo.light_gray": "Teoria das Cores Cinza-Claro", + "block.minecraft.banner.spectrum.logo.gray": "Teoria das Cores Cinza", + "block.minecraft.banner.spectrum.logo.pink": "Teoria das Cores Rosa", + "block.minecraft.banner.spectrum.logo.lime": "Teoria das Cores Verde-Limão", + "block.minecraft.banner.spectrum.logo.yellow": "Teoria das Cores Amarela", + "block.minecraft.banner.spectrum.logo.light_blue": "Teoria das Cores Azul-Claro", + "block.minecraft.banner.spectrum.logo.magenta": "Teoria das Cores Magenta", + "block.minecraft.banner.spectrum.logo.orange": "Teoria das Cores Laranja", + "block.minecraft.banner.spectrum.logo.white": "Teoria das Cores Branca", + "block.minecraft.banner.spectrum.four_leaf_clover.black": "Trevo de Quatro Folhas Preto", + "block.minecraft.banner.spectrum.four_leaf_clover.red": "Trevo de Quatro Folhas Vermelho", + "block.minecraft.banner.spectrum.four_leaf_clover.green": "Trevo de Quatro Folhas Verde", + "block.minecraft.banner.spectrum.four_leaf_clover.brown": "Trevo de Quatro Folhas Marrom", + "block.minecraft.banner.spectrum.four_leaf_clover.blue": "Trevo de Quatro Folhas Azul", + "block.minecraft.banner.spectrum.four_leaf_clover.purple": "Trevo de Quatro Folhas Roxo", + "block.minecraft.banner.spectrum.four_leaf_clover.cyan": "Trevo de Quatro Folhas Ciano", + "block.minecraft.banner.spectrum.four_leaf_clover.light_gray": "Trevo de Quatro Folhas Cinza-Claro", + "block.minecraft.banner.spectrum.four_leaf_clover.gray": "Trevo de Quatro Folhas Cinza", + "block.minecraft.banner.spectrum.four_leaf_clover.pink": "Trevo de Quatro Folhas Rosa", + "block.minecraft.banner.spectrum.four_leaf_clover.lime": "Trevo de Quatro Folhas Verde-Limão", + "block.minecraft.banner.spectrum.four_leaf_clover.yellow": "Trevo de Quatro Folhas Amarelo", + "block.minecraft.banner.spectrum.four_leaf_clover.light_blue": "Trevo de Quatro Folhas Azul-Claro", + "block.minecraft.banner.spectrum.four_leaf_clover.magenta": "Trevo de Quatro Folhas Magenta", + "block.minecraft.banner.spectrum.four_leaf_clover.orange": "Trevo de Quatro Folhas Laranja", + "block.minecraft.banner.spectrum.four_leaf_clover.white": "Trevo de Quatro Folhas Branco", + "block.minecraft.banner.spectrum.multitool.black": "Multiferramenta Preta", + "block.minecraft.banner.spectrum.multitool.red": "Multiferramenta Vermelha", + "block.minecraft.banner.spectrum.multitool.green": "Multiferramenta Verde", + "block.minecraft.banner.spectrum.multitool.brown": "Multiferramenta Marrom", + "block.minecraft.banner.spectrum.multitool.blue": "Multiferramenta Azul", + "block.minecraft.banner.spectrum.multitool.purple": "Multiferramenta Roxa", + "block.minecraft.banner.spectrum.multitool.cyan": "Multiferramenta Ciano", + "block.minecraft.banner.spectrum.multitool.light_gray": "Multiferramenta Cinza-Claro", + "block.minecraft.banner.spectrum.multitool.gray": "Multiferramenta Cinza", + "block.minecraft.banner.spectrum.multitool.pink": "Multiferramenta Rosa", + "block.minecraft.banner.spectrum.multitool.lime": "Multiferramenta Verde-Limão", + "block.minecraft.banner.spectrum.multitool.yellow": "Multiferramenta Amarela", + "block.minecraft.banner.spectrum.multitool.light_blue": "Multiferramenta Azul-Claro", + "block.minecraft.banner.spectrum.multitool.magenta": "Multiferramenta Magenta", + "block.minecraft.banner.spectrum.multitool.orange": "Multiferramenta Laranja", + "block.minecraft.banner.spectrum.multitool.white": "Multiferramenta Branca", + "block.minecraft.banner.spectrum.manual.black": "Mundo Colorido Preto", + "block.minecraft.banner.spectrum.manual.red": "Mundo Colorido Vermelho", + "block.minecraft.banner.spectrum.manual.green": "Mundo Colorido Verde", + "block.minecraft.banner.spectrum.manual.brown": "Mundo Colorido Marrom", + "block.minecraft.banner.spectrum.manual.blue": "Mundo Colorido Azul", + "block.minecraft.banner.spectrum.manual.purple": "Mundo Colorido Roxo", + "block.minecraft.banner.spectrum.manual.cyan": "Mundo Colorido Ciano", + "block.minecraft.banner.spectrum.manual.light_gray": "Mundo Colorido Cinza-Claro", + "block.minecraft.banner.spectrum.manual.gray": "Mundo Colorido Cinza", + "block.minecraft.banner.spectrum.manual.pink": "Mundo Colorido Rosa", + "block.minecraft.banner.spectrum.manual.lime": "Mundo Colorido Verde-Limão", + "block.minecraft.banner.spectrum.manual.yellow": "Mundo Colorido Amarelo", + "block.minecraft.banner.spectrum.manual.light_blue": "Mundo Colorido Azul-Claro", + "block.minecraft.banner.spectrum.manual.magenta": "Mundo Colorido Magenta", + "block.minecraft.banner.spectrum.manual.orange": "Mundo Colorido Laranja", + "block.minecraft.banner.spectrum.manual.white": "Mundo Colorido Branco", + "block.minecraft.banner.spectrum.crafting_tablet.black": "Tábua de Fabricação Preta", + "block.minecraft.banner.spectrum.crafting_tablet.red": "Tábua de Fabricação Vermelha", + "block.minecraft.banner.spectrum.crafting_tablet.green": "Tábua de Fabricação Verde", + "block.minecraft.banner.spectrum.crafting_tablet.brown": "Tábua de Fabricação Marrom", + "block.minecraft.banner.spectrum.crafting_tablet.blue": "Tábua de Fabricação Azul", + "block.minecraft.banner.spectrum.crafting_tablet.purple": "Tábua de Fabricação Roxa", + "block.minecraft.banner.spectrum.crafting_tablet.cyan": "Tábua de Fabricação Ciano", + "block.minecraft.banner.spectrum.crafting_tablet.light_gray": "Tábua de Fabricação Cinza-Claro", + "block.minecraft.banner.spectrum.crafting_tablet.gray": "Tábua de Fabricação Cinza", + "block.minecraft.banner.spectrum.crafting_tablet.pink": "Tábua de Fabricação Rosa", + "block.minecraft.banner.spectrum.crafting_tablet.lime": "Tábua de Fabricação Verde-Limão", + "block.minecraft.banner.spectrum.crafting_tablet.yellow": "Tábua de Fabricação Amarela", + "block.minecraft.banner.spectrum.crafting_tablet.light_blue": "Tábua de Fabricação Azul-Claro", + "block.minecraft.banner.spectrum.crafting_tablet.magenta": "Tábua de Fabricação Magenta", + "block.minecraft.banner.spectrum.crafting_tablet.orange": "Tábua de Fabricação Laranja", + "block.minecraft.banner.spectrum.crafting_tablet.white": "Tábua de Fabricação Branca", + "block.minecraft.banner.spectrum.ink_flask.black": "Frasco de Tinta Preta", + "block.minecraft.banner.spectrum.ink_flask.red": "Frasco de Tinta Vermelha", + "block.minecraft.banner.spectrum.ink_flask.green": "Frasco de Tinta Verde", + "block.minecraft.banner.spectrum.ink_flask.brown": "Frasco de Tinta Marrom", + "block.minecraft.banner.spectrum.ink_flask.blue": "Frasco de Tinta Azul", + "block.minecraft.banner.spectrum.ink_flask.purple": "Frasco de Tinta Roxa", + "block.minecraft.banner.spectrum.ink_flask.cyan": "Frasco de Tinta Ciano", + "block.minecraft.banner.spectrum.ink_flask.light_gray": "Frasco de Tinta Cinza-Claro", + "block.minecraft.banner.spectrum.ink_flask.gray": "Frasco de Tinta Cinza", + "block.minecraft.banner.spectrum.ink_flask.pink": "Frasco de Tinta Rosa", + "block.minecraft.banner.spectrum.ink_flask.lime": "Frasco de Tinta Verde-Limão", + "block.minecraft.banner.spectrum.ink_flask.yellow": "Frasco de Tinta Amarela", + "block.minecraft.banner.spectrum.ink_flask.light_blue": "Frasco de Tinta Azul-Claro", + "block.minecraft.banner.spectrum.ink_flask.magenta": "Frasco de Tinta Magenta", + "block.minecraft.banner.spectrum.ink_flask.orange": "Frasco de Tinta Laranja", + "block.minecraft.banner.spectrum.ink_flask.white": "Frasco de Tinta Branca", + "block.minecraft.banner.spectrum.amethyst_shard.black": "Fragmento de Ametista Preta", + "block.minecraft.banner.spectrum.amethyst_shard.red": "Fragmento de Ametista Vermelha", + "block.minecraft.banner.spectrum.amethyst_shard.green": "Fragmento de Ametista Verde", + "block.minecraft.banner.spectrum.amethyst_shard.brown": "Fragmento de Ametista Marrom", + "block.minecraft.banner.spectrum.amethyst_shard.blue": "Fragmento de Ametista Azul", + "block.minecraft.banner.spectrum.amethyst_shard.purple": "Fragmento de Ametista Roxa", + "block.minecraft.banner.spectrum.amethyst_shard.cyan": "Fragmento de Ametista Ciano", + "block.minecraft.banner.spectrum.amethyst_shard.light_gray": "Fragmento de Ametista Cinza-Claro", + "block.minecraft.banner.spectrum.amethyst_shard.gray": "Fragmento de Ametista Cinza", + "block.minecraft.banner.spectrum.amethyst_shard.pink": "Fragmento de Ametista Rosa", + "block.minecraft.banner.spectrum.amethyst_shard.lime": "Fragmento de Ametista Verde-Limão", + "block.minecraft.banner.spectrum.amethyst_shard.yellow": "Fragmento de Ametista Amarela", + "block.minecraft.banner.spectrum.amethyst_shard.light_blue": "Fragmento de Ametista Azul-Claro", + "block.minecraft.banner.spectrum.amethyst_shard.magenta": "Fragmento de Ametista Magenta", + "block.minecraft.banner.spectrum.amethyst_shard.orange": "Fragmento de Ametista Laranja", + "block.minecraft.banner.spectrum.amethyst_shard.white": "Fragmento de Ametista Branca", + "block.minecraft.banner.spectrum.raw_azurite.black": "Azurita Preta", + "block.minecraft.banner.spectrum.raw_azurite.red": "Azurita Vermelha", + "block.minecraft.banner.spectrum.raw_azurite.green": "Azurita Verde", + "block.minecraft.banner.spectrum.raw_azurite.brown": "Azurita Marrom", + "block.minecraft.banner.spectrum.raw_azurite.blue": "Azurita Azul", + "block.minecraft.banner.spectrum.raw_azurite.purple": "Azurita Roxa", + "block.minecraft.banner.spectrum.raw_azurite.cyan": "Azurita Ciano", + "block.minecraft.banner.spectrum.raw_azurite.light_gray": "Azurita Cinza-Claro", + "block.minecraft.banner.spectrum.raw_azurite.gray": "Azurita Cinza", + "block.minecraft.banner.spectrum.raw_azurite.pink": "Azurita Rosa", + "block.minecraft.banner.spectrum.raw_azurite.lime": "Azurita Verde-Limão", + "block.minecraft.banner.spectrum.raw_azurite.yellow": "Azurita Amarela", + "block.minecraft.banner.spectrum.raw_azurite.light_blue": "Azurita Azul-Claro", + "block.minecraft.banner.spectrum.raw_azurite.magenta": "Azurita Magenta", + "block.minecraft.banner.spectrum.raw_azurite.orange": "Azurita Laranja", + "block.minecraft.banner.spectrum.raw_azurite.white": "Azurita Branca", + + "block.minecraft.banner.spectrum.bedrock_dust.black": "Pó de Rocha-Mãe Preta", + "block.minecraft.banner.spectrum.bedrock_dust.red": "Pó de Rocha-Mãe Vermelha", + "block.minecraft.banner.spectrum.bedrock_dust.green": "Pó de Rocha-Mãe Verde", + "block.minecraft.banner.spectrum.bedrock_dust.brown": "Pó de Rocha-Mãe Marrom", + "block.minecraft.banner.spectrum.bedrock_dust.blue": "Pó de Rocha-Mãe Azul", + "block.minecraft.banner.spectrum.bedrock_dust.purple": "Pó de Rocha-Mãe Roxa", + "block.minecraft.banner.spectrum.bedrock_dust.cyan": "Pó de Rocha-Mãe Ciano", + "block.minecraft.banner.spectrum.bedrock_dust.light_gray": "Pó de Rocha-Mãe Cinza-Claro", + "block.minecraft.banner.spectrum.bedrock_dust.gray": "Pó de Rocha-Mãe Cinza", + "block.minecraft.banner.spectrum.bedrock_dust.pink": "Pó de Rocha-Mãe Rosa", + "block.minecraft.banner.spectrum.bedrock_dust.lime": "Pó de Rocha-Mãe Verde-Limão", + "block.minecraft.banner.spectrum.bedrock_dust.yellow": "Pó de Rocha-Mãe Amarela", + "block.minecraft.banner.spectrum.bedrock_dust.light_blue": "Pó de Rocha-Mãe Azul-Claro", + "block.minecraft.banner.spectrum.bedrock_dust.magenta": "Pó de Rocha-Mãe Magenta", + "block.minecraft.banner.spectrum.bedrock_dust.orange": "Pó de Rocha-Mãe Laranja", + "block.minecraft.banner.spectrum.bedrock_dust.white": "Pó de Rocha-Mãe Branca", + + "block.minecraft.banner.spectrum.shimmerstone.black": "Pedra Cintilante Preta", + "block.minecraft.banner.spectrum.shimmerstone.red": "Pedra Cintilante Vermelha", + "block.minecraft.banner.spectrum.shimmerstone.green": "Pedra Cintilante Verde", + "block.minecraft.banner.spectrum.shimmerstone.brown": "Pedra Cintilante Marrom", + "block.minecraft.banner.spectrum.shimmerstone.blue": "Pedra Cintilante Azul", + "block.minecraft.banner.spectrum.shimmerstone.purple": "Pedra Cintilante Roxa", + "block.minecraft.banner.spectrum.shimmerstone.cyan": "Pedra Cintilante Ciano", + "block.minecraft.banner.spectrum.shimmerstone.light_gray": "Pedra Cintilante Cinza-Claro", + "block.minecraft.banner.spectrum.shimmerstone.gray": "Pedra Cintilante Cinza", + "block.minecraft.banner.spectrum.shimmerstone.pink": "Pedra Cintilante Rosa", + "block.minecraft.banner.spectrum.shimmerstone.lime": "Pedra Cintilante Verde-Limão", + "block.minecraft.banner.spectrum.shimmerstone.yellow": "Pedra Cintilante Amarela", + "block.minecraft.banner.spectrum.shimmerstone.light_blue": "Pedra Cintilante Azul-Claro", + "block.minecraft.banner.spectrum.shimmerstone.magenta": "Pedra Cintilante Magenta", + "block.minecraft.banner.spectrum.shimmerstone.orange": "Pedra Cintilante Laranja", + "block.minecraft.banner.spectrum.shimmerstone.white": "Pedra Cintilante Branca", + + "block.minecraft.banner.spectrum.jade_vine.black": "Vinha de Jade Preta", + "block.minecraft.banner.spectrum.jade_vine.red": "Vinha de Jade Vermelha", + "block.minecraft.banner.spectrum.jade_vine.green": "Vinha de Jade Verde", + "block.minecraft.banner.spectrum.jade_vine.brown": "Vinha de Jade Marrom", + "block.minecraft.banner.spectrum.jade_vine.blue": "Vinha de Jade Azul", + "block.minecraft.banner.spectrum.jade_vine.purple": "Vinha de Jade Roxa", + "block.minecraft.banner.spectrum.jade_vine.cyan": "Vinha de Jade Ciano", + "block.minecraft.banner.spectrum.jade_vine.light_gray": "Vinha de Jade Cinza-Claro", + "block.minecraft.banner.spectrum.jade_vine.gray": "Vinha de Jade Cinza", + "block.minecraft.banner.spectrum.jade_vine.pink": "Vinha de Jade Rosa", + "block.minecraft.banner.spectrum.jade_vine.lime": "Vinha de Jade Verde-Limão", + "block.minecraft.banner.spectrum.jade_vine.yellow": "Vinha de Jade Amarela", + "block.minecraft.banner.spectrum.jade_vine.light_blue": "Vinha de Jade Azul-Claro", + "block.minecraft.banner.spectrum.jade_vine.magenta": "Vinha de Jade Magenta", + "block.minecraft.banner.spectrum.jade_vine.orange": "Vinha de Jade Laranja", + "block.minecraft.banner.spectrum.jade_vine.white": "Vinha de Jade Branca", "trinkets.slot.chest.pin": "Broche", "trinkets.slot.head.crown": "Coroa", diff --git a/src/main/resources/assets/spectrum/lang/zh_cn.json b/src/main/resources/assets/spectrum/lang/zh_cn.json index e5d9e6353f..e20cafa97c 100644 --- a/src/main/resources/assets/spectrum/lang/zh_cn.json +++ b/src/main/resources/assets/spectrum/lang/zh_cn.json @@ -1317,294 +1317,294 @@ "item.spectrum.logo_banner_pattern.desc": "颜色理论", "item.spectrum.amethyst_shard_banner_pattern": "旗帜图案", "item.spectrum.amethyst_cluster_banner_pattern": "旗帜图案", - "bannerpp.pattern.spectrum.shimmer.black": "黑色光点", - "bannerpp.pattern.spectrum.shimmer.red": "红色光点", - "bannerpp.pattern.spectrum.shimmer.green": "绿色光点", - "bannerpp.pattern.spectrum.shimmer.brown": "棕色光点", - "bannerpp.pattern.spectrum.shimmer.blue": "蓝色光点", - "bannerpp.pattern.spectrum.shimmer.purple": "紫色光点", - "bannerpp.pattern.spectrum.shimmer.cyan": "青色光点", - "bannerpp.pattern.spectrum.shimmer.light_gray": "淡灰色光点", - "bannerpp.pattern.spectrum.shimmer.gray": "灰色光点", - "bannerpp.pattern.spectrum.shimmer.pink": "粉色光点", - "bannerpp.pattern.spectrum.shimmer.lime": "黄绿色光点", - "bannerpp.pattern.spectrum.shimmer.yellow": "黄色光点", - "bannerpp.pattern.spectrum.shimmer.light_blue": "淡蓝色光点", - "bannerpp.pattern.spectrum.shimmer.magenta": "品红色光点", - "bannerpp.pattern.spectrum.shimmer.orange": "橙色光点", - "bannerpp.pattern.spectrum.shimmer.white": "白色光点", - "bannerpp.pattern.spectrum.palette.black": "黑色艺术", - "bannerpp.pattern.spectrum.palette.red": "红色艺术", - "bannerpp.pattern.spectrum.palette.green": "绿色艺术", - "bannerpp.pattern.spectrum.palette.brown": "棕色艺术", - "bannerpp.pattern.spectrum.palette.blue": "蓝色艺术", - "bannerpp.pattern.spectrum.palette.purple": "紫色艺术", - "bannerpp.pattern.spectrum.palette.cyan": "青色艺术", - "bannerpp.pattern.spectrum.palette.light_gray": "淡灰色艺术", - "bannerpp.pattern.spectrum.palette.gray": "灰色艺术", - "bannerpp.pattern.spectrum.palette.pink": "粉色艺术", - "bannerpp.pattern.spectrum.palette.lime": "黄绿色艺术", - "bannerpp.pattern.spectrum.palette.yellow": "黄色艺术", - "bannerpp.pattern.spectrum.palette.light_blue": "淡蓝色艺术", - "bannerpp.pattern.spectrum.palette.magenta": "品红色艺术", - "bannerpp.pattern.spectrum.palette.orange": "橙色艺术", - "bannerpp.pattern.spectrum.palette.white": "白色艺术", - "bannerpp.pattern.spectrum.amethyst_cluster.black": "黑色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.red": "红色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.green": "绿色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.brown": "棕色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.blue": "蓝色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.purple": "紫色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.cyan": "青色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.light_gray": "淡灰色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.gray": "灰色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.pink": "粉色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.lime": "黄绿色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.yellow": "黄色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.light_blue": "淡蓝色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.magenta": "品红色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.orange": "橙色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_cluster.white": "白色紫水晶簇", - "bannerpp.pattern.spectrum.neolith.black": "黑色黑耀能量", - "bannerpp.pattern.spectrum.neolith.red": "红色黑耀能量", - "bannerpp.pattern.spectrum.neolith.green": "绿色黑耀能量", - "bannerpp.pattern.spectrum.neolith.brown": "棕色黑耀能量", - "bannerpp.pattern.spectrum.neolith.blue": "蓝色黑耀能量", - "bannerpp.pattern.spectrum.neolith.purple": "紫色黑耀能量", - "bannerpp.pattern.spectrum.neolith.cyan": "青色黑耀能量", - "bannerpp.pattern.spectrum.neolith.light_gray": "淡灰色黑耀能量", - "bannerpp.pattern.spectrum.neolith.gray": "灰色黑耀能量", - "bannerpp.pattern.spectrum.neolith.pink": "粉色黑耀能量", - "bannerpp.pattern.spectrum.neolith.lime": "黄绿色黑耀能量", - "bannerpp.pattern.spectrum.neolith.yellow": "黄色黑耀能量", - "bannerpp.pattern.spectrum.neolith.light_blue": "淡蓝色黑耀能量", - "bannerpp.pattern.spectrum.neolith.magenta": "品红色黑耀能量", - "bannerpp.pattern.spectrum.neolith.orange": "橙色黑耀能量", - "bannerpp.pattern.spectrum.neolith.white": "白色黑耀能量", - "bannerpp.pattern.spectrum.pigment.black": "黑色颜料", - "bannerpp.pattern.spectrum.pigment.red": "红色颜料", - "bannerpp.pattern.spectrum.pigment.green": "绿色颜料", - "bannerpp.pattern.spectrum.pigment.brown": "棕色颜料", - "bannerpp.pattern.spectrum.pigment.blue": "蓝色颜料", - "bannerpp.pattern.spectrum.pigment.purple": "紫色颜料", - "bannerpp.pattern.spectrum.pigment.cyan": "青色颜料", - "bannerpp.pattern.spectrum.pigment.light_gray": "淡灰色颜料", - "bannerpp.pattern.spectrum.pigment.gray": "灰色颜料", - "bannerpp.pattern.spectrum.pigment.pink": "粉色颜料", - "bannerpp.pattern.spectrum.pigment.lime": "黄绿色颜料", - "bannerpp.pattern.spectrum.pigment.yellow": "黄色颜料", - "bannerpp.pattern.spectrum.pigment.light_blue": "淡蓝色颜料", - "bannerpp.pattern.spectrum.pigment.magenta": "品红色颜料", - "bannerpp.pattern.spectrum.pigment.orange": "橙色颜料", - "bannerpp.pattern.spectrum.pigment.white": "白色颜料", - "bannerpp.pattern.spectrum.knowledge_gem.black": "黑色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.red": "红色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.green": "绿色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.brown": "棕色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.blue": "蓝色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.purple": "紫色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.cyan": "青色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.light_gray": "淡灰色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.gray": "灰色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.pink": "粉色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.lime": "黄绿色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.yellow": "黄色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.light_blue": "淡蓝色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.magenta": "品红色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.orange": "橙色知识宝石", - "bannerpp.pattern.spectrum.knowledge_gem.white": "白色知识宝石", - "bannerpp.pattern.spectrum.vegetal.black": "黑色植物能量", - "bannerpp.pattern.spectrum.vegetal.red": "红色植物能量", - "bannerpp.pattern.spectrum.vegetal.green": "绿色植物能量", - "bannerpp.pattern.spectrum.vegetal.brown": "棕色植物能量", - "bannerpp.pattern.spectrum.vegetal.blue": "蓝色植物能量", - "bannerpp.pattern.spectrum.vegetal.purple": "紫色植物能量", - "bannerpp.pattern.spectrum.vegetal.cyan": "青色植物能量", - "bannerpp.pattern.spectrum.vegetal.light_gray": "淡灰色植物能量", - "bannerpp.pattern.spectrum.vegetal.gray": "灰色植物能量", - "bannerpp.pattern.spectrum.vegetal.pink": "粉色植物能量", - "bannerpp.pattern.spectrum.vegetal.lime": "黄绿色植物能量", - "bannerpp.pattern.spectrum.vegetal.yellow": "黄色植物能量", - "bannerpp.pattern.spectrum.vegetal.light_blue": "淡蓝色植物能量", - "bannerpp.pattern.spectrum.vegetal.magenta": "品红色植物能量", - "bannerpp.pattern.spectrum.vegetal.orange": "橙色植物能量", - "bannerpp.pattern.spectrum.vegetal.white": "白色植物能量", - "bannerpp.pattern.spectrum.logo.black": "黑色颜色理论", - "bannerpp.pattern.spectrum.logo.red": "红色颜色理论", - "bannerpp.pattern.spectrum.logo.green": "绿色颜色理论", - "bannerpp.pattern.spectrum.logo.brown": "棕色颜色理论", - "bannerpp.pattern.spectrum.logo.blue": "蓝色颜色理论", - "bannerpp.pattern.spectrum.logo.purple": "紫色颜色理论", - "bannerpp.pattern.spectrum.logo.cyan": "青色颜色理论", - "bannerpp.pattern.spectrum.logo.light_gray": "淡灰色颜色理论", - "bannerpp.pattern.spectrum.logo.gray": "灰色颜色理论", - "bannerpp.pattern.spectrum.logo.pink": "粉色颜色理论", - "bannerpp.pattern.spectrum.logo.lime": "黄绿色颜色理论", - "bannerpp.pattern.spectrum.logo.yellow": "黄色颜色理论", - "bannerpp.pattern.spectrum.logo.light_blue": "淡蓝色颜色理论", - "bannerpp.pattern.spectrum.logo.magenta": "品红色颜色理论", - "bannerpp.pattern.spectrum.logo.orange": "橙色颜色理论", - "bannerpp.pattern.spectrum.logo.white": "白色颜色理论", - "bannerpp.pattern.spectrum.four_leaf_clover.black": "黑色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.red": "红色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.green": "绿色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.brown": "棕色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.blue": "蓝色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.purple": "紫色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.cyan": "青色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.light_gray": "淡灰色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.gray": "灰色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.pink": "粉色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.lime": "黄绿色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.yellow": "黄色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.light_blue": "淡蓝色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.magenta": "品红色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.orange": "橙色四叶草", - "bannerpp.pattern.spectrum.four_leaf_clover.white": "白色四叶草", - "bannerpp.pattern.spectrum.multitool.black": "黑色多功能工具", - "bannerpp.pattern.spectrum.multitool.red": "红色多功能工具", - "bannerpp.pattern.spectrum.multitool.green": "绿色多功能工具", - "bannerpp.pattern.spectrum.multitool.brown": "棕色多功能工具", - "bannerpp.pattern.spectrum.multitool.blue": "蓝色多功能工具", - "bannerpp.pattern.spectrum.multitool.purple": "紫色多功能工具", - "bannerpp.pattern.spectrum.multitool.cyan": "青色多功能工具", - "bannerpp.pattern.spectrum.multitool.light_gray": "淡灰色多功能工具", - "bannerpp.pattern.spectrum.multitool.gray": "灰色多功能工具", - "bannerpp.pattern.spectrum.multitool.pink": "粉色多功能工具", - "bannerpp.pattern.spectrum.multitool.lime": "黄绿色多功能工具", - "bannerpp.pattern.spectrum.multitool.yellow": "黄色多功能工具", - "bannerpp.pattern.spectrum.multitool.light_blue": "淡蓝色多功能工具", - "bannerpp.pattern.spectrum.multitool.magenta": "品红色多功能工具", - "bannerpp.pattern.spectrum.multitool.orange": "橙色多功能工具", - "bannerpp.pattern.spectrum.multitool.white": "白色多功能工具", - "bannerpp.pattern.spectrum.manual.black": "黑色七彩世界", - "bannerpp.pattern.spectrum.manual.red": "红色七彩世界", - "bannerpp.pattern.spectrum.manual.green": "绿色七彩世界", - "bannerpp.pattern.spectrum.manual.brown": "棕色七彩世界", - "bannerpp.pattern.spectrum.manual.blue": "蓝色七彩世界", - "bannerpp.pattern.spectrum.manual.purple": "紫色七彩世界", - "bannerpp.pattern.spectrum.manual.cyan": "青色七彩世界", - "bannerpp.pattern.spectrum.manual.light_gray": "淡灰色七彩世界", - "bannerpp.pattern.spectrum.manual.gray": "灰色七彩世界", - "bannerpp.pattern.spectrum.manual.pink": "粉色七彩世界", - "bannerpp.pattern.spectrum.manual.lime": "黄绿色七彩世界", - "bannerpp.pattern.spectrum.manual.yellow": "黄色七彩世界", - "bannerpp.pattern.spectrum.manual.light_blue": "淡蓝色七彩世界", - "bannerpp.pattern.spectrum.manual.magenta": "品红色七彩世界", - "bannerpp.pattern.spectrum.manual.orange": "橙色七彩世界", - "bannerpp.pattern.spectrum.manual.white": "白色七彩世界", - "bannerpp.pattern.spectrum.crafting_tablet.black": "黑色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.red": "红色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.green": "绿色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.brown": "棕色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.blue": "蓝色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.purple": "紫色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.cyan": "青色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.light_gray": "淡灰色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.gray": "灰色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.pink": "粉色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.lime": "黄绿色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.yellow": "黄色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.light_blue": "淡蓝色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.magenta": "品红色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.orange": "橙色合成模板", - "bannerpp.pattern.spectrum.crafting_tablet.white": "白色合成模板", - "bannerpp.pattern.spectrum.ink_flask.black": "黑色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.red": "红色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.green": "绿色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.brown": "棕色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.blue": "蓝色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.purple": "紫色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.cyan": "青色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.light_gray": "淡灰色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.gray": "灰色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.pink": "粉色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.lime": "黄绿色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.yellow": "黄色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.light_blue": "淡蓝色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.magenta": "品红色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.orange": "橙色墨水瓶", - "bannerpp.pattern.spectrum.ink_flask.white": "白色墨水瓶", - "bannerpp.pattern.spectrum.amethyst_shard.black": "黑色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.red": "红色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.green": "绿色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.brown": "棕色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.blue": "蓝色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.purple": "紫色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.cyan": "青色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.light_gray": "淡灰色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.gray": "灰色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.pink": "粉色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.lime": "黄绿色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.yellow": "黄色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.light_blue": "淡蓝色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.magenta": "品红色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.orange": "橙色紫水晶簇", - "bannerpp.pattern.spectrum.amethyst_shard.white": "白色紫水晶簇", - "bannerpp.pattern.spectrum.raw_azurite.black": "黑色天青石", - "bannerpp.pattern.spectrum.raw_azurite.red": "红色天青石", - "bannerpp.pattern.spectrum.raw_azurite.green": "绿色天青石", - "bannerpp.pattern.spectrum.raw_azurite.brown": "棕色天青石", - "bannerpp.pattern.spectrum.raw_azurite.blue": "蓝色天青石", - "bannerpp.pattern.spectrum.raw_azurite.purple": "紫色天青石", - "bannerpp.pattern.spectrum.raw_azurite.cyan": "青色天青石", - "bannerpp.pattern.spectrum.raw_azurite.light_gray": "淡灰色天青石", - "bannerpp.pattern.spectrum.raw_azurite.gray": "灰色天青石", - "bannerpp.pattern.spectrum.raw_azurite.pink": "粉色天青石", - "bannerpp.pattern.spectrum.raw_azurite.lime": "黄绿色天青石", - "bannerpp.pattern.spectrum.raw_azurite.yellow": "黄色天青石", - "bannerpp.pattern.spectrum.raw_azurite.light_blue": "淡蓝色天青石", - "bannerpp.pattern.spectrum.raw_azurite.magenta": "品红色天青石", - "bannerpp.pattern.spectrum.raw_azurite.orange": "橙色天青石", - "bannerpp.pattern.spectrum.raw_azurite.white": "白色天青石", - "bannerpp.pattern.spectrum.bedrock_dust.black": "黑色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.red": "红色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.green": "绿色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.brown": "棕色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.blue": "蓝色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.purple": "紫色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.cyan": "青色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.light_gray": "淡灰色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.gray": "灰色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.pink": "粉色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.lime": "黄绿色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.yellow": "黄色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.light_blue": "淡蓝色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.magenta": "品红色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.orange": "橙色基岩粉", - "bannerpp.pattern.spectrum.bedrock_dust.white": "白色基岩粉", - "bannerpp.pattern.spectrum.shimmerstone.black": "黑色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.red": "红色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.green": "绿色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.brown": "棕色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.blue": "蓝色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.purple": "紫色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.cyan": "青色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.light_gray": "淡灰色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.gray": "灰色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.pink": "粉色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.lime": "黄绿色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.yellow": "黄色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.light_blue": "淡蓝色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.magenta": "品红色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.orange": "橙色闪光石", - "bannerpp.pattern.spectrum.shimmerstone.white": "白色闪光石", - "bannerpp.pattern.spectrum.jade_vine.black": "黑色玉藤", - "bannerpp.pattern.spectrum.jade_vine.red": "红色玉藤", - "bannerpp.pattern.spectrum.jade_vine.green": "绿色玉藤", - "bannerpp.pattern.spectrum.jade_vine.brown": "棕色玉藤", - "bannerpp.pattern.spectrum.jade_vine.blue": "蓝色玉藤", - "bannerpp.pattern.spectrum.jade_vine.purple": "紫色玉藤", - "bannerpp.pattern.spectrum.jade_vine.cyan": "青色玉藤", - "bannerpp.pattern.spectrum.jade_vine.light_gray": "淡灰色玉藤", - "bannerpp.pattern.spectrum.jade_vine.gray": "灰色玉藤", - "bannerpp.pattern.spectrum.jade_vine.pink": "粉色玉藤", - "bannerpp.pattern.spectrum.jade_vine.lime": "黄绿色玉藤", - "bannerpp.pattern.spectrum.jade_vine.yellow": "黄色玉藤", - "bannerpp.pattern.spectrum.jade_vine.light_blue": "淡蓝色玉藤", - "bannerpp.pattern.spectrum.jade_vine.magenta": "品红色玉藤", - "bannerpp.pattern.spectrum.jade_vine.orange": "橙色玉藤", - "bannerpp.pattern.spectrum.jade_vine.white": "白色玉藤", + "block.minecraft.banner.spectrum.shimmer.black": "黑色光点", + "block.minecraft.banner.spectrum.shimmer.red": "红色光点", + "block.minecraft.banner.spectrum.shimmer.green": "绿色光点", + "block.minecraft.banner.spectrum.shimmer.brown": "棕色光点", + "block.minecraft.banner.spectrum.shimmer.blue": "蓝色光点", + "block.minecraft.banner.spectrum.shimmer.purple": "紫色光点", + "block.minecraft.banner.spectrum.shimmer.cyan": "青色光点", + "block.minecraft.banner.spectrum.shimmer.light_gray": "淡灰色光点", + "block.minecraft.banner.spectrum.shimmer.gray": "灰色光点", + "block.minecraft.banner.spectrum.shimmer.pink": "粉色光点", + "block.minecraft.banner.spectrum.shimmer.lime": "黄绿色光点", + "block.minecraft.banner.spectrum.shimmer.yellow": "黄色光点", + "block.minecraft.banner.spectrum.shimmer.light_blue": "淡蓝色光点", + "block.minecraft.banner.spectrum.shimmer.magenta": "品红色光点", + "block.minecraft.banner.spectrum.shimmer.orange": "橙色光点", + "block.minecraft.banner.spectrum.shimmer.white": "白色光点", + "block.minecraft.banner.spectrum.palette.black": "黑色艺术", + "block.minecraft.banner.spectrum.palette.red": "红色艺术", + "block.minecraft.banner.spectrum.palette.green": "绿色艺术", + "block.minecraft.banner.spectrum.palette.brown": "棕色艺术", + "block.minecraft.banner.spectrum.palette.blue": "蓝色艺术", + "block.minecraft.banner.spectrum.palette.purple": "紫色艺术", + "block.minecraft.banner.spectrum.palette.cyan": "青色艺术", + "block.minecraft.banner.spectrum.palette.light_gray": "淡灰色艺术", + "block.minecraft.banner.spectrum.palette.gray": "灰色艺术", + "block.minecraft.banner.spectrum.palette.pink": "粉色艺术", + "block.minecraft.banner.spectrum.palette.lime": "黄绿色艺术", + "block.minecraft.banner.spectrum.palette.yellow": "黄色艺术", + "block.minecraft.banner.spectrum.palette.light_blue": "淡蓝色艺术", + "block.minecraft.banner.spectrum.palette.magenta": "品红色艺术", + "block.minecraft.banner.spectrum.palette.orange": "橙色艺术", + "block.minecraft.banner.spectrum.palette.white": "白色艺术", + "block.minecraft.banner.spectrum.amethyst_cluster.black": "黑色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.red": "红色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.green": "绿色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.brown": "棕色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.blue": "蓝色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.purple": "紫色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.cyan": "青色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.light_gray": "淡灰色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.gray": "灰色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.pink": "粉色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.lime": "黄绿色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.yellow": "黄色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.light_blue": "淡蓝色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.magenta": "品红色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.orange": "橙色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_cluster.white": "白色紫水晶簇", + "block.minecraft.banner.spectrum.neolith.black": "黑色黑耀能量", + "block.minecraft.banner.spectrum.neolith.red": "红色黑耀能量", + "block.minecraft.banner.spectrum.neolith.green": "绿色黑耀能量", + "block.minecraft.banner.spectrum.neolith.brown": "棕色黑耀能量", + "block.minecraft.banner.spectrum.neolith.blue": "蓝色黑耀能量", + "block.minecraft.banner.spectrum.neolith.purple": "紫色黑耀能量", + "block.minecraft.banner.spectrum.neolith.cyan": "青色黑耀能量", + "block.minecraft.banner.spectrum.neolith.light_gray": "淡灰色黑耀能量", + "block.minecraft.banner.spectrum.neolith.gray": "灰色黑耀能量", + "block.minecraft.banner.spectrum.neolith.pink": "粉色黑耀能量", + "block.minecraft.banner.spectrum.neolith.lime": "黄绿色黑耀能量", + "block.minecraft.banner.spectrum.neolith.yellow": "黄色黑耀能量", + "block.minecraft.banner.spectrum.neolith.light_blue": "淡蓝色黑耀能量", + "block.minecraft.banner.spectrum.neolith.magenta": "品红色黑耀能量", + "block.minecraft.banner.spectrum.neolith.orange": "橙色黑耀能量", + "block.minecraft.banner.spectrum.neolith.white": "白色黑耀能量", + "block.minecraft.banner.spectrum.pigment.black": "黑色颜料", + "block.minecraft.banner.spectrum.pigment.red": "红色颜料", + "block.minecraft.banner.spectrum.pigment.green": "绿色颜料", + "block.minecraft.banner.spectrum.pigment.brown": "棕色颜料", + "block.minecraft.banner.spectrum.pigment.blue": "蓝色颜料", + "block.minecraft.banner.spectrum.pigment.purple": "紫色颜料", + "block.minecraft.banner.spectrum.pigment.cyan": "青色颜料", + "block.minecraft.banner.spectrum.pigment.light_gray": "淡灰色颜料", + "block.minecraft.banner.spectrum.pigment.gray": "灰色颜料", + "block.minecraft.banner.spectrum.pigment.pink": "粉色颜料", + "block.minecraft.banner.spectrum.pigment.lime": "黄绿色颜料", + "block.minecraft.banner.spectrum.pigment.yellow": "黄色颜料", + "block.minecraft.banner.spectrum.pigment.light_blue": "淡蓝色颜料", + "block.minecraft.banner.spectrum.pigment.magenta": "品红色颜料", + "block.minecraft.banner.spectrum.pigment.orange": "橙色颜料", + "block.minecraft.banner.spectrum.pigment.white": "白色颜料", + "block.minecraft.banner.spectrum.knowledge_gem.black": "黑色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.red": "红色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.green": "绿色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.brown": "棕色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.blue": "蓝色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.purple": "紫色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.cyan": "青色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.light_gray": "淡灰色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.gray": "灰色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.pink": "粉色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.lime": "黄绿色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.yellow": "黄色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.light_blue": "淡蓝色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.magenta": "品红色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.orange": "橙色知识宝石", + "block.minecraft.banner.spectrum.knowledge_gem.white": "白色知识宝石", + "block.minecraft.banner.spectrum.vegetal.black": "黑色植物能量", + "block.minecraft.banner.spectrum.vegetal.red": "红色植物能量", + "block.minecraft.banner.spectrum.vegetal.green": "绿色植物能量", + "block.minecraft.banner.spectrum.vegetal.brown": "棕色植物能量", + "block.minecraft.banner.spectrum.vegetal.blue": "蓝色植物能量", + "block.minecraft.banner.spectrum.vegetal.purple": "紫色植物能量", + "block.minecraft.banner.spectrum.vegetal.cyan": "青色植物能量", + "block.minecraft.banner.spectrum.vegetal.light_gray": "淡灰色植物能量", + "block.minecraft.banner.spectrum.vegetal.gray": "灰色植物能量", + "block.minecraft.banner.spectrum.vegetal.pink": "粉色植物能量", + "block.minecraft.banner.spectrum.vegetal.lime": "黄绿色植物能量", + "block.minecraft.banner.spectrum.vegetal.yellow": "黄色植物能量", + "block.minecraft.banner.spectrum.vegetal.light_blue": "淡蓝色植物能量", + "block.minecraft.banner.spectrum.vegetal.magenta": "品红色植物能量", + "block.minecraft.banner.spectrum.vegetal.orange": "橙色植物能量", + "block.minecraft.banner.spectrum.vegetal.white": "白色植物能量", + "block.minecraft.banner.spectrum.logo.black": "黑色颜色理论", + "block.minecraft.banner.spectrum.logo.red": "红色颜色理论", + "block.minecraft.banner.spectrum.logo.green": "绿色颜色理论", + "block.minecraft.banner.spectrum.logo.brown": "棕色颜色理论", + "block.minecraft.banner.spectrum.logo.blue": "蓝色颜色理论", + "block.minecraft.banner.spectrum.logo.purple": "紫色颜色理论", + "block.minecraft.banner.spectrum.logo.cyan": "青色颜色理论", + "block.minecraft.banner.spectrum.logo.light_gray": "淡灰色颜色理论", + "block.minecraft.banner.spectrum.logo.gray": "灰色颜色理论", + "block.minecraft.banner.spectrum.logo.pink": "粉色颜色理论", + "block.minecraft.banner.spectrum.logo.lime": "黄绿色颜色理论", + "block.minecraft.banner.spectrum.logo.yellow": "黄色颜色理论", + "block.minecraft.banner.spectrum.logo.light_blue": "淡蓝色颜色理论", + "block.minecraft.banner.spectrum.logo.magenta": "品红色颜色理论", + "block.minecraft.banner.spectrum.logo.orange": "橙色颜色理论", + "block.minecraft.banner.spectrum.logo.white": "白色颜色理论", + "block.minecraft.banner.spectrum.four_leaf_clover.black": "黑色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.red": "红色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.green": "绿色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.brown": "棕色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.blue": "蓝色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.purple": "紫色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.cyan": "青色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.light_gray": "淡灰色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.gray": "灰色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.pink": "粉色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.lime": "黄绿色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.yellow": "黄色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.light_blue": "淡蓝色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.magenta": "品红色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.orange": "橙色四叶草", + "block.minecraft.banner.spectrum.four_leaf_clover.white": "白色四叶草", + "block.minecraft.banner.spectrum.multitool.black": "黑色多功能工具", + "block.minecraft.banner.spectrum.multitool.red": "红色多功能工具", + "block.minecraft.banner.spectrum.multitool.green": "绿色多功能工具", + "block.minecraft.banner.spectrum.multitool.brown": "棕色多功能工具", + "block.minecraft.banner.spectrum.multitool.blue": "蓝色多功能工具", + "block.minecraft.banner.spectrum.multitool.purple": "紫色多功能工具", + "block.minecraft.banner.spectrum.multitool.cyan": "青色多功能工具", + "block.minecraft.banner.spectrum.multitool.light_gray": "淡灰色多功能工具", + "block.minecraft.banner.spectrum.multitool.gray": "灰色多功能工具", + "block.minecraft.banner.spectrum.multitool.pink": "粉色多功能工具", + "block.minecraft.banner.spectrum.multitool.lime": "黄绿色多功能工具", + "block.minecraft.banner.spectrum.multitool.yellow": "黄色多功能工具", + "block.minecraft.banner.spectrum.multitool.light_blue": "淡蓝色多功能工具", + "block.minecraft.banner.spectrum.multitool.magenta": "品红色多功能工具", + "block.minecraft.banner.spectrum.multitool.orange": "橙色多功能工具", + "block.minecraft.banner.spectrum.multitool.white": "白色多功能工具", + "block.minecraft.banner.spectrum.manual.black": "黑色七彩世界", + "block.minecraft.banner.spectrum.manual.red": "红色七彩世界", + "block.minecraft.banner.spectrum.manual.green": "绿色七彩世界", + "block.minecraft.banner.spectrum.manual.brown": "棕色七彩世界", + "block.minecraft.banner.spectrum.manual.blue": "蓝色七彩世界", + "block.minecraft.banner.spectrum.manual.purple": "紫色七彩世界", + "block.minecraft.banner.spectrum.manual.cyan": "青色七彩世界", + "block.minecraft.banner.spectrum.manual.light_gray": "淡灰色七彩世界", + "block.minecraft.banner.spectrum.manual.gray": "灰色七彩世界", + "block.minecraft.banner.spectrum.manual.pink": "粉色七彩世界", + "block.minecraft.banner.spectrum.manual.lime": "黄绿色七彩世界", + "block.minecraft.banner.spectrum.manual.yellow": "黄色七彩世界", + "block.minecraft.banner.spectrum.manual.light_blue": "淡蓝色七彩世界", + "block.minecraft.banner.spectrum.manual.magenta": "品红色七彩世界", + "block.minecraft.banner.spectrum.manual.orange": "橙色七彩世界", + "block.minecraft.banner.spectrum.manual.white": "白色七彩世界", + "block.minecraft.banner.spectrum.crafting_tablet.black": "黑色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.red": "红色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.green": "绿色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.brown": "棕色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.blue": "蓝色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.purple": "紫色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.cyan": "青色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.light_gray": "淡灰色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.gray": "灰色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.pink": "粉色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.lime": "黄绿色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.yellow": "黄色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.light_blue": "淡蓝色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.magenta": "品红色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.orange": "橙色合成模板", + "block.minecraft.banner.spectrum.crafting_tablet.white": "白色合成模板", + "block.minecraft.banner.spectrum.ink_flask.black": "黑色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.red": "红色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.green": "绿色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.brown": "棕色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.blue": "蓝色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.purple": "紫色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.cyan": "青色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.light_gray": "淡灰色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.gray": "灰色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.pink": "粉色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.lime": "黄绿色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.yellow": "黄色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.light_blue": "淡蓝色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.magenta": "品红色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.orange": "橙色墨水瓶", + "block.minecraft.banner.spectrum.ink_flask.white": "白色墨水瓶", + "block.minecraft.banner.spectrum.amethyst_shard.black": "黑色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.red": "红色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.green": "绿色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.brown": "棕色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.blue": "蓝色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.purple": "紫色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.cyan": "青色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.light_gray": "淡灰色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.gray": "灰色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.pink": "粉色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.lime": "黄绿色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.yellow": "黄色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.light_blue": "淡蓝色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.magenta": "品红色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.orange": "橙色紫水晶簇", + "block.minecraft.banner.spectrum.amethyst_shard.white": "白色紫水晶簇", + "block.minecraft.banner.spectrum.raw_azurite.black": "黑色天青石", + "block.minecraft.banner.spectrum.raw_azurite.red": "红色天青石", + "block.minecraft.banner.spectrum.raw_azurite.green": "绿色天青石", + "block.minecraft.banner.spectrum.raw_azurite.brown": "棕色天青石", + "block.minecraft.banner.spectrum.raw_azurite.blue": "蓝色天青石", + "block.minecraft.banner.spectrum.raw_azurite.purple": "紫色天青石", + "block.minecraft.banner.spectrum.raw_azurite.cyan": "青色天青石", + "block.minecraft.banner.spectrum.raw_azurite.light_gray": "淡灰色天青石", + "block.minecraft.banner.spectrum.raw_azurite.gray": "灰色天青石", + "block.minecraft.banner.spectrum.raw_azurite.pink": "粉色天青石", + "block.minecraft.banner.spectrum.raw_azurite.lime": "黄绿色天青石", + "block.minecraft.banner.spectrum.raw_azurite.yellow": "黄色天青石", + "block.minecraft.banner.spectrum.raw_azurite.light_blue": "淡蓝色天青石", + "block.minecraft.banner.spectrum.raw_azurite.magenta": "品红色天青石", + "block.minecraft.banner.spectrum.raw_azurite.orange": "橙色天青石", + "block.minecraft.banner.spectrum.raw_azurite.white": "白色天青石", + "block.minecraft.banner.spectrum.bedrock_dust.black": "黑色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.red": "红色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.green": "绿色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.brown": "棕色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.blue": "蓝色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.purple": "紫色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.cyan": "青色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.light_gray": "淡灰色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.gray": "灰色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.pink": "粉色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.lime": "黄绿色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.yellow": "黄色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.light_blue": "淡蓝色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.magenta": "品红色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.orange": "橙色基岩粉", + "block.minecraft.banner.spectrum.bedrock_dust.white": "白色基岩粉", + "block.minecraft.banner.spectrum.shimmerstone.black": "黑色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.red": "红色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.green": "绿色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.brown": "棕色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.blue": "蓝色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.purple": "紫色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.cyan": "青色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.light_gray": "淡灰色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.gray": "灰色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.pink": "粉色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.lime": "黄绿色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.yellow": "黄色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.light_blue": "淡蓝色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.magenta": "品红色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.orange": "橙色闪光石", + "block.minecraft.banner.spectrum.shimmerstone.white": "白色闪光石", + "block.minecraft.banner.spectrum.jade_vine.black": "黑色玉藤", + "block.minecraft.banner.spectrum.jade_vine.red": "红色玉藤", + "block.minecraft.banner.spectrum.jade_vine.green": "绿色玉藤", + "block.minecraft.banner.spectrum.jade_vine.brown": "棕色玉藤", + "block.minecraft.banner.spectrum.jade_vine.blue": "蓝色玉藤", + "block.minecraft.banner.spectrum.jade_vine.purple": "紫色玉藤", + "block.minecraft.banner.spectrum.jade_vine.cyan": "青色玉藤", + "block.minecraft.banner.spectrum.jade_vine.light_gray": "淡灰色玉藤", + "block.minecraft.banner.spectrum.jade_vine.gray": "灰色玉藤", + "block.minecraft.banner.spectrum.jade_vine.pink": "粉色玉藤", + "block.minecraft.banner.spectrum.jade_vine.lime": "黄绿色玉藤", + "block.minecraft.banner.spectrum.jade_vine.yellow": "黄色玉藤", + "block.minecraft.banner.spectrum.jade_vine.light_blue": "淡蓝色玉藤", + "block.minecraft.banner.spectrum.jade_vine.magenta": "品红色玉藤", + "block.minecraft.banner.spectrum.jade_vine.orange": "橙色玉藤", + "block.minecraft.banner.spectrum.jade_vine.white": "白色玉藤", "trinkets.slot.chest.pin": "别针", "trinkets.slot.head.crown": "王冠", "trinkets.slot.legs.pigment_palette": "调色板", diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/amethyst_cluster.png b/src/main/resources/assets/spectrum/textures/entity/banner/amethyst_cluster.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/amethyst_cluster.png rename to src/main/resources/assets/spectrum/textures/entity/banner/amethyst_cluster.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/amethyst_shard.png b/src/main/resources/assets/spectrum/textures/entity/banner/amethyst_shard.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/amethyst_shard.png rename to src/main/resources/assets/spectrum/textures/entity/banner/amethyst_shard.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/bedrock_dust.png b/src/main/resources/assets/spectrum/textures/entity/banner/bedrock_dust.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/bedrock_dust.png rename to src/main/resources/assets/spectrum/textures/entity/banner/bedrock_dust.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/crafting_tablet.png b/src/main/resources/assets/spectrum/textures/entity/banner/crafting_tablet.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/crafting_tablet.png rename to src/main/resources/assets/spectrum/textures/entity/banner/crafting_tablet.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/four_leaf_clover.png b/src/main/resources/assets/spectrum/textures/entity/banner/four_leaf_clover.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/four_leaf_clover.png rename to src/main/resources/assets/spectrum/textures/entity/banner/four_leaf_clover.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/ink_flask.png b/src/main/resources/assets/spectrum/textures/entity/banner/ink_flask.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/ink_flask.png rename to src/main/resources/assets/spectrum/textures/entity/banner/ink_flask.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/jade_vine.png b/src/main/resources/assets/spectrum/textures/entity/banner/jade_vine.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/jade_vine.png rename to src/main/resources/assets/spectrum/textures/entity/banner/jade_vine.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/knowledge_gem.png b/src/main/resources/assets/spectrum/textures/entity/banner/knowledge_gem.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/knowledge_gem.png rename to src/main/resources/assets/spectrum/textures/entity/banner/knowledge_gem.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/logo.png b/src/main/resources/assets/spectrum/textures/entity/banner/logo.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/logo.png rename to src/main/resources/assets/spectrum/textures/entity/banner/logo.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/manual.png b/src/main/resources/assets/spectrum/textures/entity/banner/manual.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/manual.png rename to src/main/resources/assets/spectrum/textures/entity/banner/manual.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/multitool.png b/src/main/resources/assets/spectrum/textures/entity/banner/multitool.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/multitool.png rename to src/main/resources/assets/spectrum/textures/entity/banner/multitool.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/neolith.png b/src/main/resources/assets/spectrum/textures/entity/banner/neolith.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/neolith.png rename to src/main/resources/assets/spectrum/textures/entity/banner/neolith.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/palette.png b/src/main/resources/assets/spectrum/textures/entity/banner/palette.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/palette.png rename to src/main/resources/assets/spectrum/textures/entity/banner/palette.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/pigment.png b/src/main/resources/assets/spectrum/textures/entity/banner/pigment.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/pigment.png rename to src/main/resources/assets/spectrum/textures/entity/banner/pigment.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/raw_azurite.png b/src/main/resources/assets/spectrum/textures/entity/banner/raw_azurite.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/raw_azurite.png rename to src/main/resources/assets/spectrum/textures/entity/banner/raw_azurite.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/shimmer.png b/src/main/resources/assets/spectrum/textures/entity/banner/shimmer.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/shimmer.png rename to src/main/resources/assets/spectrum/textures/entity/banner/shimmer.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/shimmerstone.png b/src/main/resources/assets/spectrum/textures/entity/banner/shimmerstone.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/shimmerstone.png rename to src/main/resources/assets/spectrum/textures/entity/banner/shimmerstone.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/banner/vegetal.png b/src/main/resources/assets/spectrum/textures/entity/banner/vegetal.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/banner/vegetal.png rename to src/main/resources/assets/spectrum/textures/entity/banner/vegetal.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/amethyst_cluster.png b/src/main/resources/assets/spectrum/textures/entity/shield/amethyst_cluster.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/amethyst_cluster.png rename to src/main/resources/assets/spectrum/textures/entity/shield/amethyst_cluster.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/amethyst_shard.png b/src/main/resources/assets/spectrum/textures/entity/shield/amethyst_shard.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/amethyst_shard.png rename to src/main/resources/assets/spectrum/textures/entity/shield/amethyst_shard.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/bedrock_dust.png b/src/main/resources/assets/spectrum/textures/entity/shield/bedrock_dust.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/bedrock_dust.png rename to src/main/resources/assets/spectrum/textures/entity/shield/bedrock_dust.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/crafting_tablet.png b/src/main/resources/assets/spectrum/textures/entity/shield/crafting_tablet.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/crafting_tablet.png rename to src/main/resources/assets/spectrum/textures/entity/shield/crafting_tablet.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/four_leaf_clover.png b/src/main/resources/assets/spectrum/textures/entity/shield/four_leaf_clover.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/four_leaf_clover.png rename to src/main/resources/assets/spectrum/textures/entity/shield/four_leaf_clover.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/ink_flask.png b/src/main/resources/assets/spectrum/textures/entity/shield/ink_flask.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/ink_flask.png rename to src/main/resources/assets/spectrum/textures/entity/shield/ink_flask.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/jade_vine.png b/src/main/resources/assets/spectrum/textures/entity/shield/jade_vine.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/jade_vine.png rename to src/main/resources/assets/spectrum/textures/entity/shield/jade_vine.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/knowledge_gem.png b/src/main/resources/assets/spectrum/textures/entity/shield/knowledge_gem.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/knowledge_gem.png rename to src/main/resources/assets/spectrum/textures/entity/shield/knowledge_gem.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/logo.png b/src/main/resources/assets/spectrum/textures/entity/shield/logo.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/logo.png rename to src/main/resources/assets/spectrum/textures/entity/shield/logo.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/manual.png b/src/main/resources/assets/spectrum/textures/entity/shield/manual.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/manual.png rename to src/main/resources/assets/spectrum/textures/entity/shield/manual.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/multitool.png b/src/main/resources/assets/spectrum/textures/entity/shield/multitool.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/multitool.png rename to src/main/resources/assets/spectrum/textures/entity/shield/multitool.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/neolith.png b/src/main/resources/assets/spectrum/textures/entity/shield/neolith.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/neolith.png rename to src/main/resources/assets/spectrum/textures/entity/shield/neolith.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/palette.png b/src/main/resources/assets/spectrum/textures/entity/shield/palette.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/palette.png rename to src/main/resources/assets/spectrum/textures/entity/shield/palette.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/pigment.png b/src/main/resources/assets/spectrum/textures/entity/shield/pigment.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/pigment.png rename to src/main/resources/assets/spectrum/textures/entity/shield/pigment.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/raw_azurite.png b/src/main/resources/assets/spectrum/textures/entity/shield/raw_azurite.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/raw_azurite.png rename to src/main/resources/assets/spectrum/textures/entity/shield/raw_azurite.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/shimmer.png b/src/main/resources/assets/spectrum/textures/entity/shield/shimmer.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/shimmer.png rename to src/main/resources/assets/spectrum/textures/entity/shield/shimmer.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/shimmerstone.png b/src/main/resources/assets/spectrum/textures/entity/shield/shimmerstone.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/shimmerstone.png rename to src/main/resources/assets/spectrum/textures/entity/shield/shimmerstone.png diff --git a/src/main/resources/assets/spectrum/textures/pattern/shield/vegetal.png b/src/main/resources/assets/spectrum/textures/entity/shield/vegetal.png similarity index 100% rename from src/main/resources/assets/spectrum/textures/pattern/shield/vegetal.png rename to src/main/resources/assets/spectrum/textures/entity/shield/vegetal.png diff --git a/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_cluster.json b/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_cluster.json index 744dae41dc..246fdadc79 100644 --- a/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_cluster.json +++ b/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_cluster.json @@ -1,5 +1,5 @@ { "values": [ - "spectrum:amethyst_cluster_banner_pattern" + "spectrum:amethyst_cluster" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_shard.json b/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_shard.json index 08fc7ae10c..b22cb048db 100644 --- a/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_shard.json +++ b/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/amethyst_shard.json @@ -1,5 +1,5 @@ { "values": [ - "spectrum:amethyst_shard_banner_pattern" + "spectrum:amethyst_shard" ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/logo.json b/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/logo.json index 40fb9fe6ca..1d21ea28d3 100644 --- a/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/logo.json +++ b/src/main/resources/data/spectrum/tags/banner_pattern/pattern_item/logo.json @@ -1,5 +1,5 @@ { "values": [ - "spectrum:logo_banner_pattern" + "spectrum:logo" ] } \ No newline at end of file From 3792efa07b0d40847cc16574f8aae4dd84bccc97 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 23:06:17 +0200 Subject: [PATCH 0040/1051] improved ink color selection packet & puff circlet particles --- .../spectrum/helpers/ParticleHelper.java | 17 +++++++++++++++++ .../spectrum/mixin/LivingEntityMixin.java | 14 +++++++++----- .../networking/SpectrumC2SPacketReceiver.java | 4 +++- .../networking/SpectrumS2CPacketReceiver.java | 18 ++++++++---------- 4 files changed, 37 insertions(+), 16 deletions(-) create mode 100644 src/main/java/de/dafuqs/spectrum/helpers/ParticleHelper.java diff --git a/src/main/java/de/dafuqs/spectrum/helpers/ParticleHelper.java b/src/main/java/de/dafuqs/spectrum/helpers/ParticleHelper.java new file mode 100644 index 0000000000..3fbcbc639b --- /dev/null +++ b/src/main/java/de/dafuqs/spectrum/helpers/ParticleHelper.java @@ -0,0 +1,17 @@ +package de.dafuqs.spectrum.helpers; + +import de.dafuqs.spectrum.particle.ParticlePattern; +import net.minecraft.particle.ParticleEffect; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; +import org.jetbrains.annotations.NotNull; + +public class ParticleHelper { + + public static void playParticleWithPatternAndVelocityClient(World world, Vec3d position, ParticleEffect particleEffect, @NotNull ParticlePattern pattern, double velocity) { + for (Vec3d vec3d : pattern.getVectors()) { + world.addParticle(particleEffect, position.getX(), position.getY(), position.getZ(), vec3d.x * velocity, vec3d.y * velocity, vec3d.z * velocity); + } + } + +} diff --git a/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java index 3183dde38c..0c2147d264 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java @@ -3,10 +3,14 @@ import de.dafuqs.spectrum.SpectrumCommon; import de.dafuqs.spectrum.azure_dike.AzureDikeProvider; import de.dafuqs.spectrum.enchantments.DisarmingEnchantment; +import de.dafuqs.spectrum.helpers.ParticleHelper; import de.dafuqs.spectrum.interfaces.ArmorWithHitEffect; import de.dafuqs.spectrum.items.ActivatableItem; import de.dafuqs.spectrum.items.tools.DreamflayerItem; import de.dafuqs.spectrum.items.trinkets.PuffCircletItem; +import de.dafuqs.spectrum.networking.SpectrumS2CPacketSender; +import de.dafuqs.spectrum.particle.ParticlePattern; +import de.dafuqs.spectrum.particle.SpectrumParticleTypes; import de.dafuqs.spectrum.registries.SpectrumEnchantments; import de.dafuqs.spectrum.registries.SpectrumItems; import de.dafuqs.spectrum.registries.SpectrumSoundEvents; @@ -29,6 +33,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundCategory; import net.minecraft.util.Pair; import net.minecraft.util.collection.DefaultedList; @@ -96,14 +101,13 @@ public abstract class LivingEntityMixin { thisEntity.fallDistance = 0; thisEntity.setVelocity(thisEntity.getVelocity().x, 0.5, thisEntity.getVelocity().z); - // TODO: fix. This breaks on dedicated server - /*if (thisEntity.world.isClient) { // it is split here so the particles spawn immediately, without network lag - SpectrumS2CPacketReceiver.playParticleWithPatternAndVelocityClient(thisEntity.getWorld(), thisEntity.getPos(), SpectrumParticleTypes.WHITE_CRAFTING, ParticlePattern.EIGHT, 0.4); - SpectrumS2CPacketReceiver.playParticleWithPatternAndVelocityClient(thisEntity.getWorld(), thisEntity.getPos(), SpectrumParticleTypes.BLUE_CRAFTING, ParticlePattern.EIGHT_OFFSET, 0.5); + if (thisEntity.world.isClient) { // it is split here so the particles spawn immediately, without network lag + ParticleHelper.playParticleWithPatternAndVelocityClient(thisEntity.getWorld(), thisEntity.getPos(), SpectrumParticleTypes.WHITE_CRAFTING, ParticlePattern.EIGHT, 0.4); + ParticleHelper.playParticleWithPatternAndVelocityClient(thisEntity.getWorld(), thisEntity.getPos(), SpectrumParticleTypes.BLUE_CRAFTING, ParticlePattern.EIGHT_OFFSET, 0.5); } else if (thisEntity instanceof ServerPlayerEntity serverPlayerEntity) { SpectrumS2CPacketSender.playParticleWithPatternAndVelocity(serverPlayerEntity, (ServerWorld) thisEntity.getWorld(), thisEntity.getPos(), SpectrumParticleTypes.WHITE_CRAFTING, ParticlePattern.EIGHT, 0.4); SpectrumS2CPacketSender.playParticleWithPatternAndVelocity(serverPlayerEntity, (ServerWorld) thisEntity.getWorld(), thisEntity.getPos(), SpectrumParticleTypes.BLUE_CRAFTING, ParticlePattern.EIGHT_OFFSET, 0.5); - }*/ + } thisEntity.getWorld().playSound(null, thisEntity.getBlockPos(), SpectrumSoundEvents.PUFF_CIRCLET_PFFT, SoundCategory.PLAYERS, 1.0F, 1.0F); } } diff --git a/src/main/java/de/dafuqs/spectrum/networking/SpectrumC2SPacketReceiver.java b/src/main/java/de/dafuqs/spectrum/networking/SpectrumC2SPacketReceiver.java index 3064ee975f..608ccd49ba 100644 --- a/src/main/java/de/dafuqs/spectrum/networking/SpectrumC2SPacketReceiver.java +++ b/src/main/java/de/dafuqs/spectrum/networking/SpectrumC2SPacketReceiver.java @@ -127,9 +127,11 @@ public static void registerC2SReceivers() { color = null; } + // send the newly selected color to all players that have the same gui open + // this is minus the player that selected that entry (since they have that info already) inkColorSelectedPacketReceiver.onInkColorSelectedPacket(color); for(ServerPlayerEntity serverPlayer : server.getPlayerManager().getPlayerList()) { - if(serverPlayer.currentScreenHandler instanceof InkColorSelectedPacketReceiver receiver && receiver.getBlockEntity() != null && receiver.getBlockEntity() == inkColorSelectedPacketReceiver.getBlockEntity()) { + if(serverPlayer.currentScreenHandler instanceof InkColorSelectedPacketReceiver receiver && serverPlayer != player && receiver.getBlockEntity() != null && receiver.getBlockEntity() == inkColorSelectedPacketReceiver.getBlockEntity()) { SpectrumS2CPacketSender.sendInkColorSelected(color, serverPlayer); } } diff --git a/src/main/java/de/dafuqs/spectrum/networking/SpectrumS2CPacketReceiver.java b/src/main/java/de/dafuqs/spectrum/networking/SpectrumS2CPacketReceiver.java index c53a31f04f..1ab77989f9 100644 --- a/src/main/java/de/dafuqs/spectrum/networking/SpectrumS2CPacketReceiver.java +++ b/src/main/java/de/dafuqs/spectrum/networking/SpectrumS2CPacketReceiver.java @@ -11,6 +11,7 @@ import de.dafuqs.spectrum.entity.entity.ShootingStarEntity; import de.dafuqs.spectrum.enums.PedestalRecipeTier; import de.dafuqs.spectrum.helpers.ColorHelper; +import de.dafuqs.spectrum.helpers.ParticleHelper; import de.dafuqs.spectrum.helpers.Support; import de.dafuqs.spectrum.inventories.InkColorSelectedPacketReceiver; import de.dafuqs.spectrum.mixin.client.accessors.BossBarHudAccessor; @@ -25,12 +26,16 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.networking.v1.PacketSender; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.block.Block; import net.minecraft.block.entity.BlockEntity; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.hud.BossBarHud; import net.minecraft.client.gui.hud.ClientBossBar; +import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketByteBuf; import net.minecraft.particle.ItemStackParticleEffect; import net.minecraft.particle.ParticleEffect; import net.minecraft.particle.ParticleType; @@ -125,7 +130,7 @@ public static void registerS2CReceivers() { if (particleType instanceof ParticleEffect particleEffect) { client.execute(() -> { // Everything in this lambda is running on the render thread - playParticleWithPatternAndVelocityClient(client.world, position, particleEffect, pattern, velocity); + ParticleHelper.playParticleWithPatternAndVelocityClient(client.world, position, particleEffect, pattern, velocity); }); } }); @@ -393,9 +398,8 @@ public static void registerS2CReceivers() { }); }); - // TODO: was does a ServerPlayNetworking receiver here?? - ServerPlayNetworking.registerGlobalReceiver(SpectrumS2CPackets.INK_COLOR_SELECTED, (server, player, handler, buf, responseSender) -> { - ScreenHandler screenHandler = player.currentScreenHandler; + ClientPlayNetworking.registerGlobalReceiver(SpectrumS2CPackets.INK_COLOR_SELECTED, (client, handler, buf, responseSender) -> { + ScreenHandler screenHandler = MinecraftClient.getInstance().player.currentScreenHandler; if(screenHandler instanceof InkColorSelectedPacketReceiver inkColorSelectedPacketReceiver) { boolean isSelection = buf.readBoolean(); @@ -424,10 +428,4 @@ public static void registerS2CReceivers() { }); } - public static void playParticleWithPatternAndVelocityClient(World world, Vec3d position, ParticleEffect particleEffect, @NotNull ParticlePattern pattern, double velocity) { - for (Vec3d vec3d : pattern.getVectors()) { - world.addParticle(particleEffect, position.getX(), position.getY(), position.getZ(), vec3d.x * velocity, vec3d.y * velocity, vec3d.z * velocity); - } - } - } \ No newline at end of file From 2aa930a2014a8d8308f9d2f8ae0c2757b416557c Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 23:12:54 +0200 Subject: [PATCH 0041/1051] extended outlines kind of work --- .../dafuqs/spectrum/mixin/client/WorldRendererMixin.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java index 306043bb5f..3a8bc99203 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java @@ -60,7 +60,7 @@ public abstract class WorldRendererMixin { private boolean renderedExtendedOutline = false; //TODO - /*@Inject(method = "render(Lnet/minecraft/client/util/math/MatrixStack;FJZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lnet/minecraft/client/render/LightmapTextureManager;Lnet/minecraft/util/math/Matrix4f;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/hit/HitResult;getType()Lnet/minecraft/util/hit/HitResult$Type;"), locals = LocalCapture.PRINT) + @Inject(method = "render(Lnet/minecraft/client/util/math/MatrixStack;FJZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lnet/minecraft/client/render/LightmapTextureManager;Lnet/minecraft/util/math/Matrix4f;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/hit/HitResult;getType()Lnet/minecraft/util/hit/HitResult$Type;"), locals = LocalCapture.CAPTURE_FAILHARD) private void renderExtendedBlockOutline(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f positionMatrix, CallbackInfo ci, Profiler profiler, boolean b, Vec3d vec3d, double d, double e, double f, Matrix4f matrix4f2, boolean b2, Frustum frustum2, float g, boolean b25, boolean b3, VertexConsumerProvider.Immediate immediate) { renderedExtendedOutline = false; HudRenderers.doNotRenderOverlay(); @@ -83,7 +83,7 @@ private void renderExtendedBlockOutline(MatrixStack matrices, float tickDelta, l } } } - }*/ + } private boolean renderPlacementStaffOutline(MatrixStack matrices, Camera camera, double d, double e, double f, VertexConsumerProvider.Immediate immediate, @NotNull BlockHitResult hitResult) { BlockPos lookingAtPos = hitResult.getBlockPos(); @@ -123,6 +123,7 @@ private boolean renderPlacementStaffOutline(MatrixStack matrices, Camera camera, HudRenderers.setItemStackToRender(new ItemStack(item), positions.size(), false); VertexConsumer linesBuffer = immediate.getBuffer(RenderLayer.getLines()); + // TODO: these outlines are really funky right now WorldRenderer.drawShapeOutline(matrices, linesBuffer, shape, (double) lookingAtPos.getX() - d, (double) lookingAtPos.getY() - e, (double) lookingAtPos.getZ() - f, 0.0F, 0.0F, 0.0F, 0.4F); return true; } @@ -168,8 +169,8 @@ private boolean renderExchangeStaffOutline(MatrixStack matrices, Camera camera, } HudRenderers.setItemStackToRender(new ItemStack(exchangeBlockItem), positions.size(), false); - VertexConsumer linesBuffer = immediate.getBuffer(RenderLayer.getLines()); + // TODO: these outlines are really funky right now WorldRenderer.drawShapeOutline(matrices, linesBuffer, shape, (double) lookingAtPos.getX() - d, (double) lookingAtPos.getY() - e, (double) lookingAtPos.getZ() - f, 0.0F, 0.0F, 0.0F, 0.4F); return true; } From 958d020ede95c07de77c426d7630373458f6ec43 Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Fri, 19 Aug 2022 23:15:52 +0200 Subject: [PATCH 0042/1051] more porting work --- .../dafuqs/spectrum/items/magic_items/EnderSpliceItem.java | 6 +++--- .../de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java index 3ff1e1f656..51410316db 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/EnderSpliceItem.java @@ -123,7 +123,7 @@ public ItemStack finishUsing(ItemStack itemStack, World world, LivingEntity user } else { // Nothing stored => Store current position setTeleportTargetPos(itemStack, playerEntity.getEntityWorld(), playerEntity.getPos()); - world.playSound(null, playerEntity.getBlockPos(), SpectrumSoundEvents.ENDER_SPLICE_BOUND, SoundCategory.PLAYERS, 1.0F, 1.0F); // TODO: test + world.playSound(null, playerEntity.getBlockPos(), SpectrumSoundEvents.ENDER_SPLICE_BOUND, SoundCategory.PLAYERS, 1.0F, 1.0F); } } playerEntity.incrementStat(Stats.USED.getOrCreateStat(this)); @@ -175,8 +175,8 @@ private void teleportPlayerToPos(World world, LivingEntity user, PlayerEntity pl // make sure the sound plays even when the player currently teleports if (playerEntity instanceof ServerPlayerEntity) { - world.playSound(null, playerEntity.getBlockPos(), SpectrumSoundEvents.PLAYER_TELEPORTS, SoundCategory.PLAYERS, 1.0F, 1.0F); // TODO: test - world.playSound(null, playerEntity.getBlockPos(), SoundEvents.BLOCK_GLASS_BREAK, SoundCategory.PLAYERS, 1.0F, 1.0F); // TODO: test + world.playSound(null, playerEntity.getBlockPos(), SpectrumSoundEvents.PLAYER_TELEPORTS, SoundCategory.PLAYERS, 1.0F, 1.0F); + world.playSound(null, playerEntity.getBlockPos(), SoundEvents.BLOCK_GLASS_BREAK, SoundCategory.PLAYERS, 1.0F, 1.0F); } } } diff --git a/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java index 3a8bc99203..1c65c622ed 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/client/WorldRendererMixin.java @@ -59,7 +59,6 @@ public abstract class WorldRendererMixin { @Unique private boolean renderedExtendedOutline = false; - //TODO @Inject(method = "render(Lnet/minecraft/client/util/math/MatrixStack;FJZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lnet/minecraft/client/render/LightmapTextureManager;Lnet/minecraft/util/math/Matrix4f;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/hit/HitResult;getType()Lnet/minecraft/util/hit/HitResult$Type;"), locals = LocalCapture.CAPTURE_FAILHARD) private void renderExtendedBlockOutline(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f positionMatrix, CallbackInfo ci, Profiler profiler, boolean b, Vec3d vec3d, double d, double e, double f, Matrix4f matrix4f2, boolean b2, Frustum frustum2, float g, boolean b25, boolean b3, VertexConsumerProvider.Immediate immediate) { renderedExtendedOutline = false; From c0f67155cb185130c9c37eb9e6ab7d17c70f0f3e Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Sat, 20 Aug 2022 12:28:21 +0200 Subject: [PATCH 0043/1051] fix InkPowered.canUse() on servers --- .../java/de/dafuqs/spectrum/energy/InkPowered.java | 14 +++++++------- .../items/magic_items/ExchangeStaffItem.java | 2 +- .../items/magic_items/NaturesStaffItem.java | 5 +++-- .../items/magic_items/PlacementStaffItem.java | 2 +- .../items/magic_items/RadianceStaffItem.java | 2 +- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/de/dafuqs/spectrum/energy/InkPowered.java b/src/main/java/de/dafuqs/spectrum/energy/InkPowered.java index cafcfa16d5..24694bda25 100644 --- a/src/main/java/de/dafuqs/spectrum/energy/InkPowered.java +++ b/src/main/java/de/dafuqs/spectrum/energy/InkPowered.java @@ -29,11 +29,11 @@ public interface InkPowered { Identifier REQUIRED_ADVANCEMENT = new Identifier(SpectrumCommon.MOD_ID, "milestones/unlock_ink_use"); @Environment(EnvType.CLIENT) - static boolean canUse() { - return canUse(MinecraftClient.getInstance().player); + static boolean canUseClient() { + return canUseClient(MinecraftClient.getInstance().player); } - private static boolean canUse(PlayerEntity playerEntity) { + static boolean canUseClient(PlayerEntity playerEntity) { return AdvancementHelper.hasAdvancement(playerEntity, InkPowered.REQUIRED_ADVANCEMENT); } @@ -48,7 +48,7 @@ private static boolean canUse(PlayerEntity playerEntity) { * These are added as the player facing tooltip **/ default void addInkPoweredTooltip(List tooltip) { - if(canUse()) { + if(canUseClient()) { if (getUsedColors().size() > 1) { tooltip.add(Text.translatable("spectrum.tooltip.ink_powered.prefix").formatted(Formatting.GRAY)); for (InkColor color : getUsedColors()) { @@ -122,7 +122,7 @@ static boolean tryDrainEnergy(@NotNull PlayerEntity player, InkColor color, long if(player.isCreative()) { return true; } - if(!canUse(player)) { + if(!canUseClient(player)) { return false; } @@ -161,7 +161,7 @@ static long getAvailableInk(@NotNull PlayerEntity player, InkColor color) { if(player.isCreative()) { return Long.MAX_VALUE; } - if(!canUse(player)) { + if(!canUseClient(player)) { return 0; } @@ -188,7 +188,7 @@ static long getAvailableInk(@NotNull PlayerEntity player, InkColor color) { } static boolean hasAvailableInk(PlayerEntity player, InkColor color, long amount) { - if(!canUse(player)) { + if(!canUseClient(player)) { return false; } diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/ExchangeStaffItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/ExchangeStaffItem.java index d2460e8802..3f840e8c9e 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/ExchangeStaffItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/ExchangeStaffItem.java @@ -123,7 +123,7 @@ public static ActionResult exchange(World world, BlockPos pos, @NotNull PlayerEn } else { if (!player.isCreative()) { int inkForBlocksAvailableAmount = 1 + (int) InkPowered.getAvailableInk(player, USED_COLOR) / INK_COST_PER_BLOCK; - if (InkPowered.canUse()) { + if (InkPowered.canUseClient(player)) { exchangedForBlockItemCount = Math.min(exchangedForBlockItemCount, inkForBlocksAvailableAmount); } else { exchangedForBlockItemCount = 0; diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java index cf0efa355c..8d0cdd28a6 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/NaturesStaffItem.java @@ -173,17 +173,18 @@ public static boolean useOnGround(@NotNull World world, BlockPos blockPos, @Null } @Override + @Environment(EnvType.CLIENT) public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { int efficiencyLevel = EnchantmentHelper.getLevel(Enchantments.EFFICIENCY, itemStack); if (efficiencyLevel == 0) { - if(InkPowered.canUse()) { + if(InkPowered.canUseClient()) { tooltip.add(Text.translatable("item.spectrum.natures_staff.tooltip_with_ink")); } else { tooltip.add(Text.translatable("item.spectrum.natures_staff.tooltip")); } } else { int chancePercent = (int) Math.round(2.0 / (2 + efficiencyLevel) * 100); - if(InkPowered.canUse()) { + if(InkPowered.canUseClient()) { tooltip.add(Text.translatable("item.spectrum.natures_staff.tooltip_with_ink_and_chance", chancePercent)); } else { tooltip.add(Text.translatable("item.spectrum.natures_staff.tooltip_with_chance", chancePercent)); diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/PlacementStaffItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/PlacementStaffItem.java index 9021817ed8..3c30b9524d 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/PlacementStaffItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/PlacementStaffItem.java @@ -99,7 +99,7 @@ public ActionResult useOnBlock(ItemUsageContext context) { targetBlockItem = inventoryItemAndCount.getB(); count = inventoryItemAndCount.getC(); - if(InkPowered.canUse()) { + if(InkPowered.canUseClient(player)) { count = Math.min(count, 1 + (int) InkPowered.getAvailableInk(player, USED_COLOR) / INK_COST_PER_BLOCK); } else { count = 0; diff --git a/src/main/java/de/dafuqs/spectrum/items/magic_items/RadianceStaffItem.java b/src/main/java/de/dafuqs/spectrum/items/magic_items/RadianceStaffItem.java index c4d39d2f41..abc5a541e6 100644 --- a/src/main/java/de/dafuqs/spectrum/items/magic_items/RadianceStaffItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/magic_items/RadianceStaffItem.java @@ -80,7 +80,7 @@ public static void playDenySound(World world, PlayerEntity playerEntity) { @Override @Environment(EnvType.CLIENT) public void appendTooltip(ItemStack itemStack, World world, List tooltip, TooltipContext tooltipContext) { - if(InkPowered.canUse()) { + if(InkPowered.canUseClient()) { tooltip.add(Text.translatable("item.spectrum.light_staff.tooltip.ink")); } else { tooltip.add(Text.translatable("item.spectrum.light_staff.tooltip")); From 8aeb251a8d8026b0a31792de6538c817a5fcfddc Mon Sep 17 00:00:00 2001 From: DaFuqs Date: Mon, 22 Aug 2022 20:29:25 +0200 Subject: [PATCH 0044/1051] updated icon --- images/icons_banners/icon.xcf | Bin 1073011 -> 1268497 bytes images/icons_banners/icon_black.png | Bin 0 -> 183207 bytes images/icons_banners/icon_black_bg.png | Bin 261847 -> 0 bytes images/icons_banners/icon_transparent.png | Bin 0 -> 176266 bytes src/main/resources/assets/spectrum/icon.png | Bin 256640 -> 176266 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/icons_banners/icon_black.png delete mode 100644 images/icons_banners/icon_black_bg.png create mode 100644 images/icons_banners/icon_transparent.png diff --git a/images/icons_banners/icon.xcf b/images/icons_banners/icon.xcf index 7322fc1f7644ae3f1653ae0cba9f9a7b6544d93d..9079edfe069840b933012b66010b09369abe5176 100644 GIT binary patch delta 333665 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�tG@^V$@Og=E&8$TYdTvr&Lvzkeqjx) zoy@j$%{6}U*G%jpJZw^AI)$l>%uY3AY6@$)6NiUg>O^2+<09L2rZF<=j9qJ*gstuD z>eDnqfY`1w^+N#ZU2zKdbqc$su0Z}vp{pK~Y}2)l6T8BGrW-yEll_?LCXOw4m;9S< z_E_E3_Mt)_!_?Z3bgReSsj(kIE2o5o(dMbNZ=pk{-oAm3!h5P7$4^Dy!*-lJmB7>T zar#sMLi5MjQ?s2q&YuR`(c|K2xE(w$pGMo}apg48CK`JRI3fii(5|#u;?#+@wwXIs z_G4{(GkL1*N64o1GkQX#u?J60BGcJT~Xdem>jY*_mJ@ihDNeHc+ z5Ew?AC(^`1hfchSfsVQ-IO7iEC!+6zJ4~KPKxp|eeIfvx`NQmqIZPeqPlChfVeuq9 z3?7zGqC@kra*`Mlk39hokpeMjX|Keo6GLq;ccM&ULwhfIqD>-XUit|+AxZ`WPfTLd z**)U~O3koDo~A>L+O6+}C)%(MOga-~xB_figskgiWx|F+M+jDX=)_Q()QD7j1hNYp zULw3xCbKd}tXg`S+^Y|jr%|NvEB$G3Z)GU{$|Os3WhnnDNH%7DsQxMh@YaVqTJ+=F z|4Ct{*&=5>#4Pu8A@3Hzq#vvPKx+&A&}m^zEBQU7y3bMVI7nga8t=;%r4>w zsYU7_P9CE?iICN30Kbs~$VCg`EO-!`=nEOBN`t-HnS783d(E@TM8_^nyq?Oo%tY+T z>>HoRJ@G7h5S}PK;VgMzO;kL$iySGDWGO9*2g1Zemkums;UI|29gv2z$QORXR1^s@{yj30Ap$=kNO zljwPW4|8{Ci~~a=hA;f3(RZ!gduH%MYgl8QkkrWq)<5@7Jc*et8O!lN7@2G`^pj zruO5c56Zg{k_in^GqUf1nZjvsKL%#XAWRy})K2C7JeX;oR(5sl!mj74Y|HG5uFSsi zUD*{+qx<1q#T8DI`>+LF&xO^g?&_{LE$$1uCc3n5Aq)FKWNzPag=uC#j7;xGkjecR zGQJ;o|NQxsOvbn?ehx2l-`j~{iPO-&xD#<@tl+-96LM87YhT%MTpi2YS9gN0fu-;3 zJCu%a(lJ^0z2Un?Dn_c5WN)=fZo!hH>8H8sGD1!L#(g`g8d`^W2s{ zSC=+_thqo=_xfC!tit)L!RRZ`p+A!6mz~Easd;J=C&y2I7$M`&02?C{2VfLVf|D4) zD1#$ufKfYv{8s$Tn-?bnmW)-JD8E(E1+<3Fq4m#%c?NBw8JoYg&`ER<9Y=@IQM4Puh)ld& z@^2%biO>+mTjFnHSiy;W%lmBti%HV06xy7qORZ1zTglI)xd2_qTw3zbzLogQ`vvsG zq4z8M7RO@?pqF(k`k9O^V@0s!xy1I+XX?2XbU)M2P5U!rX<4_d&#ZIH_)NI=7hC^K zyk`D_%I};&{Y?JRmOoRMHh&q2gzEu?j2)ef9gB<|hm4&F89Q+@c2Z>QWU10ppq^kE za!bwA$=Yxg(l&U36@pZ~c;#ye-odqxgENt@hg2&y}3|tJGXRx;mekO+rDM;<6gGBuU@wOmbLJ{GH$#4 zmaesIiflA~Y)Nd?erzdhQ)$_CmUmvLY?EmTHM1^IP1IWGY?tT}Yet>*<*PP5#%+vPDU5TJf*EWlLHQE)rjPe=s>-T6gFd{$Oq#tgX{8tTxs_R1Y_-^$U3mY^IJfiMA$r}~4;R-93+-j^#S-_{Ki<1Y-s`zlT}aEV z-bFHE&n=1@|F?5W{pa8aEa?|Yl#4eeuLld<%kcvHQhPR;k_8!A1Fr}yNW*z_nj zl#fY?-?iy+rDd0PL;6_RWKg}Q-h@=osq`D-$Lc1->OK9Y#z6*4%jla7t7RL${QKq& zDyN*c`C8i6CPQkuUB02bZ_$3)Qf|o0mi?Y~lLXTnA}#NIbCb49hen6VNB28u^HsDZ znEo%@2~MV*+sPX$#C~hJUy?7CmbNiX+%Vo3*hjtT+a`D7FShmm-&)BV*83KFn(XQR ztNGWK{hqSi>>vDZE$>VJ^nR~3^}dWRPvzU>C4EEw(?~N+rQP;RQ=My7H*o$ zmj0!E!*bsjZyGf1so&(Ub(3@jTIQGB&i9p@%CcpBY0y${%F9;pOO2L(Q(U&3FI8Fw zEs5hoUn;b$n;xy;H2kH^Im1|yFD3fDUz;}tSD+pHQlKsT+T}pkqa*&MM~C!l?IyE| zY2r)o9vAa#m6pRc;hyon`fG)K9kz-0wD+}N%jYfWp8CG=YmpZDkzXqJ6j}l;R*L#R zqhG4`_}l+lbfa8?eviLAc8m)%?y>MMwwstbUt0In+&-2_azgzgcFxAej68G0X-20p?=yR(&mA(}I(O^&Sb26mA6#r3Q+7x~M z?_bLQsFDcCmer~9j|%;P&tLNMg%1Q6`qoF<9pN|X-20{Rf%S>-f%q>fefk}bKJk|t zeG+{#On&_iRSSNp(xY&swCvI5@-Jn2RQ3_hdlY)iPjvS2&U*y+6Xlm8od%u$iCCS5 z9)TX~1Mgq_uj54YShQcZluzVk%jWXPKmJ7gtCmK~Kl0@^;}h?%S_%4vkIm&#No-cb z!FKhz-(a068phn;i8X&dQkOP|f1rM>oVNt-gZ{B}-jcWj=EuUamHgyoixsu+n4ClT zrSgIG@k?9#rF3q4{}BH~=f~O~E9@owL+lgtm!5mxl>Q;|iS^5uo4kMWTjsK5&HYxG zZ5D@FbCH(wV@skH{IR9b;y!Vl%%0xw{Wf>wm%^v!vPWF@==6x68uYM$&F@`*C!H^o zKh>69@^UAYos>^mfs37#WsgFS`l-C^(Uv_DJ^H8O$KIzBd+EzQkv@Yy;ZuP=^Y`*U z$^YQdXMO5@EPm?U3DW0(qsKRfKMl?;ciHrJ5dJ985u`2rgWnea=+Sm)d&{=;$KX87 z3BBK$Y?c1#(31X1_?_`fn|+;m^!MUFiNDj%Te05@|0MlRUA9OL{=M=${)gC)MRxv= z=I(H+#*MG;q5RDioG=3*6?F3(J{m$m1l33=_O3&?cD>Jv)>R)np?)?|z z+|F|kUiKE|+PPJltIK1&Kay*IZdK>fa;x{xwYiu*H>tAyU(U_dxqp_xKi?mGZ(qFs z>xmk@e`lipFaCNoexbJe|MUN?zTx_1+rok7vV>cViEDxhX_5)3UyaZ&@0JbJm!;kc zfy%P%TbT@YzXV*3Z1y_y;8il)J<=3&1cWJi9w@`eld5&{O%!Cjp(0}q9T{nu$WX(o zuCOpc5Zi8qT$I@e(*>m&sW#%(D&eq1wM1|%Rn4+frkZRzja)UtDe_g~SdC)U;0wxC zxYLbFRe&r>dGp3fHPcwF!px~A8yBnb#w*oW-DPGP->y7ghgo!)*)2bsxNi5YSyf(wqCB&*z>z^}&D-laj}7}SQl%> zb*-9Ws#acCs=~!9>rz!jidE_2&(^)Ff~{VBYhAy1dEL9A!OqJL1akPwaPp)Z^{$&7 zD5&^AMaBjmS$p+vWFRheXdpB9S?S`zUAFCkw$ylbm;J<`Xs`GwAm}OqFNgjT0k9D5 zELkZLG_1Wr3?1RTaWpZjK@x3{&60L8U{((@XaPQD4xJn1Z|XN-9%82lWhB8Mdg6l` zc5JYMj0{%k2@Nh_JA;czd+-W9=HOLqWAGYM8@x`BGDzI?T>rc>mf+^GL@bFu{e}yR z{HC(poJ8kuDmS<`+A>-Rw=-job{m>6@w>x*2v; z92dG7VQ<3?-i*1io0equ{b1`p!}l14CDd ze?`$H;$d-gmZX&=8q(h=jgD~Q44M$uD2Fzx5bKe?#%Xa$)Z zts &_~$A~G^+AVZ^9kqIAdmqx5Oyj`>C5j_^nM)6gCJi`*Rv zD|jdPMfQ%2W#0*Xk-np1ne5|yk-DRu+o3NKcMNQuBSK%q?pT~lyQ8pA^o~ux!cn0w z!gn0{Vf4=k2|NN@o`sd~!gI~x<>kB_FX8xGou|kCZZ$It|L}m*d(wMWt1_G_VSTmg5e}5rSE^(m{+MmC zLJa-if3nLyKO>_`m69@98h$07Je7K~;}rtqYl9TkdlKVUD6j*AaSY{g44ZL$iFCO) z2#{YUP42CM>W+U#%HCDjQST5X=e9vKxH?d}Z&Ekq4TAlz!6$(H*j=M)iqESiun(eD zC@m!25FiP~2J($HQUO(Dc%UPpc7kvh0AC5c=JVFUxivspUG|gHy42J<_3>}b&zV_v zh=br#d!V>}V-@~D7+ocB7Ny_kV#jFb{PIU=zg8uPcf%)1rD=!YDP++WG%Fusb@Fiv zv}K4>g6mrzAvy^h)o+j%_?ILJceFw@``>@E%RWDoqDrlmGT9Y=<(@p1eX_F^Ley)c z6y<&rvsb9d14D5JrEvyZadwGBwl@e>UnYO;Eke~lBbDwdG^lq7S95m>`ClC={WmH8 z@&;k|*G6un54o|wHu8DV1*ks)U{awLkq@5&WT4ncz*-|w&j-*onB_izu7P(d`U3dp z5AA!Yl_h?zk@6B=w#6lWUVt^=m4fS3Ct28qza&u4 zQEFUuDf)GV&2K>=x(qeyjh0QpM+zQ6muhmlS0Pru0*7jyG(NGpN(o31qFIFrMdqMi z`Vo`}l6$Oz5K;1ubuc0c)5!!Svg9q>;6#z4lMbw^Dr-+i$i7)&ndlfe@pDkZeH)V2 zRj5=~i1)t<^|1v+ya5N`5?ssIAq6zShgU&|i_O4M9O_<*bciJEpIk?zVk?ETATehd zv^D51B!n%=&Lo5lNC<; zA~bry-hmiINyNbww!Q^#=Q4bx zH^w$46RFSyN2$r#UWG0B3dE&#GVR3fDn%4QjjmgTfJAbiUp*1%2zGO0708H^{Hp^Q zN%%!3^SUhA!*&cpGNaRrpI+2)Vxrp|J%ryg?ZL z5(LWE3ClM@gjYd>i`~F+96nyECvPQPNH@8jNQG6ZY(YrQGD2&ROi0>V5|>HZ8j-XG z_t<0HlX;4yU;#4TQ;|`s_EjM%hI=MBp_0sML+CL{Zgt?nIHbCUXAv+$r{Z4_%usuz zi;buZ*h@g`Da~Al9lV}8d9&O~tasq!P*rerh0Sk4m$?iJ=#808)j?`X!3=70x>w;q zz5-upon$z%zdG|k2en^?^+Wz$zX7N!A^1PgZK!GU{Jt#9!<~)103+X$uByXHvn)IZMOgGXqiB&^BocOS%l16TF_md6wY|GV0+A zR(a&c;YqLYdM37N3^ekxNRriH4f@<`i(##k78_!Sn+!r~^^sY|=u9*Afe=ztb#iW1 zio2>54HTPoK!T7UB?8x41O%ZM)>?#Ecc@62gvDK^MOP*P!qDN20XV1{|tjqJ7pojJb^)4NgJCP}wZ-nIal z>UNMRNPRoR3+n22gbBxmZNQ^(ahr0uM{C>A3}FS;AmBJn^Qc7e2)pSV4h$I1)&6HZ~I7&_<}EZDhLS z5CAvDu14B|Kpqv4)2YKDhCcQ(Ye*I?@L&}F+{;Z$K? zg%k(_4mAm5WTvHI?wOq^9BUR*@XMn@nIR2>_cf^0GCVMG3pnt zjm6Cfq{7-*a-sTBn80UFk^^jmaeCW7acXQX3%_#Gwl+>Pd2-r*`9!w0MM@!Z5mZ)K zVcryPd(4jD88Sagx8Vs5vTX&DbiNILd{AtY$2%yuEkLf?4l*mMw?iZXueKvhd@i(I z&}(q9O-bA1wKnWRs6jOfnmb+dxI_&JyXze1AmfX{=<9LNP!T@wgU2c^?u&% z!OZ5pZ3TwkI()w-?7vIo+g~P;^(wiiYcTY9va{Wef9SH8h4y-b(h(qdL^WO(&HIRlJuUQGspbK)r6t_S&o&4Gm zC}#pgF%ZuNpVFWoAWDj>PV%lwja8L;i(9|X6CYXE9V?)vosSmXXw{p8+Hlx+wGrMS zOxuX=NXYn(fK2YJLSbgEYz;N|0;_B)G2|m3afc-$9oWOT-XsFM3K^i zFj9HoAhicJ(s*DZtp_?X_&`O59so}}kq06&_JH!+JBbHtJE;e&JLv~?s@9|*z%FFn zj>H3L+h4gO_Q3U5L~vNfKm&TBEaG7RNJ-WWfwjGpWub#02u6YX2O(Bpsj;XBOCA8f zYpggz);*-_HC8AQ2M%=@NCAa@9b|=u61+YOgv-JJGyt|F>^=<&BI#t5$I0%5Sa3mt zKWGiYF3U1hsk3v1+B$dX{MnAWeVH{GE>SP13F~{E3OOq~Irb@XK$U}6fm|8V^2$Km z)SxV{3|PE{1h*A<#Xd=TWuR{c$-`QKVQi5!X0vs5;IQxNAiSv{qni>kz9}HxhHe8cn~~chGIpE#*PDskYn!RttDEWDbt=!KZ^I8{xsil>TWb3&j>K;J%O5x_ zTA%?OQPv*u;Uvj&Coruyvn*>61b#}__1hs9tEsUT2@4#6oog(VB3=g*u?SjTcc`>b zV{ruUdXV)PN)Yob;3*4*&j6N^(DO7ngi)w{3LL`Fb(fWJpa5E|lpwUL)XKR+eVn`W z{cKZhUuFe{OO(86Le*ZU$j!=Tj(v*kU*+Ic@KT0oyfPB^G-$>vBbK@$)oleXu+MB> z8R>gauh1s#)sfBC)se%#tE2Fqf{gA-E-Jn!Ad`EmkcFA)?J?t{EP-FHpiEi+Dh2-Q zlrdO^KD@T)y}(1XC%lLvr59nO^1?xCFKndo!bDmxbY$>_iVVE~8TKMCL}cs*1*rED zFV^-_FIM-`FX|MJanmng__0n(;)OKyS4xS!@E1F9SfW5<)JIt}#m9mqtF%Cm-pjIx zK@jjLJ=I@?SlXxdRC&R21|Z)W3%rO=K{PCn#S)yM%2pYkbCA^+N>4R-&<@8Ndj^=2 zgkPt@0*tz_^Au=+Ay!k6;P6?jiy#cEl)Je?iJQCh{cKMiUS_?8OO&l?La$z@P|eC- zj(v*kU**_U(9Vaa+D`a^>DN(VC6dxk=7BOO>=YTMP;?o#nVppfshw3Uz=st|;z()W zMo|h&n5=S;gER&w4VK=Za!n(jqjt?8!=rx9 zBIjfET97P|)oa357>rrFCT>N6snu)pR%B=O8VQdfl)e?*S-WOzSx9Tkq$jw=Z@=bj z@!PM3xA^VX$TmdAwuG1Rf2(bVZ<~HO6jm20ZDwvO*9)6P1|w8j24`k-<#uXw6$^x6 z)sZ+-f?2!Deqp4>$|kF~4fnc@vRJZYjpPI!>0DQlVaD(pOPMgPZ^s$gYqyiv*I49a z<#y(J?RM^Zg@sQ_w@cRxw<|1qRK1?PT?bTFSquprxElX|X?wTdDz7~6ljnRs?}N7w z_^@pbhNMzJSJm5gwcfHV*98Q#Ed{s%Tw`MnwkyU&VuFFkj$%6{WnQJQQPO&)M7$S+ zA&%F-X%RwHm=?ZiazBU^L)oKF{(_bvm6Yy;9FyJiqVv_gm{Z?CrhR zTDE`R^}D=hT4;Y>j|(%k4MDpaj;ZU!@51G0r)*SHt12YQICvGdNORWXU}-4 zXV-W`Pv>}JPsez3Pj;ehyroAu(KO!Lqn#*^xAzz*Evh{h+KbK}2Q|j79uIxSt{$mB zWF*<$BlpJ)M!R~{{^-Q69=$)nn*H91-91*nb7FVeP?LBe7 zf=&7*Y_Y%kb@-i~Z))malj6g(KgUFJR^CuJ6iU?}9OkP)4MHRmgwc zMZXYh@a@|5o%O)QI@BQ9jb^~a`VZLfWcPO=-_zX`C*iyMU4d`!?(a$uc2l;b>$}Q> z>UT{K+9_qy`d#aTmhalB$JFtl@w?6k4d3meP7~kt>B4t=9!S$MR+)~7Xww1KnD&U6 z(+<|2wy^HBf%T_#Y%r~2qiHz>lIaXvoZj=GG`;IV!*u6^#_5g+&C}V}Z4X+em9Lu~ zv`%YZmmjoG8z>;E(-xYD&S?jg#I9)%;l!@#t&bN%hKt?P@YIN^ zu0+4nVfr5$a+v^(9njhDj&Jaw%=n}H&LNR*>%ZkHDu_bJ2X#7ypvh@5h=`nAPe@*S zsR)KF6H27%#Vj8hK>o&gr2>}!&?LMTEOp7SG1jGjJJ#ph?hYaa!a97f-9hUQd$7hI z_F}Wc+8_1_RR6GFp!|oo!L7r8cqez$!#@|%pL12|a31<;>kPiB9j4tHlxp(fpCMjQ z1R8@X$mn#Yv8D~`aKmX*sZi5LoSJ$>t_5e}nkl%%SQXYR z`lv_ZGeON3EIN~ocr{n>;EW7<9LkYw(ofGQBX%v|Wci3Z>7G$XtXhO89Z@FjGx~^$ z=hn1I>x?m?*Al^vGuDV!D+sQgaYmF{NpSUyJ0jH@I9s2T&-f!*ts;1Krki$sa^DZE z#URM;c|EChz#LDIC+KJf^znvVumDrXo7sAgLF$0a2&)V@J@$dE%ejOLq7d>yolYTW za#{>J46+HB7mO-`A*-EIk8>bq71Y3`q=Q9-WR)J{fO4=r-qfQXP!Fa>#xwPRevtZb zJ@NtbU@Xu&7&5kH2b_aGqnmrs9q+^~ilc>oE^10*!+z$Y|W(*rOfP;f&94^`HR{ z;Y~gAK@09P!Z!6}2kjoE&t;r#ggbDj$LOzcz6-Y)a~l|$b8ay3mU@&_IC_uUU+B>U zR~d^7T)^p3`{bUWKW4bjxx}~}asd|}_Xj<8oq3$Q9dkJ|zchbY?6*17;j!eiQNPs_ z!KFS0Zo=Ij4W=`;GymjN>nYTON>8cIq@D&&(rL|lD)|FY?{Ob(3MB+{l&JlfBf89S zi$R`U{7@^H4-zC2I!u4ikc%c@>Vsx>0Avgvm6<@4Th6pSy7gVI9D}3^F(0DSD+Eo> zi$RA;BmwghS4A*n#a05dv6!`719Ay@tcZrKGOdrQW90`;)9R>BgaLch7^61dv@~kb zw{Df_eO?2<~ z1sBhv)m(7!Da(Lw;M)rpz9M{mn(_^J8eXalsx)s0_5qxPnTu|^V zx~qfydJnhjJcGM+?q1?g0^BYejTh`oXwG?Xc@*X5C92F^k_HvH3FpQz{Zf*%6ske9 z#qF>Hm+M@DtBcMhojw^{6TEXlr(GYdE*Jva7c7DKESXC)lzF2r&2X+zD-8KYF4=Id zP(Ok=iPvyPFlo@fl1hiacg!oy1@#8wih9`QRQ(89hTXp_s@X8e% zZXTA78`NfZ;l^RP&h6v+Vdc0<+##+W*8a?u!+QE>M>=fQc?on6=hnemf5jG$+plf< z{Io3|cWBM6MW5Ujj!Pfpm>ib{M#od-1D8N}Tovda*Fp2Jf7}r09=AZ9nUHq_hLYxp z1@m4jht(s-aStXP)?hv?JFFkkj)ySghbiB?5Aj+Ik7l81Ym@|($LJY!ZVlK65&{2u-p%6?uU|*4b^F8M? z@n=r)Tm&mNC+l~m0~(&xm-jR96gV4KxX~^u8hK#$} zLFG4QpK(+fGSWVoz?*}=`3(YL^Ykh!jSZSj>(WLFd90-m8r1mvOkeV-1}P$IC1)%!|V zCcm>e%1mL!_k+7qpDK`AUhju@^|Q(Q5yda!_Y-XNegPZ2U%IO>WBKow@5;8jxac1Nj{C-^L*$taG zS+m6LS~i?>Y1E!UbX$|_o;jni4pr-(F{2J@c#h~vWdYW!I&B8$DKo}kD%Z@qE6
    -`cpE(az=Oxe`%&mj9erVGl zI`HDK{n)0{Put?KLu+m=`sB7SEM3eo8I}b`!z6Fxhr=X)gZ{7%nxG-j9kvA8!;Zkz zf_QW=hCR>#eSz9A+1~i-a3oM3jxYN7(r_ZMh}8#6SZ1iv9FZ!G7B2>mr9pKxxhPEp zkM+?Q48icCJP|$CKxrZYef$FGr36Y4hd>!5t$d;al9WEth}wxvu!&|+$45Rps^PbS z3Vs_X<99sXRo4M^Q6%igM`vb`!ufBHT(Y!%q~DWm?8vMgKR((sl4gE%5=Z(y0h=jzmLE-7Colsre4TabSgBLPDrjzg`C9Fiv3h5QH9CLwT2FKHlLv)+ zI)Cc;TQ2gKjvj9Fmkx>mb?&~af1-%IeKew<$gnh<>xN3C`%}E;pS4dif^QLVCf>$Z zz<2J-*q`5(um|sMABXPR6F+rO8ffCDk8IMM_{CjmQpd`Z8djZDCVr9L)h1;eeNw`j zlfSr|4H=Wa#OhdSNW&^a3RWGGvHDPkHHLl#`%A}vx~mQS)bY1m#_E+I;&rO zn~3tUHmhBI=P~)@v&z+7cID#oc_N_fik7n=f=;RQ#=!Z**Q^{2jj0dA0F_e53Ot zuRi`$$KUX6|4YX&M3t?)($>E}@`~m^b^PpCqGVfMw(Z{^{|OD~kB-l0|KwIa|Ljk$ zx@|iD(QQt9(TiH$f3w%=KDgKIKCsvCerIpcO;Yy#(%z`MxL3Mg+#7@P{bX;UJK3w; zkM|b4)f|t&E581@4g9Z>9+Rz z_YGKUx4Ab+?`sJ6TDy(C;e8d>-mUHBpR}-!Zgp>RUm{Dq+KsyIzDh&_HGH;&r)TlL zS#87GoL{)_RCi)sZcw=ISDU)C+sXZaN04sE0+rjLK=pPYP`~YgX;Zg;+r1ys(Y$R7 zv~F7ho!iF!tTVradt1LRcX}}Iwsv3XbYa15<-XeKz{1;doyE5^Sl$}n{xNEzZ+!bl znEoK(^48@Ya?Gj`%&#_dOV!}E4l8%dRUa1crXzubMb$#LR&`);HR;x?HY};e-DcH< z6{}&lRW)FxYS8UewcAE#x$1ShRTb7Cm~uNcIxAJT+pkIlo2qtqP|aY?RjWHhwAoTM zL2vHoX)yP*G@N@ojpz2K$=trQIJY+~&Fx7W=60o(xvn&uXq=-6+(gq{2exId4ZCx$ z727t~f^DB`##ZMVQwdwacFmPjDV^9gS4w4UF;%fis$t{Qz=o-b4N@EHq0!nk=cew& z?m0X4xlJ}{%~@%{ZKX+j&Pe%#AY37;r~EY#&hIvJYN|{+aGki465&jpxReqho|-gd zslf=}IA_7lNdx9g8gto@#aQ1s=T4&EA2KIZxHqZIDa2Xe%mtImoC=rV(v&|b z`yfvRlNp{n$pg`{&D1Hc&a^3aQX6t6*@`WlGp20ekjyn_PH{^bl=;$}J!J^4%@^iS zkij`=KAH2TRKfN6crKgprW8DXQlF3JBs?Z5;e~TDUWOM;8uR{~f~OBf^z-Jl39dI3 z!`-=5pRjQfI@xpPgb6Rwz*{?Ez)Qr9IcGwfGKR{;^*MJ!oyv~sLk)FLnUasGLlyd| zbN+-hr7#;c(WcA=6WNr?tkjGr&xI2@b5jfbw&o^-35^_Y`;W$Q`u0upk0y@sM;ojC z(OGV~nN^~j>L0!3%1x;f-<1F8!(>?Y$8foPQ-MXxrJGtMB%wTBF5J{B!Od(oSx#=6 z6%STij&52N7gkyhZ#oql*0Ai~^eQH-vh3aTD+a7-*(Ha)qTQ6B&dso*!djNCn{h>k z?OZl*CKc(XJlndg-z-*CA{waSE1-cdgC;0}HkjQkR2;BSak)~V;&bIpO)9}`#X>7=B>DbW!LOkG@63T*DSa#xN^;$4Oh(NY&POdm6iZcnhjL_q9)q(WqH=e(}kxk zE3+P+i5IM>>9RKK;98zwxx%w%4Y(&xb7nQwfLpUX-mD4_i052^ zhj4erpOxSdeRx^389X6wt%S42#RANPrC~~D47u~k4joHrbu1M)u>KAQ>+W!|&JG`I z?FjbnMlBY>^&JV8d_f}ejuKh-Z#sAEDChdC&TZR(?n>_b>z17=Q_)RklFhr5MI=yT zlFfaxD+QWNvAJ(D>2}mHtG3q}vu1}R+LUT*ovGEGFpKl_YIB_#)uuYLs+BrRoocyG z-D;`M{Axk4aIarY1dCyjUPe9_gsO_d%i&Hy&&C*j)1)jb3eVHzn6#x5*9^+{9Xy) zxbWuP_ueZL(JsjEmeV%A#qzripe(S1FKq5tFaFTJIr^@MNk_BowxgoQU$m7p?LaeL zsoUyB3I5k?HkV(J-C~%#b5xkNb5y|&PzT#U18fB?um!Z4J3`JsHyLO7M94RYo=7YS949@A`& z0rPB*Av0}`F>@`Lp35r9O+|$ADOMItA(jcI5zD*lOvyQ#Otsq>-bAN?|F2m6P!j$R z(GvZob3cXB)%Fk5?Iz`FD<|ij)T=uM3vX&yn+3~7Wle%5#43Uni8TmThLt{ieg2%P znw8u^Lw83e^Y`K|g=;hedLX|4n@=lt3JX@8QTez1i zxFX_?;3{0ZY6-53I9mbG-w<&f?x?1SYl2%Mt_bdkxGcE4+{(SSK0Kc~sxRXCnE_D* z;;@LABv?!=j}&;Kt*gwA#pULkZ?4YHT55T@@#c=J`TuU%-=BnTHr0Mxebzv>JX<}I zFK<3$n`{!hcak&jK5M1clmD!p^iL|}k^C7y>mv0tEj-&r27M{Fo26%+JG9NhGpUn5 zOl`)`**6O5s)298*p&o4OrumHRaCTHT z^=E#kvST;JZo|&*O__Zp!_Mr>?#(xkUcuxqcWtVV!cO(ej!pehn0D&az%>aNUveqX z`m(&~g3g!8rVqN*zzsqFOK+13yPe^e)@A}mU+SAhF!@s6EQ5tFv$Y0+(pvdZL|mab zZ;skpB2Zt8!R)K}OLHxRNnb@@ruLc-RlW+obk;nW_LcXgx8}ffn7?Mh%&(j;gEbRo zQ4Kd*(_s#EZxf38X5U7g9tCd;YuO_iE{(YqyQQ=*Tpsf%bK9^Mb*eB)FrD^HFay?* z(n$T=ukubd8y@Az|5OF~Y;ctO0UI0T7_p&IjxpO9HLS&*$ymdhROKBQlV(b5ay5X- zGsQK^4UiJfZr^9s=MCiBvtuL~_vUlQ!+?`a!_=hC}v?^zr1bNStt_uP%>x%zJ9y>KIVuD@G+udv}gH>ma6 zK#f}KU5Z3)*v}p6wzh7V&lw@#rTpH8{#=GB@9m~Et#Z_Tw|hfoPfG2m{ciSEce?TB z$;+1prCsH(c5SFnObWWHUv+HgPi(5V>Qt^ZpSVYrca5*O^b?PIt=3oN4fjdF4Cj26 zZ1_*Yqb~JpL(u=q+n`A9(eNv4BLSnY^o=5zd?jy`!NOPB-3EbM_wJUTM0rChO6=xT zg(V`G7x0Y*Ghm@$d9hw!FdOCxmY3>vV1=(dm?c}15gJPr5aqY|v)o^&xhs+ z&e^4WL4DdlLO=p%u9g3^ojh48`jI6YKkXt%w(xXUUSKM> z>!qii^V)jhsdTPw-dc~J%I8|<-Sz0Hdag1bt_M%`bH(|>y7$zeENcU0X03A+s#>?7 zIw^HlTi4B}Y*sQ~UDu!b=al)~)Rhg-b+60pc^RI|zUW?m^Y8^s{$kg<`Y=4Fe$lb6 zgF1y~P0;v)OM%uG<#iWyzDU-6(51v|2>M@m>r}Ko7k*)_Ct&o2zFq{AFXZ*K3@Ln( z-Dwag-6=neXizAJo1=Co5vbpZ1)6t4f%YB$VRk;hgmcGxD4h>r-W}(ma^B-={vGR~ zdftTvcg%-6`>hndi0kDHwgj;aq z3pS{P+nld`;jFrFmpJ>>tU7QXE`PzMop;jce1Ic;5m1LWIv>F)C<}|(izZoB@5JYm zQ-xLKj&wDINmB(X?;_}i%TvYGeDXp1^NNIA_6cSW-DlRT@Jh!s@0EY0?OF87y|VLJ z@s)k0MhMXmkIoc(eOeVRO$b`BAbdJ?ebL z5WOisYJX)v3YczMUiptarkloB5#`#=N2OQAN7klA8Thn;O7701;8pV@ebam7ylQ)- zZU&ExSDlY!rW^Iu?nl{X{78EB>qpYJJ&&|+@#p+tMQn20v>2HhDzF<3~HGIq%L(k2=0}9{KaxqpokwN5TB=Z?*JMG{5&- z=~03$&hPoQG@q??eT!Cbt^HfJm0fH3ws~Hoj(y9#u~z<;vMFoHx9#)xTKH{s-d*#) z?VM+d`gYfRu%>^zXFgh!zwMq+*7k99&+j;nl;IMBDS| zrF&xM^Ww|YKGE{L{L(tn^t|b%aia3P^(DEn?C7hUC_dl)QaX`5-}f?lzW-&$h`;}( z%y_^5rOIf(|D{ef^0!_Z)FFTCrNt<}|E0qSzyGDj_`d&Tu#sV-jr}jzmFeQtCc&ziEG> zq@14@Tu-?kW!R0>cvAkR^u$cHCyn1EPwX_MWIC1G-Bfzg@s0DuPqQao-4Rnuy4AI;;#+=ki+b39Z^( zK6QjJ{*DIoXtn0VgaLEXxqQaZX?ExG8AFEobNP(X$e&x2dll@CqsVw(kQdC}zwC?q z)Orzq-SO0W;eXxsG!znoFO07%Pg`G*b<2jn%GbrGyI)9O zCr|gih@S3$kuezWe<3pz?|-2(5U2ZJ=#=_?>xDs)@3&r948i+fI1Ir1Uw90_`(Fg> z88%wq{~})Reo25B2NP4eep$Y64SkP?4OH=my(? zN)J0$9hiP2d)T$g5X@GfyH_KR(19P&F*yJhBxFp?I7EA-e~~~ zH#ADG>(@&+j5}rg@(t@w0#SPi?QmXDT&E2u9y$acN5?{{)q^8r#~3F+kgcjr0DL@cxb`^ZJsupSzLeZLE8 zGB!jtuJXoj|H<7M_$)+qY-c$sJo0>p>6R`sA?xrQs z*`&|~zO~5?!l1F~3)D74f$C-?@Xe#m%|x)RNAra%Y2H_Y#Dm5E4$RNY`)y;!dAa}B zu~6F@5gij!lQT}u4kv>ViOJb~bR{JLdN3d}nSyZSt;KL1?vu9`4|-%KQ}m9!wRq4a zGnq8FD;C_YIdF@-wV31;4{ls>;YN+b;d%D?g=@7C&hEc(l|E_E!MCe zs)l_7L63|L(K+lJhSut34Rs&_OB>lhe4x-%+~5NOCL4S}z<7fX2pDeg0RjCD zJ|LjG!3P9%Hu!*m)&?IC(AeMuav&vjcY{v|0d<2<2>9m7#s)uM*w&Mj55|G)V4+8X zMX;h^!2!9>Jo2EoV-AVX+sr;-2$o#24p?<&kPcn!$+(Jsz^ya&fKLv!2+9Y-dQdtL z)mg%AxB59FIhc@moTYqnev=%GdK7p>np$!&An!PvPp>oi43sx8l*l zba6eKNx)=X78tK90>gDppucVibk{9`&blqoT4%3i&NJ41f!cZ~P+gA%zInL5o(Q(} z@Ooh;8kNQh(-JJmv!GK!{ZVDCD408{(fsDpbvoF2GW4``NxD&(F-eGyrWJSsx5t8M zO>ljb)aYsbQbr$j)E{%FO~IAXV9cJj1(!ynF)PnErcW}4xTemuY5!8XwIHG@oC+yi zol$*^pAz}T*^Ow1v3*S93=J!lVvw!!R<>9 z+#(S!9y3WU&TbepF5I}}!?hV7u3ZWj((Hyh6X2+17iTx*8Rmj9nS|l38#6I9yHq5c zz={i7i!}yLva$;c(qcZB?XDG2Wb8s$rjB%C^^p!D#z;Hd8fnEkBP~SSk!H9*(ufU5 z8i)iV(x+v-ARSRYEsB8pDU%Ql`loT;Fk*fh3f}^egN!&J0+A6HM3_F}e;Och3r0fF zB_4qeegaZhb)*2A_$3gb+(-kc60d*?e&eUvNKi|W){Qg?8jiFG3`TZ>KI8ZI*z)Pt zha%AQDSy5btPv&&*6^uXXXQ^d!SZ{uYbdS3Nbys%&XP~rdP~IOPaT-Y4Z=@T59-un zUXK5vjDV#u;(f}lWr$abykzz*L%LEPu|H+!GK4D)ye;g#gKVV&E5f8&6K@&Y?;u%e z9??E+_^^$)wDMv5i2P|IHv6<0+rrWOVODD&;V-GRwh^}H!B#$0Q=t5zMnegk4Y!XJ zKGbUxnBXg5gs*}jz7G2M#&8>mqH0(j+1*p_--Y0zv!}7Yqo=vQy{DzWwWqberKi2W zxu*j$M<>FK&VK1kxu@E%oGHT9GYM8d6ZfRme)CL-!;g&44z?Yejf7mn;nNlL>;zS? z1=PSM&;T1j6GUrq#s*8E3l>2SOhD#iZHHCDa!nF(g}7Sh5^+uNpg)5fbzbD>m-i0(6C_I8EY77#{a!9b;fF7w z3yJ&vluv|=%B0ZGBg4%6@kh{Mp)o1<+aobd<0YCS1(<@I#2hKYB;E#nqzub=&o#bO zZT-qfrPkgr^EGSl&-lu<_qTAMGwp5fZ>mYXZT*ckrB~{g2AcaTHMKYEmj}}3{&G$0 zRSA`9y1+us6v!e{U{rGihBa59U-QAHem>q{F1jl%?3!*^=!8`kIw=#I z(>oVJY|BD~ZCXgMjSB^A!$JvLT4=x)7b@6fp)tu8gXwsoNnp6pA~0Ck3HnGgcCtO; zqKE1vZ`x889mFOfy=5g^v>ELw?E;q;O-B2WE30rFok_S*PBgg2XdiH21FkUI2Mfi- zgiA;}0-nu=XN=y#LYz2ok2Ax>gE^OCUX8D$@}k9f>Lr09FPaRtP7=X%n6zjoF~{+BpAC>EYf|33ocm;@nS`x{=uTWWG*C&WkrLt&+|fYv83oT>XNol zS}Z6gOj&4HOcVmErFO;7IOOJGdy z<_lmnb#*@KY0D=r!6BTBz^L0#x*|l$|SY8;7xq= z$;_;?t;q*^ogy8fv7yGs`ag-O^*V3PhI1@4@a4!CY}f`141hVtHBF#{(ov+Kzi!OG z)r`XApTm(zGCGib4mWBlV=|f9aGl>P9KqC@QD>Y}XY?9zQ<^KBfY?#6j9)FBVfXc} ze`Bp->9={z9G1bZ5o1^tsDmE9HmnI$h7E!8uqlu%d$4mP8+O2|K>u~eh=lLIW}+BQ zbJ99Ol0CSS3+326q7S=Z6E|{x8}NX<9HYq`=~cComZa1jYix*U?CbAHEJo zVuAihBG4Tn{hhcoLION!jg)!)zl~m-BMkzLk&3`v9H){TKeH36^y=fU|KaYLGc7o3uQo2<&CWE#^`v(QD3D4-2$2Gx& z9;-Lq8vh4fc&IXak&DpB?Qwc7!JHm9XCqCF(0-knJprt#-{^@1>OHYQwI}Jdi7Pz? zfvmj+W?VPxci@fvHlwdAnAIx_mNxbqy(-NP&3dm^XFNW`^mbH%%XKcnl>wLDmHwPl zDn{^(Yv}ZG@9ylUd=}W;ZwYMbXEUN+>7dIQ=u>-TSObi^!b;440}T5I+3meQ7|?n( zSkfO2D7^+O?vDrLUK1AeCj(ip4Ga3&wW!yD`E};sb^D705;6a-LrkGxcF4bL5mh-` zhMRDWYbtOZuESM$s^J*iRy!2jRp87y2X(j%w|QC~tQloA`;&r? z$d6V^Z^)w>uD9TETX$w_^iS+IpRnT(bA&g8P$jV$m90zuj0LwABBqHzaD!1{1!lwAg@6n-(30btE~D8y6AdEK(^1 zW-$e9GekJFI>huDM1+E=GddH*Hdly}j4$F6ae2vwR~9AWYMp0rw$`6S(8;5cxFmtiU zt#W1%(`Q_mMvOuz5OfLJf;q%o!7O4qiyoWAe8CJ@AXqA8RP5=c8cz?^cm5M&ojEr8|^t4@v2J zcVrn&J96#EkB?u!-rCXm>(|nbpE~~THQQtUg(G$T^Xps-@#Evycee(P{hIn(zrLI1 z=HDKFcQ+gOO9xlHo2vtUeEjf~yhpeC@rstD|;$^xrkKzkQbqa1%x%{XgURqFPt z@(!K2OmeugLxU+KjH^3Tm_`!0#?J(*lUZ);kYGl)Q8jmDoNSVT&Sqhxi>p<8M_1J$ zOFc)Iymfm=0~fc+G|vQ=xs>0XM-{HL%{21Xx0w#}x}6oL}g* zy#uKfx%4(S_}-T~ZF26n+vHB`&s^y=1$Q_{MbDJ?$+?EA>3gnIYY35mxUPxLsZ!?_ zYNu_Ub=j$?akTBqU1rto%(=5e?qZAmPIC0&ir{6z)h=FDXQ`XIdpqhgJav~D#e&08-0*_XR4ejM4KeYMNr zN44D>9Ri+(=U8?ZMF+ZcJdG>op5CS5={%g%h0@LJQg98PK6kCI{HJX4>T=KSA{(`8 z^XlC$yXtn)?^tV|b3W-!m@sW#K@MOZYbULq1VdQIq&%Oe|C`6Ef|2)rtcz@X6NQ&~ z>>aZHvjOASu1RU$Lgyt9=qb%Ijy$0ZXmABCO{fDZoPYaHY6A*P=K{unbWED6=4tbj z<^ZBBIR6Nqv<8%^j!A2tT*m=*s%_HY@$3O@s&$fo3&ZrOh}+qdY&wQ#Ooifp{yd8} z1O%zVrE|wdL!j~OId@PIkdek-#o;^{g^hD zaB~CSI+WoXJQi;>zKw75YD3P^K2q@=ynq*_)IEOU^q1=%KjvepIVJtTrKZmhJbP;U zB5wW$!kt6*v2Ct#@$Wg6!MIU=F>A`;A+wrY_o%&fh~Gu)p3Mv7cT|2nqUXgDsq%VC zuDmIzCRmxQdPT4b&9Y#Pf(7(zqBSGu-n`gytzkAhXI$KQ%|No?&5}n7*Exes{d3yI zwreWaLAG#Cz1V(DL8V~LYUh-T9oOVpeZ`zL&Pf+LuVu5Tv0}`c=dz1kIOd8rOUCB8 zUDvD?byk9PU2|6CS($vAu50d!G^>(IlU*-gqlEZ1ZzY?hgwHwYdg+>c%eqFTEXo(j z*NfMbTPB`K`6A_d;hJ_!$FoSR(XPkWbUbgx7G8ACNN;JlR5Q9BUbAi~f}7U^xO^?U z<*sCp?eo@k=~{Ntxn|#zxUnN*_VqW{E}~`#Z&|{3u2bmiT6D{-dkQj$_?Cg^oOiBM zu;dzB!PGsgu0w-*+lTMgx^4009TF}=PPjk7IiU?=;x`lb=|}F z@YN$4zJzaHbnvw!D!ziRUqo&~#5f`oQLm@lA>R7O<`IbyH9Ye|WY-KL))De!c^%$_ zaxuFu^RrVP+r${@i6L_#rrlDB@qk36iwY5?9_ zr~9t~E+k#sZg%NzUeEBHBlbk@S=Tjg_C4402V~mGFKb;l@)y9=!~bc7Z|1KN@tJhP z626_k3rNtU8>aA6{Xet1|NMWsLjk1!?T+63`CCuihR^@+oRN9ZoT@wiHp>q-foIkK zE41>zWaa-0B=3hZ1sz~B(oL!_-frnGpn1@5w<6s%Pyn`dN7U(2Zg(Ktv=RSRyM5~T zWVgGJY`WE5-41pSQcV|yrIfGy1j`o;I%1O)rIN`6@yL4T7>@EEKylSX;hi zWPRDjGEfu9>Wfuo8(d|L*@p5^rLBz>s><@P71THmzX)`OUyJU z`T8=)w>f^s(l$Td;lc;F(LruT>sB|QRo`@1L6xNng_KxiN*uq0vvd)X z%jWJk)o%LbqRX9}R;0a!OXPyfCZ02wTQ+j(G$Po*eR8d3nHLpsuQK=cX)N*_x!$rM z9@gWeSO_em?t~W;a!!HubIc3MZ&u>XOT@A^>n`&q6zJ2$n^NM9Xkm?2rhO+5*g#t= zYpO=pVZA90e@ER%zTZ=AbJQG0wbzbtQk&4Hs&hUvN_DCe@uWGSOzoPZ)-Vda-3Tc8 z8cywzqndLR4wP5fA1fOPDcX&7r6? zp)8;bbEHeKdTN{F3ptlBt0Xvb!8w^VPaEPul~^mN zvCzrUU}2MEzIKx4TVVOxNuFGKV+GUCZ_q5&IBROXA= zCM1;pL^Ir-Xu&!YtwijJHn=&_0XHVL<|o^6wTU$>^K}C`&e-yA(bKw+>{wQR%=)oz`{87v@E=X}ur+$>M;tSy#Jex{b za>jVd-2XH6(MMBL1>Tul;mKRi%0b3QREjSlK20Xo`CR2`5=DYaPYWi^H_*q1W%G@^ z+3wWOX!WMvncOk2Aj-?72P%TRw6ffAQ=8S*MueFLO1$Rf;!P739@@v7HVVAf<@lz9 z`mPO0raRlQ9AK+RG2Pj=W$CKC>2Yq( z)SF()LZfxr#*qojD=o_uu|tfR)JBM@1Q4 z)mUhlD=0;;8Y?;i!6I75;A+0ga8?qui{90Io#7&yRA$|)`AWk>GpVtIg1eF;bVM}C zX;<@wMu=>ZRm;_OM3Y?pY6ob~s#mKBCml9X=t4BbmP$aW`*1{F@7&e@2LZ)R_?YEf<_JaFzy zw+uW=fX>FbK$FFfax3ITMk@xMg%|MhqZJ*`!Si@qq7@a-#dCSPI2X^uV|BwCFJ6(- zW%-s*z+RCEL@OD7fN!nj8qsJ)z7^t`D+*qS7vt$G8lI1r;Aty5o`+Y!Q&$Xhrq0Tn zYqxHd@Z}YY*8J+(tunr}V&k)zy54wAfN3JOFj0ecq zs@nDapuD1k_Uw+8{C`j?zq==6>P)hx@f&?Irp?4_2EXZ(qcIb%nN%@O#`t^NnvD=X zp;$DskSYrMG5)~0#`M)GosH5lZ^m8=s8LKMlCfY0VM!Ie<5_$x~1!))q27pZfd!JV^49vzFT-dU~A{IhDEh17E1ZjGtqyv>rc#hFwd z%evVI;4DR>f575;B&jB%<^Laib9O8pORCvtlw;ses!3J)EUGj4v#`$8&wQR!qE-9M zJ6qzftx47R%sE@0Nvb9lnX}6!nEe^ms;PCIRGrU^v&v=CV3-&^3NUL_xt4f|KIND7 z%c0;Q<(Ew=Tua?)Tn(weY+d$n;%fYvbD6^7f@S~Jxy+wr1*c;2WwXwyqfAZf?YIWl z>RgAbbxu`g>Q-;}p;j|Bt7RU6tLJgSsOy}wl%SUvxh6saw76X>YrqQIWdtQ4Hv_;(y(7S-t2T)lX8T;e2vWyGRY> zlg!?l1Wb3?tk8*}b-IMwW`@DD0xu_rYDUs}+ckX!< z3=SxfOsU`V_PqePXGD=?3IU%t?@1FrTFaP1$?667ynauf2reckDJ6VfyQfZ22=FAe z3C}C{vkD6iB@gNJ6WPYb;2(OOU}vig=E5{ zRC12?k}1%kJaYL$HWyEL6hkgwka$f#WstX7ND<_m#SqH=L7gJXOhLrhW`md_Ix0)Wl^qwTNQiDkok~{GR>HKYc-5dT zZ*q!1c&(b$<4sQS$B$K;GQ0`ZkG)mrs(wB@9iMWioK=s)yYlJqls9Fs29(!TPy46R zV9Hz#ucGWc?VXCI^ws#PaoRZ*PiZid%Eg5#1!kW%PZg(Rm_xvS*~f8y zkJC)^S5xWZNI3Frcvb#56kMJ4uc{yWJhgOMWBHo++4$q^f6}Phyv=2bAP04>5NE3r(MKchPDv|yf1S8p z=h=TTXtC;^gs1(UKZ>nH^ixC|Rj*gl+*L)RT5r_7wrM`VR^}sYc|O6G<_p-ue8z^O?9sax z&&x1rELw}^6__#>tOfHLOda#rymyw; zAM+14!}*^&Ya#dWPPhSA#+<{g@RWb1o|VR|!|gaWJR36)cfj2l?W}&d6Xx?@WA*T^ zwbHC%bDX{Ih{lV5GOOaNH zG$~&WW?GKBA4ut>!aAgxy0HRPVq?`e28ySUmz z{t5LS`y~Cw?K6+ML*WVe9{VJbvThvphLEVxxb*t|}bTa8H554KTa3MSy^;NjMa=||t_BF!P3*Je;uNkIa zNS%{z-%hA;!9MBqwZg0mJX2pg%)VfpH2XSW?gj0n-q#89FDNI~zFkAv*?@J10^553 zY;@tx$v&w3KHHC9$ojh29yVuPLz=)U+r#F5$B-$oZO9hbI+WV)OEk0$xdNNnCsrDd zFEkDX0xRqjoBL(9ht07#R1jDgDuT>`cNBz4a!p1#D#6s6y6WHQx}nvyRqsxfom>s{ zqU|@Vnz?G4XPg0NH05OtQt2w_E&XJ>8sj}0Op@k zSCtzPEIcKz$~TZ04M(S>Rr2s*$*JOxY<#Lj%JI2+8pe~(*(rz6pjW`pwSpx#Ge zL9*RjJMGq)k*`76?{#Z%$~bMEN(RfrZw9BPOqLrSf z;>sy^a3|a#E}e1)TjBio=5%(-8f=H#Q>k&<9PEI)Q`%{LuoLD_DW}!JUBlUEz#>6` zZCxCVrrw+$gvuA$VSFkZ>|%@AoOKPe>j_w8i`g7IhE0KO!)%#?-wH}#%dji3nVn{H zzi~JKv)`xDRE5oErBR8AzRWhW?9BUnf2ufKfT>LKg<*Dc8O?v&&IL~4pp3vNXFfm9 zZRYYr-e&CcOR9U`N~I21;jn?!Do33UOO7g%tQ?g=U!ar@hJwU@#iFmG^?MtWL!TV} z@3j%TcjtY>!?Hl1ox5}2Ww-7eQ|GWDh;`T!Xdbo&>WAGU5lQ+Q7=y}TA4C#HBB*pY zg!`n78Y3B;i3Smwf*0_=fS3$W4eqnEH>E~MA~iNBqeO-$8RkIucGc)NELGB$_PM zTv$9=-~&c{G~j z=Qf;;m@vE6fi-KLSfkc898PBcqSbZ}2b0n+wYF#2!J!^>cGmP*+NoP?l1HiD6MkTDJGF4S&jmggT6rN zU??#DD>k8kMY;cb8o5KXm>>JR-F}7FXc!2q3yIayn(f{eHPuA@4KF%Tu5h z%ai!Efq()PY1Bh5X1_*;sXpMd#dn?=Ym-Q747h#TS)Zg>v){yHGxf6`S+PdHg=h7d zXDLuY0;z*%^x0=^@?!HeRC7S@bIu|$BtO-|Q~SKL1{thK81NLljEYPxaH-EfE2ZOV z&rY0-24!6CX@h(06)yF(!<@7Fc$FJuy%q^~)n1(>Q4`jQZh&lE^6ol&6;edCvkpuq zK~y>G(N7{HR6a}flHQDr)$D9I{#I{PKf>|spWo^Y#-+x$dcE;9`)3*Aj;mOkCJoGx zDY3#O!(Lg;IqP1;O{(CmhRMb!eUZ2W_eqw|xg}Im)?#7M5ZWnn0|)gnCok3jWBV3# zR^$;5Dr01HE|6U~D2;`bU?3f{Fc@D_NtVx1UML96^3-_za@``Jf`4!0OQg%w`X9IH zk1r8jsw~Fh()=w03>Wj{O9>ub%4YmUnJj;0DWcFsKqjlVnCJSdO990uP@K&;i+PT} zzT~qVI5j0^Y?3~WC3lcLzDa8}7fn2S&=|EY!AKG{(j|uKQS%bnjpT+JOAOef`X$o; z@ysQL?NN=KR(X*`)+Gk-QH3;CY0<}H2p^R%wZWvpa5THr0m}xX(JC1K*%~Bq=AKT{ zW;EJ~ct8=TkgJ*dsZ6S7ev(9bW{w#-q|xYG9Q#Slj7Im7l*#4)se6Vs`>0gfLqev9 zFPCapWVmA_!!O`x_@%rfwgc@zak!IVzck!M%71ZqH+k@TMhe5-HlIpSbi} z=BpISp#NK)3;CR+{8lCB-{UgcZxxu&q5oE*#pf2rZ!>!P+}!$Y3G|UCHgN{Rp-75`orFD4KM)7@2`cu z8UiM#774U!i9oYf5XgE&pjImjL~JKe26fKMYE57x$o9!OX=aRT>~HL~u$5jLTkdtS zrCx8Kfjs^~Z!l11EKhpFfg(BkQExm@5SR?a4BTOFVIU%J-|sCA1mx{|z2yO)ynUy) zGC+YM^57c>oPLUEf>N(VqP_tmF~2_z$)s=02UBwPH5eKExXq`iULB9B8!tNf98T%B0b>vIhrnU`Y`Baxm*<0bXl zDHrj{q&InXp9YCcssL8(mC2(DVTE3WgsGTQd6N$*FrPywNvZ&gdJWQ{iZDbKhf1K| zYYWV?{B!?@SmdU;pTCb@uX`x&O(Q|_H#83fJavvfuOdg6SDK?EUZs1;7Oy({wR^~f zdA-@My+ejz60B*_Rl*q!osy$O0xcyGXetGPx>6FTDP@65s#FA#L7fvbr3oa(UTGHC z%$V4?*f?WhD>F8>JmX?ZGu~2#9C}p9OJ#EAlbLX-ln=}^@lt^S8R_y;Le6|RQ&@_~ znfGUkOW7wOS@RxD`ot$~-kB*arSc~pdGj_w^%HaojDDphLLIg&{JStx{$(Pp! zS1ucHP4v+&>x&V?Xx>M^tdct~i@14NA(>qgaqF_Q_!jN<F<{v^Jv zk4rR~mk}oL82b3uIU0EpOCC>Zj7#V28RxS9i4SKB!x;}w?b~tnoI!eh&b4vv9M3K| z1y0WK+Aasg<#F?zLOc}QI+sc`L^#s8eJ+E?yg%6o?z!M{;S>IE1oJN!dH-aXd%66H zd6{BC|1V?j65Ga>rE4;Fyx)9@6dxkZhj>IDiCMNJQz_c+iBvMs$EAnS3ET2OxQS~? zwrm4wd6c%JFOa~^9@Ie(44i?-jc$z!xTESxSJ$ZSKTVsQOy9f$AcfA7AtLBYEkSD(f~$DT&+d3@|@QObg%z@9NXhC#?X!4?8>A$5HwdlZP8Mv|*hJ~<{7recb`^s|E{_4OVFfnaQF=RP z(*g%O0&H*EV1Gv)kOi(^xjRaFXKp%RXU72>n;zJnVIOQVmxX+Q0a)xPNnV%%4bF-4 zy4$!?s=S}GT#=oS^?zuCyUnW~rBDCdDs5B|Y1BWpj+ROlFaFVHN;`GqAkTHF#Hx92 z!}5i>#YDSgfW%fK zyXP*^8~}aB!aZln1SxB2Yb`n2noF*>V#(81F8RX>;{ulHJ;~${f)eH~gnIWCj+nEU zG&M&1%oJg29B}YVtM`Lp^}=Hgv+re&CN9&Mb`wXN?nCGlm|R z^VQe~b4|c<7=XnZC$$!KvO0;>0Wjz^E~0HLdcTOeYXY-embh!UbCz+suUad1kZG{3Q*+j;(V? zWAP$9HqTv+jTh0eaqhE0?UJtU$MQTl_MgcowM&J=WAB*(u3-f>WNdisJhQ;TG1uhS zerAJx_7@&o;QFP@o3j6B4%j(%{yoHa=0TXRHTJ?$^G2x8(Gc$+-o4` zb3gZ5q;b?Ay)5PUVegS!&FZwmYW(c0OQR{Jc2oK^r6^MxF~W%}UKhMBdF4VBL@|09 zrJ12W;S75{Iu!aTil7L|4=o1$JaVRJ5w%z^k65XIdMH{na!#+1T@?`*MT;V5_X<~K z6iv~hl|$onHHR!ITC{U$oWK(7TugE)2tn3jnoB^)t`_sT7=+vk6oEp&m5VI5+woTm}8FFpe0 zvla_n{>oJr@MguFrJW8=iTZ1vT|4a1;Nz&Fm~weT!9^y>;HVRXYO>ehkdRq%u1yXT z6%~jEkf4b5Ek6Gnbc-`p*ldKJq~+y`9{4>zGa`34m)C}6So^$o%%Me_U3p791z zkY+rS-!tEM8dJ7!&wAs6OBbbmv1c>N){I(sdk)Ofj5di|J|6dtsX6s0wt{`{4e}_q zr0sRKMYTYvqp7(?=fyW)U(cwuML|LK=)ihJSHAz-`vieExBKOLwJURR*l=vR`Jc8X4byV z26>pxI&J=8)*>W_twcpa%(SEsazM1De6tg)M@uqg+t#iq?EzaL~Llm@5yUJ~`W$w#2 z4UUwbJGTw4Rg-g|E&R3w)Ate_g3bL_#+3;7qiu8l)`eiWLLIKx4eDMs`ogiU(?BZ1bb1Mq=AzOTk($phkU=Jwx`kHA9X@#(w|8WxIG=?q~fAj}4RU{)NA7 zXj|W2yx>S#9V&qhQWEjW(NdD=pKz2gN|2+aCpPQ7k92|Lmn0=UvEcHAdYDSuqxT^2 z7|5Rrm!zn(M+$Sk5+`C`YY>`3oe0;SI#FyOeb0Ca*mEm?k98) ztl$TuQ_|)?p=yHBU+FYB^FEj~y)W}dod;U_s`)~RzAeR599?881qNBPOt z*g3V%l1~;`KJw4JQ*lO(P?+(EeVvL7YCwgi##!N$gjtVBeLLk>y-&2sd_8aepnnfYm+T|4ZMq?J##OYf1(8;UdI6QR^2i58TEgfsc6!9f`` z$cQ-KCWoq;WrSebc0N*y(TGv4OY@QHm7(x0PT78KWtw!j9HNEm0>cG*St3t1`;n(FG4wv4ebW{KJ3x2WRnz|MCyc z{15;2ACOZ0ziJWw-%c}BL6{1->bd?8e>3npKa~E=ozMF8^!(%3Vy-4LT9wA1I@V-mf5s_zp3pIV%3lZ$2|0V;y zg-V{_tH00-ndej5u|>@C`F=g?CCu@Keyx`hT$O0!me;n@D-d9nY4ujheeErl`{iDl zd9zGExH2@Y-uo~LtMkc$`7 zjCOHeE?tZ{0ymdO1YYM93fkJp)6q>K1V^j{7Q|aVry#&4*yFSeu+pF_@i!uOE>l7< zXDm8!L-UvzPApn*4xeCANzF|dCqcNFsUS{3ITxtfNJ;)3HYMs{9U1zpA=+R~fGxx6 z2?XZs7?*&Nh=Xmg!R{lrwH8w_3V!@VWxP=BgAu~B&g!LL3AQuNB)`~aM})Hkc?LUo zIqQg8i z!Id)m8>~S*vWQjM>;9SCDi8}~CMt4cD^HMMz3!X|kWyOTI##>iikSfKW(V^tmfIUO#yg(3#(CkgPwU80Zp+0*Puo)SlXDX`kz^Iu) zu13ilhs}f6DKSn$+!llL#5jqL=z`Y-F2pwp2N1HR_(p{`32z<1_yL%(CLvB#x@Xdf zU@>p+!l>8#CR2eQt?{6yTFEYaJ`04``{g%kcP1}~HA+$~z^)$UA;UIco@VYI{rF(~ z+Qc55y#(gJ4%mYYHrRi}8f%XvS>8IBkksF+S255`$TiD2&Jc zZN!pf;*Z%f+Uyi!{5G#u&Ld>l#gE3z(TCzk^X1Y9c~U^V{LKgBB>&NVIrt#34$5uo zB>CvR?0v9LVkFDm56(&S(Ln8c>w}Ak8Da9v_6Hy3w2~*cJ_IM879%fw2njwY#ek9= zRl-L%1J*wzC)P)VhA(R$QUVRsy)UaD@-tNVP$1k;0_3?5C4vhjF)n{7pCovS*c4m% zV0^Q2fFAl%AA9(Fglea#CRr;Rp9qbW(klIY2VafHcSZ z;C~9yHn5>$6!lid|;Yg5niba9(;81d&rbgdVWNsNJtfbRElvQ?7T|A{>K1pgZZdF zMr@0$G=(6sW(67%cI15IU;dLpY?pkrI8JT^pRQkh`V{l#=EwY5^;5(l5djhfp_=>@ zamF6zxV&= z$`>V=Rf-#b?7_HAZv|r)q&m3edvZ4#+nO1)OO?Cv*wW0ThpS@7s?c2ZXjNRS8k#%Q zm5ImZs{DJkCpBBeV|#V(OJ+i-T>~k9G0}y&V0RS>53@LP#@JgefJ4g4Bx8S7{!I#t zDW;N)sfh+oD7BJ|Bi2MP+9CDQal9IWDa*2(XB1EMXRI&|R>h__V?-!5k?+DylMzl0U~@g^GZv9~2= z%os*vf6JILF$~Ay*3CF;=>LT6q4yJZhAuc$gXBiE=?(4KDq}-F2sZtpHRI-nzZnk2 zj9DArW;8Tr%-L`@X-qt0?uNaI)?L4`2WHJSHCcFvV8ev*ZA`OpL%>YFY1$bPOWKb% z3>@k^uB{@PezFk{`AP;8xtO)$PBi3;8JsFS?99Fs4*7Nlw{tY2-JWE{6e*U%nEchQa8G=2O#wI7!(=d-wNcjrDMuBPE` z0xpAnx~(T|w~GYnETHFl()PM&RL?>>uP1H4EB|u}i|N3gw8L%!PUyp)v?JC;usr?P z({|hq!G&Ep&NE65f*C8cgRU4LT|FygtSqr}bKuTamU&xiApbKWQ@!b2+vz$3OS7-z zL8WbVT~-V2xE>Gim|cHh%!ZqAqZL6x!C1_th*MN;wlzXtwGJ7w?VK=Q z-S#K}AywqI=k6MPel8mL4Xf?byBiJ8SwQPxN;wU}hGBnqfXzr_0MEwHmrRG$3+B5qlxZ0Zg&7RS(bWF`+>P6K$94KoNsvXrkQsb2BQH_rB z7Pb~TzP7E7#}5ufeT6N#((1S)Rk4Xk9BhwFVm*p=g00bwT*i?Po24 z^6TF33g26QUPcZT)ZO0|zc>F}{8pakf6GT!w|`gqUce3d3(J07w|+PGy@Z=|8CKkA ziQi?F@5OIXh-!yu8NX8;mFREdy4jL{s~GwRnBAKDp6WL+1m3Xn_u|9X->Pn>P`AZ9 ze=uMU%xe{3JODVgVSY>gRSLJ@COm8BRRtWbL?>8E1 z6WIyy_~B_X*nGW z4=L`aU;7=Gjy!d%n=L@`j8{xLQF+&ODa($X3|78DZ;f zeq=6dqq@=cXKOvy26fTpFOIjMu`TQUy4B@SKB!Ko{N=d~uWonk*?@=*oVwGs;DwiQ zM^@d2UH7{DNo#Jvtvc;@XIxahhNy?#o3$2ejh~p!x*yj#thvFm&3jb&cgXZcMw^;) z9lvVLR-0|V6IQuv=(Sec>qJ%l6*P0&PA9JNkD!^`wmV7n26GEx4L4c>;KIwGZEB`! z^b}rl|Iy4;UowuSeH^^>+g`)h z%sJ-op&d3n&D>+}rPGcZu4X>fsH}FOVQUspkIHP98kT01527ZO(XKSiD(BBz;xJ#< z8irnN!o{3@G=DBZgFP5P@k*kT3QyuWIIm2N%y z)dI*xlOF!61@gZjJp0uxP=Fxa`&9?=+TTZCNcs9z@7(CdDA6qtfnqoPBHo!`tD8rI zZfLLFEq;+8rq(ZAMr9tLa~`m4Lqja@va0ODxzM(8ZfRRTx3!%=ceSmad)m&O2ilg; zL#*5^d?}t20e6kf{FlOc0ur0@uaht7xg5lFGl}5FIR28H8-pmLk%@AMvHa`sOLT4y zf>l#{ta0!qJhuiuiU2jj9{XSXb7$Zp22k7`yI;I>ci_-hMR9NJd~weGfsI5!ai2X} zU--FwU?LWXy4PEqo8j2}VxC6>PHY->ua>vAvdw5LzKC;XQ6vO@S1gMy(D>_@^K_6* z2@G%;IFf;}oJ^gr4L4WAF_S9X?mBR5H5i8j3r=hRw^w~8a2qbVKHOb($KJq&6B)q0 zRcGuDJb08rgH>y64+2GD;i@^dV5w%&su+twG-JuC3OM2!OIOo>6NSt2f!Mkk$)P+j zh*EEuw`@KT+nF3DdN&Vx)8^673J zWTB5wb{ilEb$qnD0CLgBhr2D1|JghBcW;3LRPo+!Cwu$##otAr?NevB_tvP!$lxsy z@m)3jEKW_ZRm~%MH?-HT7C%dni|sPX!*<>VEZeXU%e%CdU3g0rgl)XFw5`9jwVi*< zJqv&Jt*31EdG2kX9p$$nRt^fEi*I9)G01-|yd}J?ih=yg)ds3Mi7|?pToCI6K#IRXB(y9_dok@ojReN_E>l*zvsPm>rR`L z00!B(oX^f%zfQELJ?d+L{7dVz{WhqZZHjPKuZM$yhu8dUzK!afWiPB=HHX82`hFlj zi??xIw&R{(6-~m$uKJGf_4C`bPK)@eiHrXMTui7<+Qes78<&Yow&J?LWmg?M7M`$f z!I{pQ*Q4Rk?)vSZZsQSEziCi|%nn+2QwCS&9((g z^*ZhkZBdV4nHrjOuiN!{JX@J|(|;3%O-dq+ZbteX?vL1Onqb*T^gf&>u?gI0#NDJR zt2}RRI&h-QZrn8BR@QWJSPlOCn%j|FxJ2^t}T*#=rXd>%UcceoH+gWwm%^lV#_~oYHwIhiGCaEZR%mUK;&C{$wMe`@%wqa zmPT0xr>)@}PFJH6K2M_}zCfcqz7Qlkh3~1f@+t-!o&5I+m{( z?)OwheC1a7|J5F^?tE|J@hgOe+T*ix>w6wpz6vVb3GiKaJDsp@elPJw70$g8mal5v zZioNd?>UEx%<6H&FN>P!s{g;Q-@i&LNy96fIJn8wlZsJG8cx}Uo2{@OR|MQHJ8-MT zm8n>8tL(zWiU*HiLCdP!83X*8BW#&4^|Fb6qFv8-=kUbDB$lyEYCz(8ZZKyZc3JQeMJD{Ksi zipf7#nDgseD+2sC?GL%cDQ<=Ig+?VHv*MZB78Rn6**uc2vC8;y+L^n7L?(f z!Jk1%0i+E7?5@8bWFFz>?Ahf5+{!n$i=baqs#?wHj$A zV4}*m=xTD$)Yz|^)rjsQ%J0_sqIb{Hm@m#%pVlPGZ`Hl32X2DRx?go@U!pKGLe-|J zN%LMNsN%LM>m2>{83yP~^ z&ZDtO^B&RE94ci{ST*O+DX%q1NaqGHM{}07y2^&HI&)^W8n4yJNq4H=oLEiP=E+It zwlXJI^Jt`;HEuz3g|#`7&_y)@l~f9TH3k(`0(w)S0_o>BC{OD7zlEYXrm(e}k>Ols z^b2UKVm1rr#823pv-)`kDZdL=8z^kEvHcUX=3I?c8oJRm=RD0+BD!pfxd28IKDq4X z{p;r3TnLXzy;lk8Uz?q%pCTs6NXRDx-nq|D2K@w00ZIAf#*;HY4Eph!x#W|3Z<3PE zPX~R{+m}erSNZh!`T3w9tT{{M=aXw6-uH%7l}Bq}>pcAUKEEII-8Fy7x>qAdU-TV~ z19J3}`+TG5+h`C3DmOMx?k7WYEm}fe&8`&_Yw;2-aY)x!j7^Xy_#CEU2?7O=lSuBz z!x&wHd*9PILYrWdtsmVtNaHsq0U8DL1aLCyf9+PfsFYm9s9vRmLdp4cP`O3xkIcdq zR$7RY%wNZq1q4VGU-(;Q=5k7DJ^wd_ch|ozmm|$7jYlrMC=fd)3f#1`}z!zww6y9nbO!c@pWJpRkpY_x|Gwle~AM78PZq@FK5eUq&q~8tuXh zJ`_^ljapD-l7dN<{9f~lRy+TK^nK)9M$Ls4UZ5k>%w{i4TQ7LZqq$XdVPx@>hi;r3 zHM7VB_QHRcIpob#s;DN40S@n-OHRFceqAdTnay4}r2nhD_^&md>7$H)YQGCe#&^y| zFKj2M9_T@HZmTT*UeJzTm`}yKn2dh^-0t!95(R{zIotHycJRV^D&HmK|A*&Z&u()& zewy)A<~Tm5S3}!<;XiGi6SlM+kn$(zWZkrp10aov*(^CvdM4|{Gal4vCSc|>9@A*X zr-(v=hcue`Xe4+*1Ln&hDhc=8)7X9LKjX2?F*TNs!;G@W4w4B=JH)XHaFp;_&B;pi zT-25tAKF$>8!LYqk+QNS#LE%WWDzSjV^9HPY^rs6kkE)ukpu{q#&mQB+Zsnl#!fbO z;Aj#YnLFhJ7yR{L$2#zjEW!qUc-*-@*nxXTHo=49l8Fq>*pbUTA8Zm>Xl@^=sV~~} z5rGM&aqEcoYzOhC%UH$DqmU^u*>pHY#l?}5G3Pfkr2+e$bA3EYIognqQjgIN!yW+(@z4mje2MKL&a!6De6VV^BBpFwJc2O&z)*kur^ zbB%5M@eEtwWQI*}%8tB;>JNnKLmC^PqTc=2sfOwZj436F*vxupPD=-6j?sK*O^f)_ zX(k@pQ>E@!^I(L;%hq~kYlfA^*`DDFW84{5T4-;EOJHAPOKYXkp$(N-%tGs}*6`Cj z^RuOe)jsp=4NJBp8frhgZ_OO>jf08yW$6V z^{@%n$Hv$I8(~9ifQ^TFZ4;~yPcr}-M$YT&+WiD6U-^D z@eG&2=?s^^d5x`iSrN51bKNtgTC>o5t5wD`rgvCgGiE!@lHW__OlH*N89z9k8`>xEA?Q2LKcnx; zxp;3J%MO<^FOR9=i%)3+OV4A$ygoT+tfrL%sNU2&2@era5F;w)&zK4b3$RG9qe=lR(A#}I zCB9NaBPbSD$*}eafy8d7NHn>hF*p6mXydIaQx*;eAoP z^Xb>a8Q~C5jYGAfq~7P$JQQqF=1j~}>riTcdMLoT=PH0xVs!uRf)=HFcU#)JciUIK z3fk^=5cLzP-R)kv2T8VL-R)i32l*ZIE)p`PQR6OM2$@9X-EUCxE4ze>zq~WNn){ho zd1rL>$1iHp5T}h0+Y{^rJKtVeJU}rtGBpbEshG%|Qf1*=RQ7VynkuJ3$fK;>bf!E! zntXfZ@*|WnS;q2M3F}}@ZK;siiPkVH^*xur@Z(He_kRlr^WuLuHLA zRTjjvAT^(*tCIhn8&lMR-} zq+-gef6SK)|1|)&06Qge1aGUgv`o#GPvaSeN20-C*NF(8CtrOtPW0wD6~VC?s3eL z?{zHgoyQILk zcDS>pe_}lS_R>A1d)L!tta~D`4%XDxKC!j6P8@BSg|y}DpRO=Yp7>ZB8)zG{7350p=U#a^&hfI;;)nnJ z-+8xx_+S20bSwL}l;%pjYasGf7L^QEHP56`sBWA|15x}IYU^(h{5mMKmkHY8vCo-N-U`t2i$kqW|iIAEJF z|MW#c+U@lV%HVq2cQ2?^yFFp)Y;Ul%w|~jf+TLVoZgaQ#Q?Y&T;`&dwx9O$(r(B;4 zrO`9c=s8-gCqOocA45TwMkdHS9Wah&i7&ms^kUU*N`R9VT?Y#7|*Vaq!BIpXu zm)~C6FOluMT-Mfj$v^f>8ehKr1xCx+FBFC>4YpZj>9bU-#8s_G zTxB0NSg8+JweE0L3l3Mc*l>-de7(lO?W@JwCE5v=O5n0~$*-_4*I7C*@3ORCPFPwm zxdk8=;TC{Qgj)atkts|5(O=OD_!ZaWQppN={c!!;sFtb!XZ63U{zujS<1ccl{F7WF zZ|7opCl~$nTFr&>Uwf_P0{L^V^_(y7<~%vcxpIRB%)g`o^JdPHQ+hDp%hCQzbsXlX zauzx^iFnaLF6Z-qS)l$yga*!mDJ391Ws%*{3Yf|ZdHz3@@Xq4pD-|H(#t`M4&;NVO zwyLg#V6>7LIysvDl76lV1*ozR2q>sd;34x5xEql7KTq)jRd~VbRViuUvI`SL^#fHg zfVE23NX39&ZHDSt3OMBIltoaL7L+yc)v&6jLVa=Z4_*WO|M;n*S zF7~h{wu|N7x7fj|t3Vvf+jAYjs>%YwP0r#+>~IbRU2#FR0S?$M=HS#FE(Av$x~ESh z59iAAiW%>7!ZtX`Wd#OsAt5O%TrP?UmRE|YR=~7vUNkhbxtNsXSQMIBTxhA8^z*!x z$;Tjlo3#eKz;;}8--1)z18%?tH7ZoUVa55V7foMeI4m5uAXJl}W<<)))JoeIRFg>2 zgsK~^?W<11l(k^T^cIGBY^6$p@V5fea>#X|JPBcV4A3Oj$#-Y)DL zTM>mA9GIh7NQnkpN#eHis=Pw*#wYXI-}ASVeUtJ7s%xr%2iq|f72G$JB7l2);dZpI zDi3g1CnFo--*&i6FqBywvVvu8EpZL(L+tmj{b93qdZgSntK>gRo(V zX6#Fqu-K=Dy5?@ir)J{#dNK1je5?Y8!337*ceeT9nQ`~UPacau4XHg}*Z-7HngcTV z>rwSF=sLVEwa;TW@jkUSES%yer-4&d+c5DG>}RvF5;udWn<4meaI=Rhp6j)JJUpn= z2g89gj&BNU;({k~+Glfc(Y~tAVgBUfEjbN)omR!OeVLrLuRZ?EBh;s`pQ%CA;n0U+ zsJ}Bkh-w_#LoIX8Q;msc9#8#k!ehdO)0KuM_tJCIuB#BUa;+#1ov-SNoL85qgaGiloppx;r?ZRDVl)u`*GIs2)R zs>H-8Jz!~@qynHD9-f7-ROl0)Qgng?@H4u0())`72r1N~m#1QsnNWxF%GOMkh6vGO zsaUAZD2q;@H^_X2NLl;H^#a{uobf80A^D1y0ooU98=RphX0(q+UHM&f>X~x5XU0qA zYJr4C3m{XYCddLgFY6%tWr1<3@YHcY7{wadIVps@R({FqN^JpU$pQEwcSrX z6OW;`n|UlkJ&(UH<;moqnQWRTss45 z9t02sy?nxOU+-3ZvV8XNKyxJN>Tuwp=5&rwu`@i<+*qsGOz8D>d~XppHKF`~I`6AR{Z4wzf43jaXdT0tI2S#r#@4R;#a z^2_Q`T_cZ5)HRKq9q*{B5ot?Du6g8ZyKv-b+dguzl88law~uUa zX81@pw_8VKSrK|6l2c4W@BTR-wa{S6{kIx!{Vk7bFTy`U7C7O?@DP$3|69U_5CX) zEfFwh7tJ75Gc4qN=Ex?Hq#iezWQe`|mJ5;^c_8HpR+`#|D-CV^6)~x6rXs9B!`!lXA!Ct4+<7cv9?;00kB+`AO2TG?pu+NklT2^3P5Dj;m2+;&#w1ypgoTwG3U6SU-L%ZxU7*6 zDoqGO*Zh$`E^0*D+b9?pG!{)~6pd4j%_hCh#|apr|C-sfM#(sa89g42H_cHxjxwm| z@jx4q0*Zeal8iOCN!!!053_na=5C_?2lFKxEC;2r3v+uOOu%dy?bTr>%!2tn2WG)c z7%kUfHcU+98t31WZGHxCI)m~!yPm95!Yw3qha|%$y5g}4JZX18YL9`(9~8$b=Ct-m6W)q(OenugHX^#)U^Zk=2X`)JecYfwc=B7PQS~GKk0g zg1feFUN~eRiDrtVYfSLDW?yigZKIhVgkuV`U2qNBvRNGXF!zG%qnQWuE)1B#Iv3_& zNSJ^*WBPP|3{R|M3kjXsMS}j3j-|&A%;-9=;uCS~f+aXTk;fj`d6hrOf^H%|cQ%;v0pRdE9&dLkF#wLfGr?AW9vpusz;?e1PQK%pg|5@*EYI@a z$sP)nepzEf1Gqp4AkJn?=}V`JXv+1()P7j9O~3zfm%Pc<`Pq8s-Um~5rrDQ~G}*Dy*(JlY>rC@I)(l(I@{X8cb4o_p1A|~qjWST;)pi5{ zn__a>PnPqJgBG82lx&!2!fvTHBpcT|!=V6sM}>{+VVCv6QE}teP6#(1w07j<@FBq#GRN0b&{+#aPs z$J4o^`eRyI9aSHv)A^(FV|qv(6(1L;jidB&Y1%xB9+#(bb>S$$8mp}%4=Yx09a)dd z+0Kw#t!$XJT{*Jo zqh*ofZtObSr6Zf}T5_2>G;nvD?lMSbjb*V)O8Tz1ogTTX5h~D(GBh~+?dS+;D6&z? z(7?lO|0r1Xk(Dw(b7z&!q)M@!6&pEP(nzb6!&@P+9LZ)3vwGzfbb%v-`VVQ<>{V7M zGC_DGr~r{x4ODBj6(m<9iwY2=-}f4d^=&FZq*=AOA_;O-`G>gLT5)jO=*inFl$xOA zLr}f7A_-hnwFe)sAed2=9z3u)q0$dk9vsG4lbA6!UT2c@P2_pER@_P2zg}rJ1=yPu z`q#}W>w`(Le`_U#8^hL0CU1w6Ji@>Fig`O=Q+GJO;@tMw9o6YqyxT5s5)X?j(QTWz zPKWuG$WqQAGR~zU~YKpHV@k;B`h_VCwVL>!;=_`9CQ+5c_2S=hn?F_FP+$M zua}>gSie`8Nc=&sG-=(AdgV#;Hnof=_1j6WI;q}Hd-Id>?Lx0MDc&yj8k6*Psn?uD zw<*=sUYG>8Gs^6>TN4k5Xy2MxSgS3^wuCDpX-H1Y#$hOI_6f;m^ z)hMPSHIt2o!fmytNf8#S9aZCUYmhl;cB688K*n`7DBl`LCVsE#<3W|$cB>u;NoL!r zI;^!uaoeie_?%JFHmfE+ca*lT2i2+od!s`8x>{y^FefAMo5~dEBxqAjr_>O`i;U!;tv|7QEMq`lt;~_xG^`XFC~rY zsJfIk=11kFLZdb+E)^S%QMy!WG)K`=xgqNdBN|9hT*^=J8RF0bdp5 zGUv%`n%^W^AU`}fGNviLQ|1^RO#LGH=G`KUBdov3l3sds_wWaVE zR^^3Lq5zyH6Z`AVLuRtgloiqRn)LEyng@pr5;N?B&4;P>Q+a@-EH(G3Q7+7WsAf9F zRHB#jFr1p2sRXagd#Gl;^sZb^cT61qLpAHgcLiL)gNJ03Ek}1vIHA-|_|Tbp%i&$N z*^$$jgm6g-h2Sm)BzEK^A!}T~y}Rx*pReZRbK!Bd$G{`VCsQ8huD2XzB&sE(eUT)O zdd*w5@A}KZjx{Mgyk1>fbC<2V;j&NiTKrIwl1_h?W%F*d?2*P6vDJ-7+>MuA64^p_ zed96iCd)P{Z2^a)JoC%6(wTT1tYXz=Ne`QF;&LjPa#WTLQtYCM!?{`y$@g70$+L?m zHr$4nm#wP==4n=1wqfMIX;xfzV1kQkKm5A(O@7&f8eDPvA!7K6PtzCG-Xv6s$3wmi z)BHt{sfI?3RBC&YIZMG%lB(t@VcF1`*h}G1WrLH7K6EG6QUr6zYL-M8{zNPhxRQ5{ zY>kQBfRUaCyS~4|lrEQ;pLJ&y5~!I*^CZ@*?-(XK_a~(d?-=!$pC|W<+tWl)SnKPJTjDmHOg`s-fD9ShDRk1B!j| zQ&u-oBj8@gZSqr>=A0!Ssyg8z5MaNYCmyHcH6xPv686lA;;}n^GswvCD?#0+)d`zE zd4KGPvsE6m6E!{Z0V6iK@lY12>5?ZHvfCSv(Mg&%S%~UlCqvTGM~oJRJSwaWyfyM9*L*PGfCdFrzB}T zXJkB0pQXo{t0ZeZqBDp?LZKv_@--@5hXF-BQrg|9^vLkgABjdn!y8)ToW$9o z%i|z&&!5mWhum+6avmX_Z|J8(X1GBl(FPNL)eo(ku_@elGXFTEkb^GjnOC!)__g4~dP*r`9B$2e64re3M(q;{ z$dSOVeCCs==8@P*iYFW1_{5XA=92PBPAPA2<1?NlHJhAL@=G~1<(sdm6j8b;sO0zO z%2TaL(nG_i%41~ORjKhq{acy1XLT00$`eBwD^Av4cPLVFu5Gic=FtZXsb{0<&Q* zTUpasGbU};5e~u}rtr*yI^@w85zu*4gKT~k83u5V*`LHDHl__VJmApGtLuZ!P2K<= zs&IlVd|Fn+B2;oVx%jFu)D3g4P|@v_h>^t91Dp8MhsM+g3viy0CdeQLr0_7jy2VmX z!>cx{cp!7N04JEeYGMgxuNqk5(5pI@Gq|c@31_dWSjvc9Rj^#6t2r!1#IDNP##be5 zIE}9g(;{(6e3geM*c6+kfCP}o#@Z%VAp`T%^a`ou!@@Lw#Zw=6@d^U95+7us+sieTcQRT|h#RpGK1fWCVq2jFs2~TbQP5sij(Zrb7qaoRV!RoVkeU zly0jrjJ0N~sFLbY+^MYo{5q00Sbz{wY9?T4^oDAU3HA`zC19pNwDmS~w8G3+N_hyT zcMH0D>g$5(>M}HtAFw|d9bbmxLS#@Ms-gxHErODt6&cR_d7%VtMRvo3MzAx(4%k{R z@m3UI1)KO)xZr~YIM4hYfDLeAJ-oQZlCnt`ZPpNETr9xRRbDi)<}iyc8UP}ui#nE& z?xKbzq`RnM-Ju*s7f1|2253$r0V>Z>d{F{1y^rFH!mtS9H>ZodUh9BTja*Qo5#RYQ z;u%UV!c1@CkJ1a&hrEeD%3q*I1bL(41qwxtN{AzFP#LvDQTu4`GuyU;*5PJb`Weo~ z)h^IM>T&gpoAHf{8!o$zi#&%(C0J0FFo+ou7|&3XG$Qr(R=0T(YGi`~jU15r=oRkun4$E78rH#9u^zU9^|5o<09)2JzARzG=kaCXuy`6_ z^Y8?lVpD8_&GLX4kbjOc zmV~nBKGtS^h_$p`K*5oJ9z9z?#Zh=3V=<# zd1Vam^FR7CuT`9KNNzrQXL(^fzkm5Jz2tMU)t@u!@`wNM*HJT*H+kZ*{O279V>%AT zbR3Lxm%MVk{t5SVdai2m#-jmJA5`Of^ldi7lAI{%)( zo?KV*ncqFLo7tJU@0q#xzV9*fs=t7aBrf#J7?}_I6?@v}C_!`LA}ruWKaEl}G)6;Y zhX?&N%B&~oSshH!{{v6qMN^(d_Drip!v0QkCVNauHNG`Mj4++D2 zpcxwaSByZrG^;J2Z-omTFGix(8s5ca`8~rp&ttM~iSb?r3=(|yd z25~M#t`%PN=fLws=eiL&SNPD!qa2Ot@HHyhZ~Al26%}Y~=S76xAm{~xoIlrxsIVf0 zULq$k3ft4}xdC+aK;M$NK{OM*JcZ_d$S-q|FXrO2=X?&UHJcM(p-#Y+cTpjL++O5R z3PJSXLi_oG;TVPVP$A+t30LI-JWo_bdJtFVemqY!jCt0y56=({;dKFAv3v2{&>)ue zW7Vx3@TsdB3E#SvLuRxl$0J>bEH1XK;(Lx?2hc)dipiMlc zt@#Rim$ie!$@%Oe}c8c$e@XoA5ZGW;~xB(nta$C z>rDAFWAeB@OL;SiJSr+uo=j~%FxHcDXX^5}TueDL^?97{Q$?9^dC%BDO39!L86H4U z$RP9Lu@uO<_={d-_>2By_>2BysfqZE=>3&KkFOMZd!^9ZD>WIbjm};vboNT2vsY?b z-Yld{mm}{-e!x=;&?p6?5KjtagJ=v>oN!_~jA=L0vA&bkYyiz>A_*l`K+e;$XzqdN zcq)sWr)PbrAHs6TX-3vt>5mx+C$4Pp;OxpETFtm{ZG&emR))}|22E!$?W_#P!e+vY z!enH&s8Wq#41Q$6lB|MhjGv!COPNV{f^@8?(x0fwhGQ61E-@w>ieV(5L?RoEp}9(; zHXDd}D&2{?tUuI<=w*h# z<|)}ws%2;V+j{pp5jS-6(KaFK%)svV?=l~vOpt=IU{qZh$+L^<|uedatfv~ zPgE=7jp6lbQZ<)RbeGcfFcwrqmbhj6elO4WGJBcsIZ@BXLUA9ILZpOj?zM% zqr~bz+WXqYzA@$`6e<6YPGM3sxEu~;UZ@q#CNPq=2jA8!^U&>LNf_g7dz1KPzgC&2 zwiYc>C%UKjlNiJWvEHg-l3~>o5qMO-%aCz>fcR=IAsk^Ez>H#-mr$ImMDxN`mBMeCBi7$jR6cxEfGf8 zZuBSJR%GH|`q93@8lyT;tDv$$Z^d}rjh>{h%3q6162u;i;Aag{?W@I?7KkyPccTj< zRC{Z!$_c#{<9#b&HFQf)(;k#NSf_flzrdH;Xqi~4lw+;x@vT-Rx*=NS7h)Y>k-Mq` zR;k7aPicx_0M7Cg3410Q6IwouKC+(KU$4^J8ccyjPIAT@@h}aL`#5jTou}HYz^7$ zD|a$-VZdf@xr>q0j@*pU#-Y?*?nU8me;N$kjIk{d6%ragoobD4iAYJPXib2DwM&c2 z1Bi>zo)HgIK#V~y5jzt>6A5UySsF&@PWaJA0PQ+URYX>kNHk)^Khh9+(Fg(U6tNNp zA|DzjV6bhhZUhkq*+-iJoKZ@P5#f0@Xg7duUyA1mS7LB|v{wva3s`3=JdCEk2q!XE zX(=K#alGEF#OcdfT82l`NG3Yl2a}Gz{<(?8Hj)ts=G2nO9g`tg=IGVX4)}l@feT>I*R0r*-sN9dpT^*>> zOw24`++-z=FX8N&AxxvKFQ%=rhph%+ z`J-+-!a(SVtPzL6vNUkR$B?a&&0*jwUaQ7hFLz#Bs=uA?yZcc?es9X2iPQ@ww->c@+IAfbu z)%+x!svB|sKLzK1tKQ(-I)m{z-J{L`jWdfK^*F`X;j~_hyMqKy>(+y7@%<=H|CKo9 zSJ|g|>l9yt;UcWAV-(k^@2m&8p$+KpQG0*1X&YQ0H4?@fDA<*nGUI~mD)5C>4z@0nsMwXP)Y57Iu= zfxGMloJrgxr2VK1ciVAMa%A3_4xmmPx9oVsLK3H?bO_U4J1)x?(qYt;`w$gstw=>Z zc>vK^)RPA>ryi9hmKezgmG-VF7z>Bv-=KAh>3ub?lxz5|6Kz)~;jwR%j*rC=62mQg z6$XMuy)VXXkKuy9N1yt-Rc#r@t{HvU(vQ^6cFLhvluTN6`Q!DM}4qTUWlPctqS4ac(eHGwY)4_ zs0!ns_z)HBNJS-X0MS^yYcT7sug7}@O-zi#TZFQ%dJH&Ik3nYYr)CTF*eY42M8g+M zT6+OsF!}JE)$zq8C2ABm_wD$?Z?O{7{Bb3W9MT5(ZyWX{RF7@Yfv-lUR;mLFw1eM_`-wK7h~{-#Tc^%E2__qve-M&}jZrZwak0aw+x9y`*;b+~lSK{K`x?2z7LSDxOymf~j#PTXKvLx&RrlaV2~famTo~lRi9sHUkn7PD-218nO_ z{?yXd$dy{U23b){k3ojh(+OlFJza~;gRuzGb;vv@5z=Fkfr?NXVB9R^;vfdPDj>54 zFc4J$!%+D#2$e5=Dsp`qIlT#)85u5(0jJVak#Vix(~wC`&o{U~H+}Vb)hO#Yg_Xzw zmZNcm;%kbkIF3-O;=UROsAWyo`a34;#k>TLWWA~uhi?HHwGM|bvS-y;9KuD&nivtP z-ia)k#G&j)cASV`3~YkImV8yGA`7OG=bDhGG8k~F3delaRAe6O7ZsybShK9QSnn8> zQ}MSl7slVwI7Ic1I1Ws$qZ)^!)=`6lQ0o|jLrw2U;P}xyYH`#Qa#}|njv6JWc3@N_ zRPTp6FuD;A-(W`)N02)g=$MFKj40AEDd+1jPtAEd(m78@Q_j_aL#+dcS_g&(vVTv@ z6*{moIgST}a(*;!>*6TutL?{>TjPh6q0BGEZJis3nTA_Cmwkwh#a_oSIXDW6aF_*A z-WPCG1?+P{BaSHRd~hm`ptOm@s_FkYOceVBahi3wc)t0+s&P$!O&-5l{O0iMz|CO^ z{(OU9>t{WF|I?mwI9lN}PFKN7na2Gj1{uMRg5Toa#1+1OID_+=d(EGOqt(HA|6$E? zs2|U!=h2Jks@}UVQ%9P?^L}C{1TT73y!ZloCB2E>DPA^8ymF8ZiL0#Da5#cj$v+HU z{d0-0evJMP`Uh&i-gE@78<2z_WyD*5B(6~@|KXYy690rNxZ$wGo1YgSeN%jLgZMO8 z?3pr&pQ)p#i#t-##2WA5C)~kLxZ^8X;N?@qKkO6tSBr!HC4S2EAx+|=LGjo-wjt-0 zV&F?ry+MpzPIuY=-w}%JWx_%Fg&4K=w!;w`H(i_*qqD@*R?#1e(_{rhXYe1Mxk%Dy zO%vyTUu?gc-eP@z{DbzNGT}k7ga7E#e@MK7E3)DgiB}Gb+{YpARJrugc5ao{fcfcR%ClVXd#_mKELSMYtV;QL&`4;IM$kL(=k z2p#&P#E0G&KYc_r|0xGs=&N%j;j4?q!ryJf{;U{k5+gsPYs3+fufrvuNF0^?9j=H- zTp_zITq(IJTscb8$4Krm!{citVSFP!OPq2cm4hsNdb`BUvWvpavZcb!Oh02#=AR+i zE_|jU@tLyE!)GNWo-Vs8Jm)1VHXY&lPMI;kSUm4(ak(6|;pM-S_=b8yM8b6y&LJ{bSHhCzAN@})AwG( z_*QxkeTeQB``(cJAI{cG!eiWYk8{&K&P})NH!^?Qm*Nw05Qd+S5;Oe71(N=&55@jc zYMnXo0sFZ^{e2QYBL{o<<>iw9!!JK5GhY5ReUbi2+%rzxzeyZ?Qv55o%tzc+hXy76 z5I@Mr{2(7o5gq>GkjyX0mR4O8vHkI*y3VBMP}!8KJ1(*Ixj2%`kN&H~;|k(LISAE> zmodIxoN~7~{Zg@Qj<`U!gu29(Poj2CkQtrL;?g4ViZ|(}^q9D^L%deDhEi0w@mDm)3EwmRpM9Pp;A7muev3EbtD}l{&BAOrW82p zo68tqC+@#feCG`+`(AzLb2|>I@0^es@1B19CD;1!>&I_k`z6-~hwpT%hi~s);=-_M z>R~z9^_BAe`pT>Am+32SqH+$>SKepG_8<3Zhr{~CkNOoi98Z$!(F#dFDuJW(sZatZ)C!Hx{*FkchcACyYy3fO#C`XE9f{nh0dmn=;aWHo%;2SOju7h(#Ppe z`Z|4=eoBvt!$Dd>$I&TtHeEz7mtsO4zL5#*=|=iE-AP}k@6u1{G4WqPT0zIrDRefK zQ;qtKDaC|(OiE7mn4HYiV^UD6$3Bx696K(e)q(Y+=1-#I>1lKhJ)f?m|4ILg{*pey zY@dIg33BD77UUq*oFCcgnp+NT%`FGF=J89qZ@n0hgI5b}kT|rJ?x1_<0eXa*!!i-} z(K1>`o9GO>P}Jm;YmvzkN93fbMWnpaN-vc3QaQF0ZB2~ALL;q#|U{@2c5z!^Q_Qf~64+~iBS$>rSX(3bI&E|bdyZP_e&-7-0M zY0FkHzJdN&y!-|F2K_+tzjhV(*;V^w##P*BSA8XM7x!7$NXFb{U6UAZ5w9($T)}I( zg4eH+^y}}X57TFuEv}aFZ?-Qw~?>=#Q~YWi7T*)E3oNlroTkr5+9WLruHCbJjfXj-6{)g ziBgtWTbQl3%w&2yy^LN@@1XaKk5$u&^h|M^y(^LbpV%h}Pw5 z;?vxR&$7JO{-&hwk}EK6mt28qyS~qKmJhqGVEiA{x-c`5|95d8?b;?YUYQ`i`mFdG zKlvM6vAq{b`rd0Ox7gl$7(Yax7WeTW+{c4(KR>`<&S(CAf4(gE{w4HUx|aToK0==r zKV(UEXraW1mebYZ-)m?iJ&T@8FJ}J#`wyA0M*PA{&!cjct$i^h@z;KFm@7QY6&~ga z4|9cwxx(LkXfLl9$$Y(N7vsIy{`k?In?+wg-AyGM>b^n7vI08B>#}}yzd_@os?yuU z;z_hs93jVwUiy*5<>ow@IBAm@ZxO5Rq)e~nKdw7j(vy6Hl$@mW)G3mlI)k1~mr}W) z(NniDmI6&T8>H;k(~^Dkv}7MWE!js;XXOQx`G%AEhLib*Q>tYClvC&#l*^y7Q{uC} z6kCgE#1^ef_y(D%-W{a@nQE;@qN&_*h?0{Z+QVywJ=9zRL@ zd|9BQPh9k{c)sLgeaXENFKwVaR+hFg=KCz|V%$x8DBpK!KjYn!|MjH($UUHLoDL>)z%@VJW3l4ong0Wn1=qsi(mg^0D#WKnN`iko~gV|=qeT=uz=jbbR zKRry3ikEw62~E&b>2$h)F5|&-`E^XVjowGM(C6qYbU!^zkBV1#XbDZwQ|WZNfSSuV zaUH#l-bc64=jbbRKRry3iYq;|geK^zbUIyN>)7724$r>r9la(rd;33%Lvf||tK- zcgxkf-o2jjM#|jU&D`3}+}iyv=YL9%iMIr41!eAEXP-HctAE@pGw$XJ+|6?BZkB6z zvs}CTH(c&D`WN~M{g>F|r%^hVPNp+yJG63jFEdN;7c!%_Aa2lTC1r`e;dI9H=!J9@ zHR)aS0s0i(MfWmS-@ic;?%zsx&^`13mHQq2{$YuK?xSV2jyBO5bRk_%SJQRO)j!|B zgspT3-9r!1BXn5Y=%Zz{jyBO5bRk_%SJQReR2w%iVJqE1_s|3M2ptxG;iF}=jyBO5 zbRk_%S5tExCpOTnbO+r-56~lYSp21rmeD%eL}$>2bU9run!jAfgbj2n-9h)z1M~ z9c`jB=t8=ju4ex4TgQYAbSvFK_s|3M2ptw5^wBa}N1Nyjx{xlXtC{~FT*rhBbSvFK z_s|3M2ptw5^3gI{N1Nyjx{xlXtC{~FTE~P9;=`9vxn0m7=Iy}4a=V~E{0QeiOJAn@ z=*RRc@ewy2NykvM*|vW4M_R=#y7>4Z%1gy zNWx1mZGZjV@DI;+>aShKYlzn#v1b{xzDLiY7t+gl4KeVnouCiAO!v``#Xnsm?t7np zMvsg8!}KI76>$1~?v(@II$!1=xP)G7i8AECS|=U^LRs|-2V$r)X=n|>gEw1e)U2j~$xEFSXFGFnHQ#KV`- z>**aVLk{21ge?7y_!%!NKa)BQ{WGc4&_A>4G_c~INtK5FnN(@$pZ%8UIr<*`pW^3( z;t+Sm&?PKGhU|Ue(1*Ayz8sPTzd0cu;|=$*QH)b`8l6iopjXnH=$&+vt>KU@Z8+|e zGQ@Cfkr_pK(e;?t_s1itEf@#FhlY}wclnE*QjD(baMnXzIBO#@q zk&x2QNJwF4B&6^&#!Bum#vYLO8!NfP7&|O+z2pv~zKpS*J4}aB&wY}Vn-L@Vt}Kw0 zn-L>8JFVcv?_w=B{bxu4(43X+E9v=g|wPx$4^qdKZ0&a!WLG1)2{s zox7riTcD*v($8w3%!X%i`BrAr)X~r*! zGr7xV@_lD=m(BcI=Fj2^&nmU!pfRhKGt#}AyVTO&T@(C9@9!q~_3f{G5kBpD1$7la z37>8_?WMl`W6Zu$t}~3;+wHXC7O6liZn={24fHm-&M?m5ik-t1JBKTF4p;14uGpnK z1uU0~AY=K>_8S??TvLcZR*)oxexsqOS z0lkvmMDL`V#L=plkX#(8dsE`^rfecS>Oc}EwusGR>0~-n{NCGQht$tUmfR@ulJ#_> zcu}{w!Vs@GgYtD(NVbfaSIZWNTq8$qWUXYk$XY1}B5P~qg=^FFd-OctaF-#p3 z#9V$;RqY31~% z;xsu|6i>T_F;~<){c1@#{qJJ46b!}9OmF53n)yb}4|2I*(--NV=wIoVVoMQ?&?6G`mA^1a#agDmtJbkvfiM#^KiJPckvazZN|y=;@|!$KI3O{ z!BKq1fSp#{F-YY`sJP=_5-)Pg1xN8LE--6IX3SQo6qUuZ25k;X*!B$4>Dm${JugB8mA4kg|^X7+C{r*5ACD;C9TLw`s6pejfws^#+DW@;H|?Q)w4d&_ME*Z#fC+2Bu#^9GnONQcCQ3N>h)HqaK@MmuR2?WR4nkM>h@Hzx+@ARQ9h6>88pZJ;f* zjds#5+D&_CAMF>-_T5Yvpo4Ts>`{3 zCFFT$Rkltm&#zleKfHPd2#QnEsa9J4*DdL6UX|l58RRXQ`A=JNOG_BLTGughf71eX z6D?iCcxtu8AMI;p?D=j>?)$G=@`Y$izVdHc^5+*@a&ELG|KkHK`44+q^7GrP@;_Ril*rwU5)x2QAtEKeyzQxN%(HpwG5iioOzVW&CNY2Ixostd;(q z-IAaGH!b-uS~Wrc@3;IkOa0T9>{#29oBy;W3xD2{fAVHa{^WQ|Ue2`S-@oQx-(Y`f zwSbjBYf1I$s(ja%+-hsdEuXdIK7HGU!GCnOC4c%-OJ2X$l7IG(Tk@Z^F3A7(nO6F5 z53kBrdBI<4ok;Zl?|z2J7g}=Se`?7Ktu_=lVy*O_Pq*Y>{CrimE-3!u@2{p8TJkUd z%a;5fAM&MSqb<2^HNEqHX{DcZA754Wtjh1N${()ER!zt!TQwn{dZUFO`G+m}>XR+` z+Ui^M+OgI2E35LIRe5Dq{(4pZt|cFQ?Jrx(xfW^UId3)HYHN9J^-jH}P-%`OKf#C(o=Spf{Pv!TP-lojP{(*qO8A$B&#m?w^lj@#v5?)N|Pjn$V=17Dqy``Pl1*0Woa|A(KpChxc8@fOeh#8=0_Q2hsq z)^Tp6C4ahFHy2ma@Bh6P|K-*HzE$8_tM%k;%aq7Z{y_`>?a7w>^HsdIdZK^y-?s3@ zLoNBwpKHngwPgY2m;cI7n^x-q%=kZQrPpt7$pP8ozxibALgv12w=yRBTJm&@_vVl9 zw9;39-I5iyDqBxz{&|a5=6{iG;eYiPE%|@`l`pOE|J9P+|72DEi&go*wfJxKKGgzt zcDCebi@(;y-?q{(w4T6vA-S5~uqwB;qVy?^w@jRsb0@|FFduu3%zGg(b@xE{5?J;YTxoQ?^(4@kB`LP3)C{6 zGZK0)TuXY95$nBJE#@Uh*n7!Z*i(lyBkHMiE#Qg6u@U)HvSxaL!@-fjQ}G)2qKD0q z*i(@j@luEBNcyQz4Yy;E*#X1lvric2>^8%heZ&aOK5Rs1A2isl=xncH-3rfcFhaNN zSz3R^{}DFa65a_^?)J9 za65aFb<+rp;db`K>)eQr;db^!>cmL7W4NC^p*rqof!rQg;J2SxFmG>LaBe@c5W4;F zLiF~73+ztxcJG39CwzOuLg!7!T$HLvFmv7oy{4J~kAol7-Yb z&8LS#Rlj=FfWZ}NN1=8UYDb}V)PqJ+^%@zq!RSyA7+vaHMz`uT)~k%stCGfpDrRg^ zVPmTb7>_B_ctUYwKoMh?awXdTbF}~GX#dY2^8%l5^}?TTaXs-#;PVGP=M($$UN8Cy z|D04dc&Sf#rP~uz(N9E;RJuTxz$Z?v16&cGgusH-l=>tJ7O?a2sYEU6Ip>2@=~~E( zoHwW1YmS#ZPo}!S06LX8&*l;}R^ecQITb!{&4p`Lg@Os8DeHWA&b4acN^FXqPt37e ztP-D6mA1KfB{C%|nYm~sI2C{lR!GsFiXul=cu`KJfsu+?q*JVx1nLxRoTY6pR1DN? z$Y?QCRB?)-T%e-wJX*AJ5ooNEDzaR%LTad3gM5Le`T|Y$#bZX`i>*fZi!Fxu zUEqrc4d-|E7rjRGcl-;~tC9L0>eUdl(cg(W>J_AS1HW_X9bmoqT?l+m&8pu;!Dse< zd^S;!8qWK{*>pW*MBX=N+v|>ze4osAfy;C@@jfcHj*11J&Drq#sMtCx7Mu>vTJMMF ztUBs-mc5U9t)pINSL=0lwO(ge>(wpVvtL#0>{k^#%j&BYi_`cOTVJi%`fA12{fe!B zRk8K2Dz@%dtghGkSM^%|s$T0~)oWeXtLs-R?tHak@kFZ?TSvt%kOp4K242a=V+(=C z)`f6m%YwKYXgs*!+_f9M3(>p0LCPBzQg?Z|dqLce-W63+?!xOExa(9q@cN3oA-tHW z+v;u!UJZ?{*Sh2#x#y9;k6y`8v$imkFT$BSv+4&Ok< zR;@C{%Ne?D-9W`w!{yj*b^{e#jg{lKRT+dWM{dh92wM)`4nPLWq+s8UB1e{aLEcUS zBW1HdZ?kF=s8g_U7SwCO4ODF?(L$)oArpm26%|_uRz=xoEDAbhpRv#)WiU2pLrax? z!WLk3%06Msk!rl`6Bb&i>=U-EZ``j}XsqnlYnfDi!v5a2xC)F_V656=#QwmzbQ|AN zUB&~d!`SeZafuoatB~=Ca*SD&m z!%{@2RBfYYpLg)mu7{=IQ?l0WxykdYY1O(s@m~16Xi6BFz!ui>V=G7b7_nm!$=}7Ao4g(4svg z3Is+pUgWv>A|J8}tdc3JW@gbTC}^S?$3@LTsu*YnaVb$q6r)YK7_HGlw3up=#dJ-} zwi;|AerYaMbRdPBYb$anR;~l5YpXdqjv{<0QRA?5vIavr6t3AtnX~X48G@mO-3uT$ zF{De9T&UJI)Kuz7q|*1KWzRKu!w8RAy>ebJDxmVsN=`+)|lr_n2* z@5dUdo-pX0_^nhUYM6IIx7r#ZBXmdJTGMch#2s~OZ9~F5NAG|k4QAM11nz(#4P`{W z5bhmNq>=an6lp}i07aIg4LlPxXBn5sInbiZxNOdZmReQ~JIB888L}MAsV{tnEJxrI zz>wv5&SwZxya9&f$g-+~Aq_Aj$Chaw3~7KNIk_zA=>`~*bM0lb9&dE!tYxPjY&?(? z%fY(Y=*`h(^iLWO<na8sL0qA|7;VVqXgyI(HOO+h9(AF#AsNB1PYOt(IRWW&0ur1+37$*TeNNQD ziCnnua{|ASoDBq=KyJb>iTbOz;T%p~G!l?@-D!k#;6y#zupsSvvcY}aCGM^Tx_8Hd z*!%c`wf8YtaItsmLf|&tyJaDEdo%2H^tP&QT(ECAFrDicA~*PLS?z|oR-RSuS`c@_ zH-sl)=>vDH8v&11)99Mf8!=B+6ASdW@jEFmx?uh`bf?V=Erfn6@2v5hg~V^wowc5X zXNkJM1t~nXU^fE41t~nW5NU|tf)ie%0Zw?)1~{=4_3%v4oF!Z$=Rk`t;j%dsT53so z;6y`~VKtV(iAJCdtFZ)5K#C=B0y2dZ_k2z)scN9?cs?hVTw0aoi06}HNmSFGCWXCZ zR^uMergPSkQw@4{Hj@)e!K&#+pwT7t6ulI3)e`J_A(3vN_H1v?vB z^0@&=7BBE@e97lVIa5$xW(nMYCcLajZDN#%mqMlreR%tO>NO@!lPO?Dr zDX*>S6s&v%l4i|9DDOZMSzbuwIW#Lv3T=6%OJ#W#*ifR%3szQE!+F?`s$Gy-t7_+A zKdRvZ%Lb}E5BpI~6n2wrs0ss8z{Ncn5bf_g7?6Thje0O3NGClQ5J=yEC>Rh01M+pZ zRqDTIZ*iruT`}W3N*S*6q%u8HqGOMiq-Txwm6#VEd#H5Z8;OsRflVbb5*RZFdP>%a z7z+)oD+NXp18a5asqg^rUZeA$vIYX(Z6z`ie~J#ox>F@ui#(7Jnpp{N?rNIox|*A5 zcXyN45*4ypblXil_PL!ybx*n#;oQP&4S$w6`h=Re0D)JV?~j}sIeF zB`62HML7q^D&v+jE?f&J2gs)!WHJ}mUQQDZ-Z9ef=?2Yi_++btW(}We_07dhy{EXQ zzP7j)p7McuM{z^lCs!Ths%uvjt%F;2pIdcstL}5F4sO+bZq+j@uF`%IcLr*q=VUe7 ziXax49EJv36+x>;dy%g=#WoA8~)L5gmD8-oi~!W33Gu=)A2{A z<$^WdH_aBp;}1>WU)T#G^>3OMdqJfBo@r|@h}6Gs+70YY^sm*)p>RK+SfdLJS^a^D zwrR3AK1BOt6RBxhjSbOie1g0YpB7c*SA!Gg8@{|rJxC2 z&ey0u+Sf8(0)wpB8y#M#YL>%qba`eq?3T?p=tQ?itBEpsLrmBnm;`?u!$^fsNDoZ% zY&bqJX@YrRk{5yJ1Cu;338z(M7%|NxjDujqG?6g!StSxiJ|I##poxUB4~SH@b8x3c zo{yDb!^$$}!lM?QJUlB-6ZJ$fnwMo5u^e1#F_l+k7_p_a7t8YkIJK1Vf_b|DRzZ{b zNCCV;F3G0~FlJ>3D9vUH7_&jMvgrbc3}+Js0-4N43!s$;dzK~ekGvT1OjmnfI7yf= zFH~@{+8^6R;l&Cfi#eV`u$U=is_4-dMLu3w1E=fcgN3zK9Gtfb4^(l&JS}XflB|}g zDwtR0*=XJ@M62Ll)y(ShfhyQnwX-rGE66JNR}E%W9zMP5!n|qk>m>@T#lfuQMG97n zh1sxY7s4$bW)q$s9>Ba6RiVvW<)U`8RiOF?t0-NKz|hGeytWsvIxvl_=v29v#0{es zim+~Q#o7()kz-12a*cM?W2{l@jJ0a5u}-ZqHmWvbvq~8cskqUnBF3XCXgsbgV}}yP zPDKqjXegIwOJpFX;w-B#bXOKMJbhx;~_7@S|Cuct)k zSS8*^yVsTMO0duBURw%PL|>%a?JPwrsxJwr9mYT@1(zMHU}mQ~jziGzh88J_IaNv3 z(%pd)*Qcqm#Y8vlvr1&nu7qmVVhEQMINq#97R~NZA1%c&SCw4UmxhMnR=iIYkq<50 zr@C3us)V51ebnv7D_%)9(~G>1ciVc*r3aKX*&Wm)F$^I!1?8N^5qjt+y$ za4l6t(_y66R*bK}FGGe_Y+qU{VPDdfBwRij0{aV@W}qgA;GqjKXu+XCF@WwtpytMg zB>HS-)2U^KR54v3=wZNp4^cRa0?h?2 zV))HfPY(tRzq#scIWb5NS%%+Sb!$0VBT$!+F~}ff5Hbd7Hk^6}lE4?kJmn}{LJ;G; zD25bzz$DQf3PFRX(VZb^@H8#QQFn@6jkU#fa3-4?$>J7xGc?PzOWq(8-dm7C$5x%r(8qG41xYRR^W+}%n(TR1_b~$*-npis>DvL{z ziO%V0SzSuPYlJayNWo_W%b0GOh~o$hRG>ws(JbXuH9ZlSMzfUTRkoCvpzbAW8tqaJ zRjs8EE-7#Vvl>}4CqkF#bPN+{$t8VhXc&LQFR23Zp@lE030APmA?P-42>q{e(n~M# zOMJrCLl8Z{s>+F=9++U*C98BIQgA#p3r0k7jA76$7zeqj0$wAGTyz%=FOnC7WyUnv ziVY2&Jl#0ZU|Nf49ylK|gy!)ARS6k`3_=DWW00ojR5Os6rLLlRhA6CLu!`mxGNIX3 zG|x~78ccB!?+`S0po;c^0wY}P@{&c8w~FiF=U848H+c@MJ}Yj4TQc+dC1MJ%kisjZ z@CvC%jfmk(e8&!iSBQg(%qXd z;z)P*U<8teskCZ|ZnpVbr9ds*ZEfx>VMeDrw7IQ>0Yi6ubE>4rBxww6Vi;G%HjBP+ zDT47vaI@1FD23cw6a$n9%wz!L2f8^46B($rRnmQGgyK|fl~|t`iPhRGfj)C22`T&R zkv8C@FE9eXR%3HGZnrbS(MPv1t8eZ$M@;n6F|Sz(?dBs6`stYMti*Sd5j>bd4t?Fk zxZ1`<2Ol;PgQ%dvP3X|32Yb-LO~a^I^~50C_bnq(4-Z=VIt|QApg-JZ#Oi!7zAt6y zE^iwB<`}xIv3=rD*odGz8{Fp{3K*d}Ze?Et1|@*rDczTZF$vW1V2AKvI1?W15FX5} zi(1M@t>^jKiMAt$)?GrZ@#3_iHD~X z6W^XrPi#U5D?QPJ4p$nlrBzK#us6On9jLnD3G0o{X^f)LKWm#t2WcYyMrvC3!P4l* z#n6q4y&*1zrz7ZI1>bNk1*SvQD7s@2ypjQQm*^WwypDltTRDA6 zs&6v68>>|7u}bx|9zp3}{f(V=DTpk)OKPN}#6~hDIg%{dBe9Y*LJo&99ybp=z=DU( z5+8{j<|ULhP}V?M17!`A#R?!93mYgq<^T(hnOGZ)jd25Ir&YdVn&mUoGM}8b^Ra0s zPsYR3R^A+UfCa~0a~d7UaX#&z7&F}rGu;x)Xf~G7f>=h2Vx~KxOuUxdP&?9x$v_5c zm-oCKJ7S0BK>Vp_O?hlb@Ni%t^i%@6*kK-y4p>+RRi3$n9!?Fgr`n-gJJkBjfI8TY z_l)SA_3;65u-(Nnn7M+fyr2ND88w~HNO9bHei=`sNzd^_7=u2bu|kC?a#>dEb7 zhik2qK14BbKs{@_wa(ghzdxHfNG3&vd1|ZNZUds(_(3_zfY7bnM|d`T(3vDa7!Yfn zy-j58gON$*iLKO6n^}G^j?fhVo3 zt~2_k#KAb-IeA`f3qC2cy4ut#N`Z!-X)86CiNM8jArd^(xb-&5aA=rNBA+; zr+UpzuIYmo3dv)z=Dl*04J7!awao;g`dBaDq+WM`IX-3{Q>S<@-9&uM_Azx-9-~0j zCI*zBCkIR)r$@yx2Al(>=h*?_qwFX@CQi{_2~@e~#Q_G`^7v7DjGW}BNU!y}ea<{U zpEQBWqv{v~YQJusvkxdAGmr9<0*I-R^Ae@3qryi75Q6HpJoSQk)WmVl>kJsvwF^uh zwS9~L6R2I=bLk8Gs5)W$hu=FlI%*zJcvjovFVLgpgah1qosG%^1kYuA;stV)0p+L6 z*ZHV8K+iFt<_qd5_fh$}7-a|eIda|sD*f~F*UeFKK%Ucx>7S9lZjb7;nvm`bwhyUQ zh)(bq)Ju+kGJ90LE>Mh5uonn0`y@N%j1oMN~(T3;K>Q~g7C3> zr}pnRNBQdts5v29$L<%S;&q+2UQ(}EC#;ivKOc29q{eaRaq}heihV+!l>4b)kd6zW z@+Ah8pS1ShAAJpH97vCmof(8H+%pCSVqhi(n14Vj&4upJJO=$sAlomjX-5(&N`w9^^PK(_|O25V@sSb$bJa9)eDGNaS#&0!XnP94U#EiAz#L?4U?nNK>pK z<19Or3&8GCTQh@X81}|ckH{T1iqNg`K{*V2W6(#qkMOPGL1!5D#$Z77QDUn-7#U`U zc!c_Cb1NJ^(&i(|Pup8l!&n)AL~SSI00f8W zVU38*6o>#~4htWVn+Z-Lfv{oou)t}p&32E4ld2wjHBHW$Jx-ssmGoFXVsEDBL{G2} zHm*kkv2YAKr_QsUFsvHy;fIB5sIB@`;@rLSJw4GrwpI4f!xE?jYM#4)z9-g4wpu+3 zAWW~m>bXQ8?!>^0xs@WVtwYR5C=dcf+lGjbz|3qVo8)Gy-}Uq1J`2ae&S)FESz86X z{}@5{m;jYFvzvXRa2^i<45sF^+@v;JC}{f#fkC0C#U=;VfCOO=QA(Q=b{ajGbdWn3>R4<)q`EQ34g`2vFaq0M+N@ zKw-dK!#63bAgU=S&)J6gg76QPuc2~%!~zoVFM=DE`>{C_fUu=*$yf447JLcKg=&h4o50w- z`I$gTYa<`w`)wSnM(tIEyvj%D{=oC*5i)A|n7xq#Q~N{D%OiAD0<-jyuQK$oL(jYX z2p{FEpnR2#(8J;9=@B_fKa>6?)GOwzYJ>q*N32ohqofD716<$)x_adTsQ(b_;TxHc z2A*fAV7WjigpYC`wV&4x4@<5S>><%ZH%g7Vhpp!Y9G+Z|6XYSYM{TtH!t!}jS29rb zkk#Y(7=PZ{Z!X}qIAQjXv$l^hAJYz$o)A3@sCbodahUkHcA@M93@vc>Dg&<1!0$n@g}f>_JFF|*THxcDemFsT%(J*8r-#Xi04m3oe$&ocuh?82W+M!kIj-R9 z?X#xFP?;2%HBNj?0MiYjfRQmdPIaf?Ec`gfO^n#U#5ng$QWqfZ7$6&CU-I`(){XStnH*n01n+8~5yot|kM#)Vya$OaI+HdrhhKA4ROv z)K+Ir>F;etiT`Y?Gvs1Pw7u9?u`r#{R!l$!kPbmcA#F_WrXYC*Q>7Zmj70}x1UsO& zel_xY{C*9S6YW@u?IhOcjUvs8CepaE zgAUS`UUEQs%|Qz(rx1XiImjn5r;bzzsl-8RlKZL1Hkb5=4~8ZYWs2dNQ-~qkIT)K% zHF{pX>=fci%Y(^DcAmU!6_QAigBhgg%Lt%C3ITPK1fvN4vM6M>(PCTTX#I|4&1Jp^1 zj*d8u3!IOkt^!32P$w}|IZa>I1E2`%%SL_SHi6ow@4bBPoOwQkS~F2=7^6-Gu=46N z9Mf7p!!fDlGaOS|?L`+9$BdRwaYSAs15;O^c-^PC|ErPTBXI`Z^GJT3e{=ZPX z4vJ$H7!_!|Pyp!)JIM3~!*Fhh0#-4vII>$mq0V_%YYs0L9V2MwAgkuR!s` zi8?6W0L2f7v83AG2pqPtpqgof4vV^u#)=$Pbx<5>b^#P$#uWNt>jEggjEfu&T>!(E zgAH*wegO<$wh;uz4yP}G;mg9sdbaB6ywHhoEm6PMvweH!0vm2aq?PJn+v69k;RIr# zRFBvmz7QM^FNf-IYTNA#v0+C?UGp;~7MQgVB2nChPC z865G1xgDdb*YRSUxqt3_s)qsy0bnniX9z|SNmPfqJuu8)2YJu1a|u)ks;9>W0)n3r z=VCpk>(>!({&l<(XUuaE)QqktIZV)1wO>|eESxHYDpA`-4<8O-^%ra|TbRlOn;`>8 zhajVnHr5eRki3jZd5vSbGKrP#ZHPUvhKX()u z%7WKeC+)zRbE?pW=-Nafg|OUMA&!_>@EVJy(Xyz5*I2(r1Z@?(_MC!Kj#j~I4;Bc0 z$W#@y#`3AkGjtTu@tteOGBC|k^xqH~g#a>|H$QU|RdCx=dHb_47Hr$Sz-KlVYcpQx zGf~x1Ws%QtBP$7{*&?{Tg!PBdtVM8p2^ab-vD#Nk-e|=|!DlFJi)PG&wIX>T=>mG08_G^MQ*| zq|6uDq#O;*M=pkuvR@>V=BPQJycn#~{mzT%_qe0DrHhWAMAv9^%|)yF<;ed1KeAtB z`|Z)pMLv&ZoDupX^F@Jl;-WRrk>)=VFPcb)FNWq3Z;hU({1JN*J?l~DVr*Vj>8t9r z`6K$G14Ld-&a+p^Y561aVi0L^F@rQkepp{$O=jj5xVpE|NX zFd3LvXEj1kGazA9Au4p#o_Fb4%;uaze+O_7b*XC>&v@23Wdd5P}gLCWL^Z zbNV8m6r+6JjT%bT+M4afa1EhIh@uT4;K+f*x=l0Urx9o5%Xa+Qh?PnX@d_enS~0qA zC5g^TxEL719)Kc2n64N~RC8YptIt+uv_9#w5! z)0vFaHZ+5if!fAqc+#wGYDUpR`F1lt`A{=C`Cv0WxvAMUxv{D0ZCKh3*AoqaSlJL_ zgB(b#Yc(Q%8nHpXY{##SnA>E|Z~0avu5S2x*ewQfe#;|l7rS0`%jf)-M`wU8qva9b zWiIOu0a|_;Esy;dv1PP8c3-5I(eib){4!d;j+S5cTfUB#M|3e-zK)h(_FKM=mS6T; zzK)h()-B(*5<;`PiIr%MG<2)S5gDu7Je3m--QpQ6aQp3@lW@{)#ZJUbnf0VEgNP$W zQ#GPk;zrXo;&oA6ld};EMUW06e2q5H##myM!%!fSuK5g&f2ksN-oksjXEXdB+xP}MfC zy%4S<5(go!A;jC@?MB-6@OJC1ARgXs?a=URBX|gJLK$%xSbDPyh@mY<3oOqNNsAY} z>=b04VAUJ1cp2e{2nHhVP+J+j%6z&&;W6owlTRR?Hilp(3vok1><FOeKCIQd8w3_uJqDd@F8a9{}>zzu-|OW*)* z0UTHgK%@Ho59Q){6YoEG;Dz&n785)>A8m2L!^vB0fS1J1gO!dP7D}pk|Fdlf>@ur( z|FdAW7p&s_&xUitgBvbJvrf+R;)qjDWo6DrG!owbEXf5Ckw(2W*#K7fO|R3<>Y$~d z*O@hOf+(awKvN0@uzFT)hs5$+wG+5qUE`&*1W&Zai)DE}1Q|kfRRq$`qP8G;Hjqz1 zs;pib?eYTo41R6Y69V7zo%j`bHQ$924E=yEq+ONg^J}2U`L^m>4?elN&U5A?)eT;7 zK2Y80h3C!cCNByv_iZme|B#oQf6zi9 zVT5T8;ini_hI0ri$T7qWi&_Gk0L&cvJe79*+AdUO2xg37` z)}r1pz=zTmhMgt?0lxN7w1VK}Mc2fMLqowzxTzK$nA60NS&21+xGn5@L68)*#g3t5 z6M2wvL<>8MokNi(PJ(m*QNq|;2Smc8l3Y753L{IJZHu(oK7>I~Gr1_?0r4Qs2)6P> zhJr<_>0o;g-iV^(;(k)t)PsG1*!j}lq(gD7!Sa)#1R}5`e1Xoj5H}TtV-4%mz+XfV zO@&j#g(PtivO=2ea4YRYw8&NzEIs~*RFkhT_(+aN;Z3@NJy&qLaX2GWyXj&Wx9{pb zg>fAt(hL@P4cl|@Y+=kB!1Cc~A4H&7thuR(Al&9gG)l0!0gdD|*Ae1~(qSMN^o}2%(+TqimY-9 zTSrzoRo9$yeNxp|NrgaLpHy&0KB?;1c+w(OoiDGFsxFsTNww^gDhEAoWeFBa0)wT+7WmRPBjQT z4M8smxo|!@*FuDs8^v9KR0skK;xr%?e3*$-`=n~L!;iJ2I(%Vn!5P_zLepVk;8Y!)!lQvxb#Mv~>vO8%bE>fs{=X7z_@rw1q-yx2 zYJgOAkO> zgHv$B*ils3hybY!c5lEzAzn3EP}u0<+K3dhvylSLB9;_Gsc;rigjt5rU{OtE5lNU; zh4ykge(fxFmq26KLn88#at96Ofs z(PxQ#I2*tQN9&!w90psttHS3+fveHhV3n21h%C_%ZO24 z0u^n6yq|C!z@tGsr2z*Sbc@JgxxT6v&VK8+3pXyt)c`8YZdpcVWU zIvoYj3VzH+6dh=VfM{ODo}gR=4qH__3!s%3%CA8@Ud(gyT?K@Cdln>uj1V&2Rfu2{ z6NgM9j*sNOg)z1C)?kFartC_ut-z~YW#J{!@mPb5s6R}%ydXLqnKBl_5#pRe&>t(b zgB2043*D0#o`Elg%L#;oTT8)m3f>&MlFHg6-Y*s&!EO`>@9@JgeloWi2Gz>-z#s;4 z-OV^&k&b2x0|dPv#ZBa57(JzPLHuI=3B!PPY>R^fzyP45D4@~B44fFj#&EfqfQE_0 zioJ-F!0Rduhiqst=NRmCAZRUyVNx71!5zh9Erj264gRXwR>Lp?vZKbD)R)+Zr$;kx zvjeB|FV*aX(bqdI+p+I51y_*3Pz6)R7|!U8G41d>*n#SwxJ`U5d_B=VGkJ?jpz)81}i}jYGO-&Agk0!fN*2 z^h(#FgH+cdo3W7HwP?+VyQCS07Mx*sdDDg#n^AXVQ$S13SWN<%o(VKN7Tab*2x;z^ zi8f=4Yi8oj5Pr#(RMUcFS29fwDXz4`&###=ue3FhdrG=j?q7z}L5WlR3cakoUDpgh zMX&J70^Y7`MxG*9#AUN$LAOqsmu=Kr*NlD2x*V)%Nlu!V)dx<6-D;m9hcM(mDK66w ztcrOnHNy^xQ{p7M%s;>;rCZS%afqLiC&^{`0VzI$jynkA!jgd@FppqJ!)HjtX9#w! zfFanV0fJzV1%lw$CkP}6QU^gWTmeDqblE2eHn_`WpCEM*WZ5SO=3ax?cL{>j!x$5R zAoUnVQ*lHggCO@lT@zr}Hn>=!6A#u*(tzfoa99 zVVnbkU=##`z|lnXMisc882ms0&M1LE;3(Wv3Ztatvf0SgK@jc25Ht*eEO*qos~NJ4 z5RMi@mSgo*h9HpHX9#9OeS$2rx=)a0pCHSt1X=b8(f~o0eS$PVkY%4B4G?4*1VONL z*D?sw=vW3p5JU}vG-AsjNF#(_7Yu1wP{5D|hXh05wS9&(e1`Z0f%+9e8eby_ba_f$ zk(waTR|x{`>jaUP$sZ7eUuIts#Qi2i*eTOz$o)d`5o`x>@+|u>Ople9+0B^Q6L1_o znDwLiK(^b97sA;NFI9+U(_W^K$igfY(%B$>G2@33MSFqi8AFUEItl_BUCLkt(N-YX zvoDtt7(KWNOgz%Ey#&vMVU~mG&EOLJVIE5r)$kHr6Lz6QtFfgH7-S5pu=OKZ4J~21 z0mj-{!iWd4m>8lg#fw(Hql&P*r3?azJFv{nJ+Q~?z}azmY%l4of<4%G3HHEhf;|`s zrCdZJBM`c%9ZIAM`oP7+Fpvts=_C-R9EBT7VK|jsLIidd^wF*gLCv7gQU^A8fIUlC zqCeu>m!(*h9r5i8;;qFI*cVJTnnz$>mRQw30`s!uAl0?RdM)I3Em^&;ID%0h)L<_= z!adMuDb|ZsNDuT`O7>bF=(CjW4R{?(ZM`7`dw29kz1Y&4UN{{5lD#Rr(iv;br(FRTr4t+pvuydggl?n$G;Xf7 zo(`6^W>=6`?G;Fgr!laFCkmlw-iCc7>D|F% zJ9d#IcRP^yfW>ZvA3zIL0`6`)Afd)9ayK8~&@vUWTMkfk{M+Z!6*?mZ6uSR@i5WV8 zwHtldOsLX<6NP4?kgO7!i9@QfsGr78)tNBT&X_YpY7Vr>m^s7Yz&hrVV|)h7chK6$ zV18>Zrg7%jOlk~))Tb~A#5$!p6B}blVecgtc7ih@r0A)5#hQ!FSYraZ{#HkN25Z2F z?wvY$65s29?X?c6gY+Z@eXzUa$MO(GieeGfhTUa9=7-opga_8pC%+Y#;XhVy(L(}= z>0)bZ;+6zN-%^K6Kv=`8wA~^=*jqNzff@#Lx707#j|I}?Bo>8h*fe{K{DS=0e9Jnh zPO=jwJ|z&n#eQKU%}&*n3o7phBKNU(o*2Ag|g(=>KE1}^_Jxl;MRw%6u!%v z-2DyvwSCEU6;2>Z_(sWZ#IJGqjOpIL@I&)M6Q%fX%wLO3Y(}_WUije;kBJYhlDZna zD}H1Bnq3kzxTPN=RthM+>iDR-%`V9q3LJr6I0e6I`8d5zE}1jLy@%8AV+2Qtt1c?q z&*Zo58J!`IStau-gO3-#v41UYn=|*OKmMV0OadiWfL~$2&D(N@e5^jQkMWXqm0lq; z_y=y?Rv+^j`Z4*)I>wM=T~R(tK4w4}P>S<7S1godACsAT?)1kWbHMkH0ynRy%j}9o zp7U)9+fB5 zym=EHmtX1}h8!}7>bxa?MUI*$BvSkX=I0UQVe1a^%wMT_goGl+KH$H+f8#pr5x&I( zd$ecO9_?}5mO}>+kFl zJ*iFv>R-1=hz~kp*S~I&_zAQA2llA`2lhyRFzG9M1ZzM}&{VgOh z-zfgxB5C^zD{$e03^Qc#(%;!5Yv%s+1uINoEJdkhkgQ)z7^M5tAK77TTTKna9%*YL zX4EtVE`gG(EqkPKZF$r*OiWnl@>khc7Kv)yg~_nO+_#c!)hykcnVx1J(OY(y0+%?X zWs($74pae!iS!MUh4+_zB!SA({rQ^$Fh()Bu7p`L0rQfYr#IPE-%@>rlV6!(6+)g1 zV?mLrtxoG)ChUY6CLxLg@s?keexCHNqpgGpv(Ww0yu4|mXM96jC4C1LtON`5kcyf& z)ttahe0c+wiLKs;`706@Arcig>70KjFd_tb#Jx#zo5-G5IGUmWo700YZDmYYCWTz< zS9G3*c$D4ba|FhdT-UaV;X3+A7}}7GlAChQynOG2>&RosqjLgzVxEM|s5z%@=s}r2 zu4SDV^2~WVD&|~zL)%JnJ%ot_*rsxNS1^yhQaQQHfy76tcBy^~TBsb@Mf)YRcvBvqq9^F^+q9CIno=4RGm?scIQNA zs5cD2>2!Jt_L0Lnb(*~#J#_SzI(aXa%b~S*l5VM2KIT|&s*|+e?_P^}D1-)>y|GT# zPS#>~H^K#iy& z?FbRAVvcD`pcmowNTCN^PHd6Ark}z}dAV&1_FmvPwl+{DpR{dJk09WFy-wRz@kwe6 zc|>lY>#cTlX{*jB(JhFB-@yH}s75{sY(X6S28lFVt4c1uGWLnwg5dWJCQgCi(Gsb) zeL}ZbKrA3gUnNJ{KT+@6kJvbf=y&Ky>XUm@@A`;D34T=`iGHG{n2&HE@~V9#0E7d< z?wa+e6TC9&O5lj~iG0_5glx6f6OFm(JcN(1Ppo(4BNX7h_7V#6E72p)yZjN3L+=?H z5h&%nOWvW6$gOfcwgjM45Cp>B!P9T$>$xHPZi1tad&k*I*9(IK!CQ4iP1*0tcWhwN zV0fRzWzx%i)OyFYx2pAs4M$OVnf2a3GUdE$zhiAxHxb>fx&8s`ReNn<X+d3?cECrS$Wxx9`thv*zRteq9(;D4q48LMAB@ z43+S(v)8V{V%%`Wb!Kp(vyu6yq;&7;Vo|)Ua1R{W@;Wu7z%@VQ@3TK8S1}WgJaLU8 z&%Azb)-X&#;gHz-+|MP*HLt-iA(zhDLcuZJE4}}|M6Mo@-P=7fg1vbqwVMs34y(PU zI}klg_QFpM1P(LE&;T}IKt>11Vbhmt$lOax;Q{K)-~jg}oiPXSDLCYa83xUQX3khZ zC=hbW8WL!63J1lY>%k~qq#1F_9HM(MJS<6Q_p^JY`!s_thG^D=hFw)B*%0@2?0z^& zhOmF^X|;uw$SHo(%;HGs;-r;Dqix~7MxGX{n(0fKC68;3qo*Q#U6gR96C66CCbx)^ z9x>4@eViiYiV{Mck>Gw7J8|#Y?cmF`{b-zMkfyXqYre8umMze{~xXnzaCpmC<% zt2PKFJz7B58iv3r5$!!8(QStP$D8exbT65|bN}s&ff9P}a||H)d7wmYia7#ZU8G3K zxi4?L^Y%p!74Qx9wuA}IDKrZjXbJ?otTatsU-en) zYd%L&46ofOU5r7>-6SWTA$#$nf}eah%duy`XoF(1mF>nl|1*3qHXs@bldWX8$SI^L z(&D7rZRSw257zmll_Pt_s%H99=ExJSR(+}>VfMjTXsYHAISAb+YEJk%Sei3^4MX}_ z^9g)?!vI5}nSI#fgg&%<0>p<-&~p|~P+w=)*b{tJBTtCOvDfoqY(=_eK8}5$(5QRO zdYtutz0y7@S|cbcfi{SQmx z@qasi^X3$|imVdTSvS=b+yPP)DR$H6tMO&&@y9_%0e|M&hToY(|4&oaz-T5D)}Xx5op$;IOrlWJH=iK zO#lUjALPCU3a@IWFXc}1n0!!e*0}<@co1J@o91izPWBjokor2^DITK_a$i@_$)oB) ziInbsarZI$D0cNt)3u<;WBgHbvz%7C6ZV+&b@M_&T*;Q**>a;n{uC^ovE;f^& zn$!2LUb$jD$~RN!6dK*kea(CnxAjwebpse~_NU}0*7W@=m(53&JIjAck;06`qZnNN zl>0h+l+BW#il5lPDRd0Bpx?XvD0F&F{zU!Qp4J@&evSWx`Z_pqjsAo~zyAT8y;dC* z5!&tlL_*g-Tw>nOnTBWoP*3+c)98Y@A5uN@_fBA1!hvX=K`jnXCk4g{x>ca?$b!D;x~s}%jN;50#pRH3I8oECak=WX@V&@>Qe1R6z;lfBKL z;r+Ve(ziL(c6|8yaeNQ3<7@vK`{sX}qQ=+%Gx(0+H~;k)0KWd8!bgn0`JYr0ALquu zyQ(Dc>40zk$MFTEum8uCjSuhs;lKXuz}NpHDu6G9{NaBXUsL+}e+VDu{r$hIm7vG; zCcoq2B^{({pP(n5{W|IuV9%;k zranN|%P>AU@>0a(2k5hK;CinJYQ-Mbm^`4K#RAr8@iO|6s1c3gTR1?m5&krLnVqCS zEgv-xV9Wezm%PkT6g$I)35uErOcW$9E9@kvlj?ic@crX}6*ktZlP1bjWT;8{J;di9 zk9u^JAJAdRh?NG;zsG^bJch0H6euF9K^gL0_C0Lv0M1A00R|lVT~3gb6gc*O=nOfk z4xsCB3j0{Goy)?OJN8}vJ)MI+gBqXExZbfUaFFtGZ05)1Ut;k?~?DS$(X0U zL;&{*tocsxQ<^^3ckh315)J$1{lj`Ir@l!XLr;m9FlqN)^>Wbl#Fykbbr@0JxK}xG z|AkXh?>j@D?O9*a=Wrml+2eloHd~)V$ihc|zU0r{JB-f|;ASm&kMo!K9{ycddGRmJ=NJg>Z#M*+#2)tD#Fy#^ z@;Q#X6ndv2m}BlCKf_KU~ZtY2a$$vne(-&7` z=D1HAU;-G$h4o%TO&XMQzchcqKx;C_$N3~XuKvhGLG|y+9|*r7_8Q{-p?@TRlK+RT zH~F%n%J;s{?xH*AWF{&qDndzXxj?!S@DXehC0mbcb3I8FR^6A^pwUmLN%zqi9X zNvvz$O<6K-xnD7U%)ag3(RvNTt!?k}`nq3kp*pBKt$H@R!XB0zsNrq%4(tWh@dA6g zeEe9Myj{J+=B!8pp#xI-cIZ}Nx4`lT$EvqzwkLG!a4Kl#E&sNK*6AvN;@;wv-CB0A zS{9)Bx9r=#TdNwh%N(@iEpF~!Z_8{6DSfNjEmEq%Usf%DXsp^8-ZIbDZ)+HLk|O9ZzBC2TZrCA+IVelTUg!?K6Rl8t6p z*qu;=(e5w(vPLbuYqon<0DB_Ycx?_AY{+iZG{P?^W?-|Y_I0W*TgnlR zjhf`HkRj}mz~=1~x|&VHUy#(kqO-&Z$h>2Y8|jEr##BW?k+ibvwBzJEIDG1 zigP=at2dw@_6W4>i1=1rV+A5X+lLN^{q144`ylEY5{pezM7cNZp;(_yKh-eXVH;62 z*8CgxP4>1QMouFjt+s_W+_AE!mb_8D>0^OsSCF_?1wFO&jpR`K@csmOsKL2M%#e`W zzL+#tt6oo#gOZ!#PMxg>KvdB(8pqurU zsZF=H4`}d<>d<{Px5<^SNyr)P%SKpbk&OI&O`UeA7$tcc>FFl*cu!0ksQ1?-CbhsN zCZjo$2dL&9`d~5>7%Q41xq~V(>6p$8A&Gv?Ews|VV>fAz(|0ik_NRFTF?pxjB$=!I z*KUYe%pVYq@@m*>Pd2P8n#3fVboYCA8KoX{q%r*xlg_6A8ekV#2q%#|-L`vT_^nh#`M2>Q75RM&blMHfK zP%NTR(nfXC{J|Oz?-8Fq_5&S?f6E{|J9SDLLy}Z<-AafvC=!aIs3U|Pl#U3zS4$MT zk>~o|TAl%YsOF*oL^4P5CdxgLn9vjY2uiY%2mQOvK8Zk6?hlZv4IQayAp+e5#cT*0 z?JmFDLkUm-Io{wm`dxN+fWlzrjc+{w1Qqpd+yf4Jj<-mz#X%rM){+ zL2tkDX4s;Elr8)28(U`3XQj?_y!!hJ*0 zPW;|)jewP)CL`G(?e_P6D~aZy1WuhoYYpv(D!VU0)rAJt9P0fxiZf`X88Jf|36cB0 zl_i)$hRufz)GSiLWfH>zvA0mH54A&+#KNqQ;lkZjU8+MQNonJYk& z6Hf$MOWw{-^Chsk(ZmF-RURdmXl__nxfFj5Tr zCEcLg!b1ajlHtvdhlag)%d}Q~AeZb*-+jm!1O+p9B7PHmu^-!yC@4G8DHq-%y zV=u#9yZ^4(*ivpbCtH%eCeqT4ey@WPwp4r4y%ndr|E@S$ZQN$J#qLS=X0->P`HdC- zt9_-9w$7`8_sLk`26X10`%u_f(ORZU`K^%`(}t+W5QG zn_)x31(?kiN(u$5X@iVBE_AcQj1$eh={A^B74~|Bm`E5#8(gd=D^3(_pAEiShkL3$ z2*vCWC83p$E4)l#gkl}qLXmCcx^=h!D6)!Bu+UQ4aUsxT583VIy^12q5<;iOYJP80 zdkBi~elQmq4IN7mgzaWWg$bGNF_9)IAYc=-E1@2fL_OIwLiur#CW<&;UcQGC_JrEQ zP;d+DaxWlZI@hlM<(c{e*B_l*OuoMQLeY4-wDWI-JuhY*1saPm)L?H&RQ3e<%h zK!*;%Lwo21SV^+<0CTg4vjzFf0RDrdXHS5ugbxbV6hI8gf;w3I#R3Fa3Q!qrJWe?_hYTQ9#bF@)sFAA%fOYl5Ix2{D_=5o$CvzwVu>lnD1?G5h z!htF$m;N>SwG}C2F2o-j{Ql)a3oOD1%zjg*9pyV3EXc2svaOR)Un+WNKg9(7?(aa z1c2%w15nZuyh4O3P%X#v6WW&y-V;<{JR&teo}J)TYKEdgpIBV6gXBb=!Ds-eheW5P z=Qwa|IZiod+yR+N=?U<};hgI*CwQd~#6KwL-3m0F;&?c~JGKSTU^2Zxm7!XKrCFV* zGw!mytT1$rrzk=TEjcC2OF%ryarr_Hnm?5hKgvO|sUHB6igC{Nr$m_0;y4{R0tdKM zU^1fK#ncD4i)aj1>48kOOT;sf2SoiaV$|(gHa^Pa?*BV zN#Q8we++tA#>{Z%iWqTU#FC0bxeWQ^DNDhf475m&u#uZtDn`QbW`SeH^E1Bx4|>UCtUyk7yIQN2M0{Z?eceb(167I3A={ z88*vN2Yd5_?L$l?ZfaZyfdWebN`>*YSVxM* zrL2!+xV3Ega%3tc>A@10dPKoHB8cjX5QE=?qGT-uTq5T1aC?Xap`at)(6R(YN1*B; z?)(U_Z-)y4j~04{x=Ub_OcM+}JA!cmz1p4a$s#?0njFCoTGkrgEoFdNsP#9jwGk*# z^tL!GjKBJ{1}GzToj;*Crmz8tMnVGs5t<-qEd0sHKr5#C6OwEW?j*JuDFF(&9`GhH z&`2@I-3h_cB*;eYG}6GaI+2#hw+!|yjtJVMm=+)=hl-Q!Q{0*e37kO$0C|a67nn#6 zF{2iaG4c_ae#D;2xwHZrZZQ%Pk$waj3GJSYOtHh0Q$cVkT^WhU20g?rEP;TGLeiY9 zAICDf}N2RkXlF>X||Xg(ySo0`A6L2fMjMJ3ZW0iE2Q%9kGh+aE!XtK$Ww1g?rM-5u#(V!!ap> zR(^nv^F!ijz+Rbf5JwoJDpzO;2FGKR#K_~QxAT33^|)sSq&$!hw?~*(!*o2OpbAhE6sob-$LLoAP3P$6lZ%| z`$j01IL#Dklmx*Xp-94B;Zj8p+anCRG^>YsY%X7f$5KS=7;Gj=LWW>fE{U%7qL{mj zEkv#MlT+6d;70ERQXuhnrA^Y!gJQYhTK zRw7maUSMO;0F|R)M`R&*9Mfi?_1eCD1*kd6dJl_fIb^I!6l4i}P7ZvIUmuPX2a1Sf zBM6-o2pzjVJ;M00CS{HQV~B&9;RWYMI3+7mb~RH5kPfE!5w4HbD8XZnr+ALVYgUHL zfdmO4(SxwTbL6ofRM>!(D66u>P}-NjmOw0E`})D;IL_v4vVqXbK%OG%f!fJlld8k6 zV@+Xr9T(V6@|rB~f|Vr!Bi_}(IA~nVQGrQ^NCT)d((F+;Mx91*wBnsY7WGp!G#U>0pYOqjjuPSpsSpj!0HGXyEnWzpEZdRxFjS zOjc|L8cWq6rL`HG}=_u7eJ%(veVhQaJM-XE{SU@(%6r+%I5--R~ z)O;v9A&$h57(rS{9(3k~V2vM)HXkKSEv%p=07D&xMOYFtMPiut5V5~ujJ+cUVTGQH z;VW!ZxGc&A{GTJ3i$^=5Dq>jJ<@71hfVIhpwvHS=Pf zmEnn4DLIi2w`xOFleA&7_bX_thq6R@hR15Vhv-+@nUz7@Rx^)|WPtuz+r4{_+HrTB zR-sQ6?IB#3VczcA-HK&gAg9R?BPeGgo2}tm&Bd}z{#8jti(nYiq(F>wO|{T%$T+a_ zh~2O(@`EZNFw2!7KRFTNjs+ujR0$hsx~&*i1-B@rmX;2;V`_$S1>`c;qhgpuoY7!< z3SF9-BVM5hI3c0I_7G!Z<08Sm;iha2Wa!;`9;Wl*{87qiBGrk2)_|s`jIq!{?Jg1= zK1$MEX1Ahs3X~DMq^#PBa|1(-;Yej1O=cv zKCrP+@<#r9uq+c0N1FVvh928!Nzl~0p!KU4UYH05X5RwGFKAT@{0onRdD*uh;TOcx z1sT5yzXiYk`*Gw>czmNJ-xFCA9^Y6&Aiu$?$2PVHPWSQGt$KJP^6zxdf{Mfkz(Z~H z1MYOSra`)d`U|9p+L&-`*3?Os0K(0x#>R|ew}wc@^W+#?m2D)W2EKn-Lk587!wY~- zY-|h=%vlo_6wkXCfSlOa!*Q9fail^pU^p~anYm3!^)+Te&+`^IOEPOVU-qktxm-F1u3Me0 zNlvHFlZ0_qV=hYWWLTY)YqHa%c6hnHYEE-*1ub3e*O*h;Y4?23%LW?YgR9*dMWHMd zH>VDzSk1msg-DLmwTAe_>FRj%<#bLumj@3go2!XpoW>-6IiC~e64!u| z6QBZd_hm5P=VH*6>l>>TBf%wqxjDzo<&oM!yS`Y>i!`TDR4@0=!Du>Y(8bwm0kG%L zdgfqaC~&=+i#t_6?jprgC#((xsG7%3qzHD}txgr9I@Ua{Rv8qtI#+<|SpB$}*_gvK zM&8?5uLz0!AUCs^qxU;d>FcY5jgwJZ&dlb(&<7f?Szc^9r=^Pje3f})o`5Ppr zm=i`Cui=cJtfSY8nU3RXp#GXc2!xYO6kB7afo2CdpG=vPJdQcmQ_jS697tc2x+Zdk zzU!G;!L0%HP8tJ-j93daeB6-~^`22L!S?8xDU*wra9&eJg$&E1XJ!~KFo5cem-L*D z8w2gvM(U{Z1{zL;=77=hk>=6Pkt^{DEV{C1ra>H7xLJCey~ROP4im*~lOzNU{#E?5PZx8{qQ{nsXQ%n6vpH_j!%KNH2p6@7Gy_c1q6e0; z_)k>@SMzk3lPv063g4bGMSWWSw4YP)j_snxQgM+h@@aMQp9rZlTPi*aMLMlX{u2+y zFOAGw1hNh!99K(w1_b??7s^ABEewmyJjRw)R4)vaVxe2)=E1!u8%4!&9pFwsk6uqU zi|SPK>83DE=W*T=f<0A#x@TcFk1ONIlP92OVKEP5j>bXmHph*5b^xCaN(zP4QVVVP75`WGg3Tg2@5h_eBX{F8%ZHff+gc|+6aY_bA7CF z+$^l-HmSpl358WO1Dc&%FCo<%rtpeo;G2@gaBeYAQlQyL6wAQsbkKNT6I!Ezi%HB^ zOvqcEbCY?5;GhCni4!f{a?&)+_4C33YGQLIj87eRG=pj*Rqm}a5;QRX3#erk$%-Y0 z6XM7Q-Ku$@qCa6VNqe3&=(|QE8u2F-eeHP?B@QL0PIV%(#;je@CMq%JCk|eY~r2Ad5>(u9e4IopiYzZ@GbCtLl{184n8BCjN&0?CwTbIDNO*#rva*+2lA z-)_x@8fP;oyh@J{Z1PyU7|PBTEA^^PfM#9;ZGW&nLnW`v}(Tw*uI5Wo$Xmk zB#aDLrQKZTxi@C(>?S1gKY-I;@W4A8aTfUiI9HuHdSFrAgo7DW!R-ONMA!F*PL!s|p(s?8~;UwxLF%~N4$0e=iw zU`)Q|EHj(eM4+Xx1@Q`u%HCNR@kg4q42?yE97D3VoW;WRjhdV>*44gVj;-gN`sj;g zM?$1{pVjmz0=phc4|NjHeldmBpg1UUky6jVqniRW0}V4Aka}{-C|ZpRM7!a-H?>?| znBrB_8?#D3-1K$Et5A??dNB*7bGP1Dm^gbtwb3L_D= z`r&LkTWio>4bRJtPzd5qce51#ZTR@4{-|CkZA>?_!v2OQMtwBJ&*_=2qq45ZB2HuH z&{&HnR|zhvK! z|7-Y9&{Myk@K^Vrk7G1X{Oj0%e*HbLs}|5AJLU&W-)H>~{)6WXbkpp=?;ni=*(mwH`+NS;cK|Gk@5lES|9Id4KnCAW=uiGJ;eZ*f zzJI(QD3Sx!0KWr|9pLTsfk*no0A(Nffd~8Zf$<02N6El_{mp@K2Ly1D4fOPn8))*s zBJUa87};=p8WpuV(WS{fEtgKpi%sd{qCi zK9Ki6IKb-vsQF<&z~v5v**zbo16=MvI=k_qDZ>C4Jdn>WK6IrU;F1UGv$GFFX$B_t z+ks{|I{}WOJu-JvfA4G$0>#+K+{KF@?Kf+BXM?e!61VuFe#fEtu&%?f`2PODVFRp) z8*|geefaXV37iay&njQ!hd-2eLi+z8CV~{bl3A~)s zySVD_f#B&Ozfp1AyQVSQ%(5I8H`>=Dp_uJvwM&k9_dgQy*(6B0ne+aC=NKU|%RH0a zU_%<^P4?FzBxbp1v=O{LXHn1MI@|2r>@dr+(JkCy{}&178jJIi9d{;@*-8eP9Tiwn z^~LELU|ZQ7*YtuCNwyF+%T{pHN&6K0WtWS-}QV0=Jj>*~y&C#pro3wS-h;#Q%#FCP{n?%!d; zKW9IT|2s@bmhlOHhY2x#C;lBK`~h5CnDFl~;SUdy?DnC*!-N11!-Ri_34t7j2| zeklG76aF10{2}=>O!#-05b#2n@b4vD_(Qd#%Y;Ap6oS_=yQu{EP`#j4LA-MkZV#CiEY9G2x1z zG2x1zF(Lmkh&xP39n9qp6Rv;>=X9BH1xz@n32+Q-xB@nuQwJ^vHe3N4&dGs^felx{ zhI7P*;=>j2;hYW|&YQHNcTR^5=RN!Eqbtl>9Ka6?_->wi_MsJy!|KC^4#TteuLvC0 zOY@udt$FFQeJc_Ua}MpTYF_?qgJbhb?;IHKH||#Z=Dhl|86@{g&zv-p?9FOkvwYUC zNZA}j_!zZuFdA zc&O&N#dRo*Hm-(;>)Y4og~j=^J+HLaKr0qnXh;U6QTlA-6}!ef-B{R_4s)}`$+Jb= zg$V7LoP9#=C#U9%$ttJ)T;)r+CQ(X^Jvn76bRd_Y+m~|o1`1B6edkF#rJ7oh70OfK z*=U$N<0vpN)03W}e6gc@Kui~=&#*BtVmee$CX}R$wRT-!k-=^8T*94xj#LQJv{MmV}F|U9dO04 z?BDDR_Z=DQ|M5`yH$MX~&HsXD|CY?ifRKh~!QLvqEB*_f{aZ1k@m=y?@a*5}GkSoA zglGTOoYDJTwFH)(+%p4^=_Ro24%_Xqx=|kTp6fipUS3&DfN~4k_T71rxIZrtZbG`?pqn2@>BCE=}NA3W%`tzTAu=}G!PT{ zQ`OYw6t|M=<-hr5&lIzA;u6b$_e%zU((Fk~@}~lS$0p5&S(li#=~HQ^1ZG|0)`q9@ z&LPaYB&>B$)pdA%Hq5#tS!^RQiv0Gc`*l?VqaHt?2r2@tFv#L}duxR6# zX1;+0+6a{1SBhV{`8mi6tyvvz%zx?UrvM?a-#qeS`paZ~0K%z#b(T1>$rj)M$;@-t zauAu6A}x!o=%BiJY(o?p)2w^UXw-aObuBAFT&QLhksTAZS0>uq2v$OS`lNc~#dMAK zMG_qNEW28f)T|yEk*)OXq9jNF73_oQz+Ei1ucT|-bFKe1e?Gwi)xLrtoE|3SaA87; z`Crw1f(DcT+(1b>32{+UVESh-ZP18ZqF6aY^<5ylu_&dv+wK1XbMIe&p57tHT-o3m=0iS z1&8F}`Pz@>Z#51G$LX=JEB>2}ywW68r~i2LYaZAElg5*&5eLNruVqIc{FU-K-we5(!= z66yYK0BThq4PO@r8vv0Ccwv)qmtS zKuQ4P#zW)Yq1pdPfkO*m+gNDL0|GiSK!^q8xC7y;g4%PSHL@|%-8Wp`bqgv@^-%`h zjtG8D;9?TYCSuv7(DCu0hHuP`Qh;eGKs5n-b zj*YbTq5sH12MVC1*{`xYRi~m}5CAjGfk{$*mEWnpY^pi02PEHwuVu<*Z2GQ88gs<$ zgRugWVyXEr3r3gcGY6eOb+7_I|2#o0WU(^uVljTzR|$3=o3n3$a`0smOL!eX&|$GY zTXdlVH9$%G<{=)X3O6hk`CHN%_6yClCbn@ffC+?@VUO$Q;a1A_aklU=mzE-S*lD0R zQ+g{1x@W}S&n*E=vt%x(N^VK51pqFdr_ z3a!N69=kj;g0?1#b0DF+QvLax=@;&{xh$2<-gx-Kch8gn1j5eq%Tn(=7Cm6Qy=5SP z*xTW%=;7I5Tq=8(ZZ#;NDkCX01NIl2Z)3$h*)%h{(%c`3apgFn3kn+|8( zvgPv9OUXrZK|99NJFPEAMo84hiQVlgmbr`Os<~({bR3G2`mm3MtQQ)(i}tF&KzCmj z!vrO6cpxo8q`Rx(0$1>5K5X}68`7Qs+?BD&OH5v<&clXZ@)F5@Zc-ov-7>`W1#@1D zn_WBm9q=txw**-T^rF^w^@Sg1KOSWu5nS>YIoXx!fX)$?$;0xrhgV%RSt!T`|; z=Ytmga9Qk61yw+Sx!JmLRd76)Juqj$>wUqihC>1VaIqQgZ7g-??dUyO&TB~jlI2m9 zr&rpSqbwKbWdr$bqcqRnviGF*P%Ok`ViW4F2o0QMg7uBTGEWa@!}7YrcwlhLtBt?)$Q@-B&`*lx1$d zkR(s~5+o@YAXwlj;4o;ik*v=Pdl6du^C(++k7y+ClT^*Fw?4lWr7EB&BlSL0M$t*s zf<-9NiEyEZ>Q z8_)>^K(!Gxi3f1ZYNHPvIjG1#k%9jBoEH_4!;L<0Dr13t&_`^ndJPOJH?owQW_OVb)C~kBKS+t z%%?~-XcE4HTn#jJpK7+b*;}O~a;Kt4V+4q*)}bV*iWEu*mQW4TPg|F;i9#? zQ+r9ke*oou$%%eyFWIk!VWCPNc1|woFDK4_S?|kAPQ~DJorz>x^abmE2~@CDpr(SS zy2yO9y6SzxzHkh^Y6E$7)m*X{fr!cIAN6+KV;iW6iV&z5GZty1&%_cKw_9Sago_DF zl`92fM8YrjX2C7<7pn`Bi(D?9vGTf2{1uD52cm`&rxh0I;0s|hX6o$o1PPJ| zYzr}2T@DwtKFw|VimNYhS?wDXS&9-Cu4dDfHzRl#Y?^>kDmfoOrC|hEjA&|xm5XHh zIs1A4r@mQ@87UyjZna-UR)tyFjBG+Py&=< zQu})3QV{qcrI0cZS#+Px8N@6n=acFaQem`Q3*2H4STl7fVG=WY&BK)qC`~A&b`~bd z7iD@IXu-)nbOh8N=4ACnCOkFpsC%Ia?gh6CzDS^qqhaey@Ux`L(VjTdlkcAd4&RqZ zIq7|2qCp!!DVw0%6%Zu=RG(MS9-5Rub6*5pypEb|Pn|qrQt6@kFF@)0OnUIqNtR=5 zF8noVzDFmuCVa{C8eBhf)icG9PLdsGZfC->)Ka)PVNx4I727HS8?rOk4^6TmWgflo z?U>2&lY9t>8M$R1VRHYZBsgx=d{%ZmETqbfag(xOAhtip|7%^jc1;{>ZuCt8sx68f zRmE0`BBWOA_LHzMhI9AxSChIf}#kJf+1`KSq+gX7!n5+Uza&)5(kea zLmN0uyj___3^*;!wMM9JXW$vdp~1`yP#si(#|b?!!Mt?P0yJ!uNCPPcYU|P@`c9xb zNp*#v+DomAnpg7~r@eQAt01Sr;5mLeO=3qHf)G3M z*neKNp=S&;(3-KIfCZR9*J)Egh_Rb7=77kiRz28AMfS!%(u=0NpsA*tSODL0DG5A{ zA}mlM4awol`}M>Ll>5=A6szwo@&8Uh~d5e%2Bb3tIb1 zd8-kGb*R?qg>XL3F|-iRs@4g{7@*9k8_x98nG+ddnq?LswmCtPV zitNSKh0#%W&Y)?yTguF56=mspNlMJeb6Th726s)F`>b;xmXQtTWY%yV)|=P)bs7-F z&zZAcdM{|fx$f!1h1PihXU}TMavDky`jm~0Ub)EG%z0pH&uZ0H*XyCfq!rfyCiUe6 zi5bpnJu?dG@@jJa$I&ZSE+c-CrDx3<1tm(V{)d2FWg(_`UFSzJKZc#K?ZA!v5$${V zvTR|Mw(l_NSP;X)8LQAjm;pkl{sIJb95X)(OvP{qc})0`lzvko8L(+Oja2~?9_b+r zNoQtNhxfeCE+ zIo=tKC8)())i(}NBO?=_^K-6&vP@`imA z`r09oF?L@M3fWC?wByF_HCJZu5-i$d7|0ndv8g37coyLdH2fhO)^>*ht) zmP%0H=fYV|GvvA@H!k`MXlAU0))(i_rDy$qUT4%La3YMb3yA7yv!-XUEcWwWXKYv9 zEU~aJw9m&B|OWdSKG=Ssy4ngT9EY)z&l z!7#J%b;9`=X`F03#3t(4M&j`Nc@NmL*GjytI4GO_2HO{7GsJ=f!e?5hDY`|mnISe= zZ&jZ>|8is(i2%h+J4Og>tU`%#6v!yy(5vdyeU1nJ8K>MzvDIux5eO*0k2}j1 zEg)`ZxAs<)4`o2pUZJtpKWZhG-AuPuTL_QQhXCi>A5myN<%({hXAk&aSx zf2H~eOA5YBZZRNN749khR=1_nA*D~iCbXB^AH7f9^+u`gjWvo}X37RMPuk3s#@l_Z)_`JWeF5^zxP;H(#Rf#gXSXqfen7asc z+;w)QZ#HlznppNE<(15BN>PE#f#2dbS8#Ug?A6#uSpmFh-m6ZtCV%!^5VSulva zDvQEY83`9Q16X*reFpJbeOd|}(VlLfirTX}uhpAwZg1+;&}^Ac!XM3PUe81)ne#X% zj1rsRH_`bSMYAaV1KGLJ2JU>Kg~_`#6uL8-$xb1U<|z*6{k1Vo0o&>~!L?@yD1h;M z$$`ymPW||s4?d7eL9uqG@*Hp5Y(ghdEfCofkY)SSZ|nzMO%_)KN^5hnsnZj)0JtSF zmk%)S$x`tn(Id@Ow#mgV{3Sa0{e|#>bekL1f(qxd@@J*3-y>B%Fz;I`BotO>(@j6V zbLI>hOJ2oA3!tmJU_Y?$SJd#VHs<+k*ks>nb?YEzVx9K+5B&S80$e$>Dg}>q? zZ2}~#+t{Bs@B8;uNcf5A$=)Ff85>eETD|YyGaoxj{Z-8m_%Lr*B~1y=5vk%S`g`_c zi5xv%(EI=v^R})^rHCm?Yag|)TqcJDDiV#E-Z7)Z8c>6T+^$GnUcM|JO>yo7{gw5B zTYFpHm;ylZ($vO7H;A-UPYiCAggK;-DF~x^pCSQT_4Zc#o3EvM9R(=`a^vNP{RlSm z*I&y=Qv@LeCZE7YY~(K!c)Dr6#>Kd82+v6QW_?Jy=&Vb73Yb|h8%XnV4Y9{khJusc zmD?jVDcwpbmw}7_sk9d%2?Ykwk}AvbC*}SlrjTFNSJJ%7n?Ys*T?&zU!Iz8b)o~_R0eFQd;XL85GMR0y~ZC{iGCeOCc zVEgyUGLXaTt`m#A(EdD@Bkr-(c$U}KDMSwbb3u(aZg85io4Lq#Ke9HX=4X;lq9o>2uu5_ zUX@AT8AVy?)qgJ8mGqfj1w*9mTAy8@tcqHaF^bC7_qpEorB1`oSo9^jQc&KYfFpKd zX)`v)O*`+dS~_O3ZpGXQeZIG9N>9Rkl%WkNl{+Tat)kR6JDRe6RZXv`DG%>t`}TTr zCfw743Q5CZXu;}QDLra?LsNpat0d8}3ceUsxT$i}n>IV8;mSWRe{>t8m=&mq8jN1` zW=-F1in{nHu6N21E?27?SyLA$t?1B-Eb8jAv?4I0R}}-#$|esHqDn*?d_t=%4i2-^#+<5ZJ0MPZmy1< zAHB*2NLjQ$d@sFB1ouY!DszxEZAm#=XB4l8;?|k>-jh}$WeAgCu4PTMI^_s0DY8$i zGw5Vl5NK??EtU;6C=a6%Wd2ioMyeEmdiWN*fCnF_yJm$nZ=J*Qq6c?o?7h>cC5tJp zF1nIo=PoeeacpVl!5y}zS?d%d%_*%u%bN)DbGm#15Tl9(27f~qr`8N3EQ{c$QZ{YJ_+ z?EyND+Wu6a6gN+{+f~wEG@NV!M7jF}@aIz?gHVpE*BRVqpd2;xQ+fO32OW=^^Z%3S z8*Mg|Mn{_xdxU$# zV_VRTyBN#Q+YeAm^kUDCVbC#E;LdeB35>t`ppJc?(L}$|2d{2XBle+qpasnuKNE#& zqIsaX${J&5<7Gr=MFt3JvwBZ928Ndef1}$T$?*qd$EbVXyvO68^Q2>v^lz}nqTVYj z+TvuR8yPRLt;Bz$qxPsyiGR-`Mr0YwV!(%L#Hkexo$B9fpYAlgB5Oc}(wG=KO5ySz zs4p~iS7Zio)~>GAdP0w%Hoq+;WnfO`hqFpV(h#$T!XJP8@y9q8l(sIPL+Dp$vIc`1 zYvA6$XHQqaBb!z2-w^{)gbHi_R{P8+SC5uV z_>d!tvFePY7>De-9!D|fUnn4;03I(guq^XnC91gxl_?}3A3|jbWs=4!`#%>j+`stZ zW(*4Gp;tzsnk5(iTSb&9zO9n<6I1>%3qA&ew4jk@6cTYI^cPslTutl~%jYVv-&~nO zex8*_s4jMiXGs+2w!&NT8hE(I+RcMPU0Rmy^T^@W?HhVNa!nG`e3DXZxXu{8xXSad z_HBjEuko1eX3A1x_-Lva1tNH~`dm^*uT>p!ofE4z6s7hMNDZN55GN@aO{qV;WOOk=3tscj*fDa2(E9!5%UnyhB>`>WMboXGl41k@o=2-e%US&*^{`|WL(;H2Nam!@ zi#pDN?UrFLV4Q;0OXOAcjo!1~d63bP1>H!X5c#O4xMNcNaszn| z9@@27h(x9c4}d~qWfbD{+$+R@KO?(FkILl2$Y=?{mNkWQ!lm{_niBqxP0@}LV8PcI zTK>sEmIZT365B$6u|lXxqRYJINy7(P;L`LJlD%~?gtT_Ap=6gzPYhBc2Z~;`X=*y0@YyJMji5Oo*V3F75Q_>8?4(un6OAMnw{{F=AJ|fllNikcq!%4+Q*7(0DX1ikg-48(TZdWFn#r;S`)+8h2b{we-Iq``z*5$MlfK zT|q%mTwNkBjXdL6Y=8IT@ngqi4zh5?Xw)#57=}^`vs(r1p7U4%()BD3#veITQD)8w zyWJi0s3rt8!_I{xW~x6(jvLAl#K(Xq=Ptv!&idf$qJEUN5w^QI#-^0$RkqJEG4>+o zMxfY|a<~)BcXw2FO!O!jH-vr7Ay;G?{8WBY{iEpPxHJAL|GgLY0u=wxkB=Tbb@C)Z zD(U(-^yU*T10keF6;;f~T;xd^BjKzj2Tm%f(&@#^WLK3>fH~-EVmKyC({%B9y6AtecFA{Tx@roU|Gf`zRE#{;RFUKRW#c z%Z00n93Q8OOZchW{K1?6uR?80g-p`t?jSf}?3L88BQuXq0kig@Li z&RNZp{WW>ZxAqRF~0%79)cE zNy0w_I(O1@UGGY0t@K={&P^rv=)EpiSJU5n9mf_;(tDkE1TQLsNAGo9){CBeGtd-t z;$Po&#u!7$^AD?$JTv-DNLJ8S^2d{{VBB@s|2$l#f9JK{^{Y$;`b}8j`t_{j`>wao zkGkJk{_y00RRv-6cS$@9zpXyLpVT&5NB3W6P4lh14bXm@@Eyp`@W6HdvEkc(?D#It z$DW_?(fI5Bqw4+fq**Xna^tTPknR+fxsZnN!to9v*8EWqNqb@-ZJw(5D=0 zfABv4x}WO(N50_J#ALQu*zDHKy%%f#3FdeyWc_K0Y6q5B)lr^Zr`v z>TfkCHD%E#K@?_E?yo6X1~9~YgA=SdsZ}2bzWqn$Lr{YG2GCdOFy0$qYklM_#>t0kty3q<4<4>D9r2@? zs4){iecJE8H-XL``Pb((Q$mh2vKx^YL%yZ%u!npi`e*n@TBWO6cRfULb$>m?YTH-% z(@RK}I1BgMdyc@`72R*|Ia^*~5p%l~W9=Dkx%V6*^rOCWh)Hg`?;JMZIi&>YJEz=> zmi-y`pR3p&^}xA=f8j$@j>GQvAKLh9KlJg}@OvM0?P|F190HDg3;JafRQ$F4-hYny zF9W|7-_-~ApYy~w??2~$Jj;xe?dwi$|&e;zf--hq;=WusUj6Y}Jw|txT z4Wh8ROAW-HyF2b2JC%BwxINaqo1FuG@YuM!D1~G9-!1VR zk3D$z$8*Py9X$$$=P}E-J^JunV98HDe3u#G+ww6dCv-k1`0akG6OY`jj^Fz*HFsmi zj;g2D_}QlpQ0KpYimI;`KV|n%4oc_0f3oVn+Rr~}b${*OKS>4r_0K+`0<8MqKE7fx z{_Nub`n>lk@BOhAi|}V3Q?U;J?Ne1O#h*S}iVu%f5e!8o@?zV(G^JgLY8%) zg9sG2{SpPFB(-u!t<`Vw39#sn}cP+Gq)dr55pMV z&ApgG@oQSIy!oc5rQaJ~OrQkX2`1L=OAbD9GDnpi=&m>V_wK#d~D3GHft=DWH$rzLJB2- zh!J79x5u;xFSr+5yIzD&K9AJ_0AaH|+3icnX4hk50M$k!DP?w(r7qGyR({>BuGne} z@a^vOh1QEZcTF5K0NdNumhHxVyWO3=V0KO%v(&6s3q?5D4&q^?dFpvKAPefYqP6M; zf#UD*o2xC#vths`DMe1!w_e{7$uZXrRW7TV6eQUeuG1Cp8CDo3{#|-E$nfd&q6tPi(w5n67dDkpWpjmc$>k1vT>Rr1uKyyG|#Os6RmU<{YQW)K3 zK*KM!P!e{2a{;7`SXONdOU?6>$EtN~5r7N3* zdev=cZQQcOz35(Ig}qThCFR#z@jnk)yVNOTWVBlgCOlLRvp9f~r;NE*>{@Yo@?!Op ze|^fBkH>yP`l5e*Do19meUmq3U!a@>4pYafHQ^Nxf7=&II$=>hTyuz@fK*BVa?d>* z>4j@AnUw5m??%V~bO+*)h{=Zb#yuoI2NDlxxj~U6bwKUk<&ZHBn$OYOQR*PKgr1rs zyP)YRj97M;q)L*T!BXUib{)wA-flt>*mXzH=;$8Mwcp#wk-%%hn;q0?9ho)$%_`zX z+gR$>Afk{Ik|rwm@mR7%M~I>~eUu}y?drh(TN+ymAFYuERg#HfyQj{v17?TW<=Dhy z-#t!tt27{R5I5uj&{4WNP}A}Mv0Ada0_r?LlIzHZnTU_*hkPM50Mt3Q$&Vc1$EohF?#{jm@^)67x_*BFrt(g3N+T-)(Qt$T+d% z@tUMa>)q|!-R9PoZ4{U+iS!`od7XQ+IM-!9QYAOwsGc1~4^51qfYy?~+9tjZ@r1Az!}WedM8%O(LYL9Q&Fv~clQ z(j=a)Xl>mVDHeee)M;VpV^Yl_P$V!!;cb9yG8B+%ww7UARwNt-QdhaHZd+aij*=)Z zio)|>(nAwkZEF;kW7|Cj&?Wl?M|8yWf-A$3godWCr}#xp0z>*o|Eske#o5x4MRYJe zTY8EoN)8Z5Ob-V&2@FkDlmB6D`_+vew0Rv!5Ww$_Uh?x9360DHR4WIlP_sqrgr zt)z|J46bM4UN^-QXm+iI2HJe?3;%irP2xb@j#kKh32_Q6sniqA2kn43D;d| z89I}@6GSu6L`w1xsX*Bo+B=wb3mwq4-6ASEgWXXv(LyR*d*t{H8RV0HE#YKt*Sj>Lx$OH4^rp<7(FW)6PvF)+DtykBr^FI}AVaPjlE3Nmk z636gf%N7)7q))snx_w#6W8CI3I_i@BtL=3!D}Rg@Zncf<5nH!Syc?jB3#R?frU3TJ zHWE&3op@I)(Oy?>A%PZT7Ivf>sN`sfG$JxvAHUn-k4h=DHo46mn)n3U>TSQtin8VL zyB@U~Hn-k-o9sGOm&T6PO&;1ik(S1KSfU-O6E&@sYHU%d>b!E6AVUxZih4+Bm2xb0VSqR$droaK$L2-{tFciwK=^*Q{jy$+(4Lu*T?QrHd5Ot~d;-byK0(mtnm1bo%PlyMCp4S%$BU zl&<0Dp9!^TIB);+^GIzf&fEX|JS4)SwJHDpx&HjZ`uK8U?HAR*e;%(*uKsVINwrDU zzkepz9fb+4)E=w;FQ4mk{@9ydKk}F2!O|@=!Iym9r*CE6tpYa0XYqprR{Gm z+rM9>>?EQkc$=hRrqD$nmX|k&+q;3LWcO9K4SAM<099?^roo8?a}!F|r3jkZ_mjRV z!d$9G!m$!o-K!BXWBZjxM|ISTFsZATTz|yuR6oE()6g8Yc&Eyu^RJ2kY~vIwhfe1b z0G*Bi|KX($O&zv?_9s>JA?)p#Ku4{U0|vuXc%|VbrLF4p84lo7Lv>KyPgF;mh)4$S z`z58F5>zU?o(^=V?L#m6my{f;(+9BnR1OC%=DG6a+^bG9M$YICx=07$nEHOWH8@OH z)t;O-Odtk)C()D={_$ceSVneFwzstV+6Q-q7abs^YR7~{Fj5!WnO*)xrJhnrdw3s) zIuJ)V&k8fVn8YT$t4mbDfCxnzn!N_KX zpj^|&#un|Noq>gts1fk~U}Nv(3TOn}?@py;ObJz3TA97+&Oj4C2!82Mdq028pr=V| zuXM4DePFr=4T_e?$=+;Vpp1MqJC(OUbuCKS4Ut}^+?Qg}dn#Jsua#fO>HiQRhJ6`q zA=Lt-%YPBsCc`>SQ72-+E_W2oa70=}>v++LEkshhD~L;II$h7u|u&YrOg&Ac#w4DSMjUM#^_ z%M2MRF;!GbVwI$vkHyEZ@NV>w-Kh!*^OY?zGm~ekg^oUyO(-4w|Auz%92#1-Y&(`2 z1G>ag?&taWW`@I2Gc0RMTdUIN(j|VTeiKWC)VisqVRgnSVpnmM$?T)f)Ntsia&dX<1&xr@e2H$w2Uugva zi&FWFY^GZbp2c)}ehzloNBAHbhL&>koSBi%^o#vGGd-Q*=pgL-@%1;}ko`&GCu-2? zjAUlD$S)?j_Vk201RVDf(t1Nqm#0Qq&2%&TOarczndhg68G&w)D6h*4OXk?QDt9v- zT>$7f-OorUCrMgPeq*s1BF+Op4>CBiJt6a@A9gva1W7QAFec?2pwYnc0|cjk#1I5d zA6v0@hx0P31QZuVh^sxq-ByP}43}PjmP@4|IAWt}zw!m-;Kq4MlzWE+SwATk^axY| zWB*HSDH((B(mF~gw$4MWRo>G}K9^d#r@7KYIK5Hq-s?O->Ev9!SI0y7mnxBVBaK0> zB!ucmiK`JgP)T9{RU%w{0e28n8-!fIhiMtB5?le05_haC>vi>rXd&E^IYAW#)D3_v zG;&Ii9pRq#0Xu+`pkMOvQ$06=e5NMpgUE_-uO_+w5XAJEE3_ zv1HIqejoBb@8|~Il7u~}@GR;K%@}30+JN;(-?Z}5XZtE7Q%uE1ZN&Yci~0mmZ8bw8 zA#3BMu!UkMYBA)vLl7yx%@EQ8ctI{ELrP2bC>X9Q34isDtB5<93%a+F|WAl?ZnQ_|kIBi-2=+!K|IG+njxUxhYaKdMdgd?yLd z(GRGoMI;yIIzx#DW0Yk8Qizm6+M%NsS!v&R8z>O;mf3>{M&wh68lL7TbIDtNqt@Gx z8rUvb7--wxi_S7TrC|_MyWups&P1O4?n;old!+Gn%V~)gRNRb-MNgn?cAHp%1Z`2t zfLgBRnMzSLNJ~e#V^s7YKxz-kx<8X{K&J2V3;m*Mf#hrq>31~WP?gE$Cak!s12#h~Q3Kuv;1Vd9p9Sntqp>s9{O$(G26l=sQq()UzC83JKa!UNEPVBC+!J(p% z(3hq{AJ1DQ_*EIyGIG(S-&huIZh0Qb;k7yL*Y9nk>xc zqs|z*j%qN4#DBKLPxTA)a=x7jq`df#Mjo{*1yxP)Q$aDC?`LvW%37RHTERYt0-h44 zg84g-Q_euoVV}{qkXC4KpQ{R%#;t|(=A|gdFcakpA6TMg#1o>Ta_U@)mFA}0C5H4= z(31qfe4n#RfP9*2o&wf4R%z|h!p62DL`PsQYON&JK&MDc&a9S*L74!eP>KS2>IjR> z(Ff+p3_Fu)RUfY_P)CAYG*>>wQ)=dy=?pUyHAMyD$*&WY-Ik)Z@+sjdhgNLQj78+F zqKFXT-0JacO8S(USIp3r8n{G{Z4}?D=BPBCl08*XiZ-N645*rnC>BT*IAqX81jiJk zHEcr+n=+=*MC2e7Vqq9`HBLvMNrE>FkpTcYzz;HZYw+w&nd%tB`y}N7&p_FO#ERuD z0gN%c7g?PR0|c}WTec>H7qgHeawSAMA`QC6BZXR$nYT;!wT>*ykh2|{ugSbswG8dS zCdCn7Q|3sdS+@=;acVMU@70R!2%Fubs3$f)l9)j`AUi!}h;Lt0Ae~m&-;%hy!Pmtv z0cN&aQF$FqH=6@SFDV-Cb%{9b(s3Y3z#ze@yjRr^X0a;1NlkXND(kLb3&h`#q@38lKZzx3p?sFnkDzQ!Wl2pL7Szb^ z#W;?(K6xs(ksTGfn&_b_xjOd|li$trtD2-;vb&5{cE<>$8V|{8NwmnUWu_a5gq^Bkhuiudp=a(n?E&DKPt7JK<|`|jODJL#r$Amo{+{d~J1pQlI6 zOvJAL=2}z%pzJNU4$s=BrA703W}0fWw(n#$y4}XHA#h8w*gWfLZ|34rO>Iw87jcCf zR}ua-TT*cK!qaZPor^~{Rb8-L=%A%5*hDJcYD=~_eHw3UE)Jb~;BG0mlu|fHg?M9g z8BSW;cT*U{Iz@HOoOE&abUN3}ODKuY0krO|W9QyxJ0~ozX4CJhsGE7I`qdJ~6DDRG zHWBTe;}@IRW%_h`EmhE`R9Pf`9ow~T9dTcxzjLZZcCnqEJZ%(&o|{iKu>#Mqi5Dkx z%wj*=KkazH>nQ^dmxXTEvAJ$jI;UD3W&=E`hre@+Scc-D%xuc$RL>=|&C~ID@!YbQ zia7-*R76G%G2-?n(k-Y)^>oUEA{r-@*LLc?LY$jnyDlF{2y#WN`WeMcvfvE6b=iR2 zCQ!wX23$tO?Yd;3zyndjs`iPK0WXk19gof$XumocA?*oVJ!oad^Ro!feYimaFH$a| z(3AZIkKrRA_u=}H1e%$td^?SG(LEy}Qwq{QHSq@;>k_nM0EIk1;b-805hiM^lLAaZ zA}4F?466X+tMzq)>&^iqCt=44Oc$bw_SL*xS0{8;2asF|{se%vdi|WWy$$VNx}G%UGZP)-lYu^9g>R+wLtUO@>#3+jS(zqhf1 z9KP|$#Ute$BX6eid7+l;_ zRMEMxJR!$x*&+F(#3+{sQoDAJN!_|9Tkcjc%3TU?S)+H0x-1_or z1&PvPy___A=n^Mv{|;SSdRaF?-VRdt(o0+S-w1v zRST_38B5F3<;wWgIR&dy;f`ftxrNp_iPBHW@LmXV}gIjFj| z$xaxf|M@bK+7BsAt=d2&@Nyb2-e4^%46PVVCwCQb`(+qsLsi-FzFEKuZY2F-ne0Kc zry#hge2vOkr59JP)|DUZlTa)U@(l*_uy?wiTAZ2C!*@Hw%5CfBxViq$21OhU} z6c9uNK`s2ONm-d$nRN$!33c2j-M7$3@jQJ6e--X-{eHGRLaKWD z04dy-E!&gXTFaK1eV>>)2$A0{cGwX^%!gTEnl3&)b6EskjU8m+U{@eSdRv(qdLWs- z)(#Q>X{IeI4rS|FJCs=?|I9R()CbRe!EA5rP*TmL1hY7L{5yftVh3r93*we7n5+Wf z_<@+W+;(>Fke(oy%-3YjExsMClf2hzsZLHe3ybSZvP-R21BonQzBo(2;RJx)L}t*G zACW;zg^9l>89_@K)F^!ARtuB$zQqW_wYu0WkpYImL_|IqL4##M8v_A{35;Gcf{rrT zRc-=yprrOoT&8jX!+OH>JPK5Kml8wGL7W!orPN*FmxVVJ~5!8o1DJal<{ zsw*BM3>YlS%b}6CG_}YnhV&Mm3mK}c5n4?VctX5Kud8FNJo&A>;adi}J~3Ov&3dKL zGgn2!wq&41-)Sz3s44%T*@!I}XHOfQ%hwX`Mg9TQHw?3Y>3|XTeP~KsjqYUz3n+_} z)q8BDko{E2ze}PEgb|W2XbVVzcx5C5FUjlSy(PI?6+lHAKFN z0j0D7Jq(jvQe2@So>PV}9~CZ)@y@Q6ZxS4Jp5y#jL%8e3Y@-gl|=55LM$8I9c~qtai!|nRaw;*%$}}S0y!?p9W*W~#V8$jwMxmh3O85F$bPW} zill3*1s4c8)>Z-7WooCmQewI&P$IP|%CEpGNQtaZr6lV_hb|yx>D3{Zi}`AiLY=K6 zyF^bea;%fSN`qUfY*Mp;@P*`HuXQXEZ!y_4)~4Q1`QOSUHA$}~la{LT=`dQ&f@vX% zLU_Y^wy2p>smfzE=%s8(qmHKC7=~1BTi@d7DJ%Sy=x`3pR|%opFcvObQI4BMo|J)9~Fk+1+`iFkf2la}>JhKLjR17&<7 z<+?q4K?XD#6#5eHoHA2hAd3dKD@~*h<|xFhV?7n*DMiUU&@`Ab{*RSmQ}Dacwumzm z-XmBj2i*`&Q>MXYVLxgOnjxhW0LmJF3K+{rS(qJzX z8&WEOuaWTuUxC<=1|v_|@`f^4LwQOf%t5U;w!GpR*--`wRNPQf^L#Cjv$$wwT^SKp zq||zPk7K#$^*$H}QKZ!Gw7h&BtTH8x=dh&`F1CCFM+a4;o?9b;a52`JK3-_hY2YiL zwWq|3wpMtna=Z?3l<(KCzyplwca%GN490?X%=-;S1;(b9doAwDfRV^a1~tEw)q>A1 zl=NX5VKJ6r*14+n@w^5r4=+?i_bzds(|<1&HS3F1YA+i|OIiEI!8dCi{|?=XH$-ii zG_kC>`%BOYL5qt`XB>D&RIA2K)2lR~MS`OxjaCgt$`Z$?-rc}dDJRmZDRV?}I;plr z!^ya+=>_S%=Ts#M=;cGWO3FYna463&yDAq#8>u>^rv=TxGWu5c{JStDQOajZh3<0x zR;vb0D=bCuSHjRM>rN4br>R2c@;R~|Tp6pb66E}D!c;1nN|41rAV0xx-;=X^LC&L@ zxJet-4<9I>!9|li^__DNGWBXhV#pK^I;N6tRL9MUIarIFty<@8(UMjd)$TBE;cZ1< zD#=;fSJsYKM_E-XdtaHnNEvZwuM8r45_MdBP804-mcY4zIX$iB$Fn8(pz+$fKr+K5 z=cdGQ~9w(e!zAXE;@2+-9xHK8YVy_XguFHo93;+*7fps;+rY zOS_SBg)OW<`;_-eA_PsccUoRxrI<#T+K^`FEmKx8p%R8(B2i75QgubD1@sxYbS_U_ zWy^E}8rND(V25jBQS~f*7d;7aGubMh{9L_6(W9bR7Ie1s$+e!qlC2V2+=BArya38_ zq!}Gos|36N8YfxxmLgf@wRqdeS-V9FY}Z9)yLjJp5_`5_wtqq6@}jbId{JcV?W1m~ z;mWEZSuCEM0`?>;LngZ)=np))>Qct_h)^{Rj*FjLSPXj@Wx78=C<8(Z1^IABK>_-T zeud%s*4CQ1x-JA~e!Jnu)<*BQ`I}12aBFL^re0FP{jIZj!GgYpaky`5o+=5Lj4*6L zbK$(Lp{JJpjY;c*1|_an0s!5jY(bq8%Y}2HS^kw3+XWdV-8Jdj2}k$i#sW`~?xha8 zO6Q|<=Nb#_!j?)(in71Pk1R!IVPk7SrCg9TA9+fOo|2&B239Epz2LI}$SYJJ)CAoguQwRTLes9N z%K^{&XIRJ>$m#iYJrLn3ns+vvQ_KF``S8q{)>%KNl>fQ=(}(s<^Q`cU>#1!WxQ`$D zGsRh<5ZS-Re|4!`V8HQ1T44>`f3t z8j#;rWugCGYby6h8(yeBsj_ek;taIiy4qsNO3-p3Dx^#0qG{@0J=J&G zQwlUvx|Cog<5hdAd0N0q?k_?}*1>y@=UsKD8mEOM3n)*oh3roRdZ+5AbHO6@^b_2g zphd3aBsT*uUns?3_6g`xn0ZL*16$sz9W!4bBdr3qLq{B6p{~c!bz)p=Sj|SY|j~eCcUJg z)umyb02=M?ojW>q&GC0c4dplaP!()Z>F$8r`3Qm!L@hGMLVEzLfUkAe-*Esxf#>G_ z2#CT5CtAuHqiKH<1Z{RlAYz<^{v+@UADoaBng2;BYw>P=C!)(4Y%u5jiN;BFeZk=6 z9H!LaZO+L*4JV3|r9OG3U~l_JSrWu2If->)Jb?R6Q~tI?qNdD~xa7J1e0v5r5ctv< zJ+SU6$+qVzVT5Bi`R%tC+xpgO#M86+ZMQeKHPi3<-@1RLAa3v5R-jO-2IH2ZdE4r} z8t$)HXnwN=DA|nA`|W$b>A*=2~zK>~4SkXFUw&zg)-i_GhzYGJRm9T*vtKhhM15Kw^ITId|5( zW}Uu>xow|ZeSx=6Ce<-v2v+V>G^h23l znM&PDPLF}s600k;C-KYs~YkDkY$vq zk!5tJ8)t+DCtd;Z2FT6;E^^hMF3zZS{tr|3s$-e1W?D(AivO-gDkB2xCksWYZ2vAG z7M03A%Ipdd&;Px$k3vn3SFxFA@_)eQ($kl9>|+Tj`v;(U>Be%PK-%A5Id!Ua+W&+2 z12FT{CUBmZH`!PF4>1dbR4Qm>_Bx#^P7C_Z{i`5Q)PhVQd;d=>{1NgA;EsX;Nmex@ z2ohwd>LrjZA(~w&SacJxs_^82Q$u2aZ7H#V7_%npJ_1(-zi&AnN)ea?qAU(x=+>Y?a?zbNltSSj0IQ-RBYIg+mD9}<8 zeOhD06$+*WOtw1$;}Dcs{Gjh-8BbL-1-cJ+$6>=ej{qkAwlb-5fFJ}S3wHz{Wgh|M z^^~a!CRJF6Afh7k7*%Yh5InxMNIiyC?yx$&Zg0!@gLwxav+QahEPM7Z0!;FEe0f{u zA1EHMTI#G`dW7HwbGdL^FdLv<37@vXdZo|>VH&xU-!_=`_Ltv&!@G_{&%I5G&Z^o>?KSk8n#!Td#TvyH&mC%32!uD`(DaZS*hy^ z4v2u`bnB%+;cUcHjnu|VZeu`Mcc6}|VG1(-FB;4h+0;*GFU9{-2nQKs6oCBHpp=DL zAFnh|1Fk-IH)T#()4jrAG%rEKmtKQvLP&PSYKZnO+#5@2BvvF4RV|HKML&Y;)`Lh> z0gU3Fdb(w4YGi8siFB~4lL20!QCFU>VlL?kYn>o~07tI3o(7JP))|6*r$jk2s|wiP zWkocJ3MpMuSn8}?oh(jebBZFIsYaVjiAbJw2~f)!NeW&RKXu9<{{D9X#;XBBkTj0O zDCqt!oOeL>1^JUkkn9HFmwy)+xSGi{>=dyG2MR3b)I%^tNTLOqyb9Yr2g0ZO&HLd*{iHZn2)ujk2=)n55=M!Ds&&VL z-UKf4{W@#?vU>4vAze|h+N?>i;_qb(|0Z~M)de~2{T2)NqWp1xv$RmoqHuQJKMt98 z=j7i}AcmP!uwTdbEfOyHx9Wmo0bz{-D5gxoS+A_xh93t3Q^!dKn*;MO)LD#Inf z&`QMu*wlV{X?nVKys}$D3>8v0K_Xa9*sV*V;I8bJ;I~i%CPx@O;48742R3dl^_K*~ zEI=vX-?|TgR$_^4IzKMEMXcVtSO)q}0NU$PU8hnJK|GKyCN29Qg^HIN9C@tFmf*zA z*PZf9qz+&vFw-tJ**+kcQbp`lt7QhHk5F(s7mpolvNIrPlKE#ngDXRV`^ivr#~Rb3 zi~#zZM#UxSKyoplHkpUy5{?zq!r*j&c1h2EVbOH=9n$WDi`lV!x{BL{rBu4oe<4^N ze;oC=d1xNrQOE%hddzL@@9WL-Bs6x|C;EnH23R6%Y) zCu2$fUE$z?4wPWa)xCJ!KLxrPYu)c^9@6>x&%`I4AHPEeNWM^rnG}++dpB@v0=kAW zK;Ujb0fUqxk9e_cyjvm20rrj8lQ&C5Ar~9(b}sx2#!q;io*^tmQcV#_x?Z3cP_A(= zC}^RR;dcK*dgp@bYX%GT6y@3X9uEn<`-KWijyY_qFTinii|}qJFH}%+KMjVjU4dNpPe}mhmOz%?Wib-$^=hJ;fmOymkhCD>545^U z6*PfZ47UIt22^!H3ueH?bDQa1^LE+14WRnZl^I)fGIGZ!Xiy+yf^`-#oR3j?@n{I`U(0!fQg#0@v$le!Iz~O;0dLmzUNi0-Ip-i^#ef1MvE<5h0g?A<#bY0m$FzB|w zx_9p@vL44XVAKO3=vcU96#yK)2eKhO&mGSJNLS$0)5M_M_h0*afFu!SnBy3SS#kC- zD<9bV!e;8;1tFa|!|}$npvizcOP39@3n-hrSWmu2F%4>WnpUHW3=qA07MUb$S7Mf| z`vI5@oGs9_G*9Pt5TqG5DgmhSFC0iu<_Qppf6B^fPNO1aASK2Bya$lgJ<0FzWtmd& z8URZd5;{YAwgG!XU{RJTg7M|3EKuom>;&nat^ihgC4MX%-|6Y%n5P9C@oWpArITN< zk4ugC#xc$y_h8+VdX}W^+m8<&5}V%$0LLr=5qrKmAMUu!04Ya0r@cw zDN{v=?iq0H8PKo7tLog|xzmmkNgVSDD;yWu}C6+2rhfa>&}2N7L(>Dhe; zUVHf5fdS=_33Hjlwo`I23DfQ?b0how*=KhEQuRCCD3SYj_EIIhO$4;JaeV990i@fV~IM8@Ykc;_Ymw8HuAHqzHU* z${rOkByV4cgkZ$R)!9xv0#*u!g&RBy_9XCd;i*MtR&#M=kjeZJAo!!|-a>Wct08r( z-OexqXScFDZYn=24B4dm1gQ7bY#fp57C!4!4j~_{R6!m5EUb<@^AU59-RmM0oGOlT zhB|42TKHLpv_1ml!Itp!my*uo&pyjnBiYHm_|51&sUJ0y_j8r{heu+3?r za@0)bNQ!u{-@{K;)ieNByM0A*IKjs?}`X8{ug-Gsd3yquHeE>9ON& zwOhr3Rb>8&JDN`l5Hbje@qk~=ro)jkAOf`i@zJBjq_9cVWJp4eg6)hWNO4p!l;LxP z8!mKepdkM!ba0V6H530DnABi{`yavP2BDI;@y=rW>jGk^kmeP)u*qQ6!IByR1KidmFyHB2!PmBR{-yDR>kw?xhmNS zb~(+b z4+-b|XWzvO!FO2{z^P7Gks}d6eu4_8JOkZ)*0Cn9_6>=rpFF7MKer->MJqp9;LLwn z7f@HdfAbtD+;i?y*s8(+Z-Q=K`D-;R6jx?M&Aw^|PcKUklq%zm%#Y0kXKucK2IRGv zHsyEmNJ3V{8#MtlS7t&9jh;{bQsY#B$R$@wLa^ab2VcJPfsMV(#yn-;HpyOG; z>^?*Y(jxD+)t6weVI$y`;8%gKq)Fgp;}6YQk-*6-MO-hVi4KY|L1E*Bq*cl(gF?%w z!u{|Z6%=W@7;!l|&z|0Y`XgP7rw~YJx>O*LO-kVQ;(OwscnX|tmAUZvAY83bACW3X zX!a?0As}+yr#vlli>LO!xfk*O%!-RX16FyJ-jF)pHmTctfau|ba&XE?rGqps_3)r` zA56mg?w>~n_{6MG2Y9tJ)8w!ZP$ zU&PR_;Ecdnl)9WDBcI!+ukj_oG0$*j5t*E!f}Tdp0cBl5sLNV=`4gnLLZr=vV-EbO zBA+A;pON)K8juMhTj1$JN4KAs*=OcXj)=*|x7?9>6-vyNJ`bN6fXM5~Ibv{-CPZWu zNjp{2HT9j{kx}4w=vZ8}=Su{SZa+0^*fl8^MqlQt>isAJIZd-}P30Ngx21W?Rg>Kp zI64^oYj}*x^I?yWJ>7S_0(zVdu2o5m%RrhnXi1o(fp#_j}&4A-Y@S|bU`Q_}Ix zr}-Kq*-pO&XN#j@iBMO(*oXXjbH81B5c@#yX29ZEu}@(CKyO-veiJZ5j5Z~pSTiX)o4f}-WZP` zHVd-52_+u$o&>JVxaU#1^q0&Gk!W(|dJ@svbe=pSECsb!mI;zP;XNzAEBhm#i|td` z`n6^^5u!j%8325KT57V0XW*rfCHPwDIq~Mn7BcP9m!^~k@Oco(Q7)^Mdcb3liA80uyz}G-5>#;3C5;Tvks1m_UF7t>Zv<1TRH|SL znl1w9??H2~=?O9hM-}v>`7S`=%Atf_DQ^SA#B?bDLX^sdCtt-Z;vn>(gA0IqwiTX@ zxfgR?P{Gy8Y;BCCB8O1aeEEyY2@sl4l}$GPrLujbSIK@6>Q;H9>Y}NWBEgg-P;jM< zL=~tTg3t)dDaIW(il9aKPU0xVUiXBj3^=zeMXe;FLah?w=k5vlow)!ZE88@%Unb>_ zq=@XUppq3vu}ueLTR}u?1TtPQ+VpO+Q|e9Z_~n{tu^^Ik!pGf@5Sp@cue^I#<=f9nO96t&-UHRZ2Y!_^7=8wq>B_bH}f_YU2Ob?n>bq5C*|WTb@* z|AQ>SgwwxJHAF0y3M{{te&pG{y?X`e-bhvGov8u)fHNl_frCqpxXr%-IO^JhcV!d&?ldjd`_{V2w6N_kBH+AFru)R+#e0w z9ws?H8hQ7_6?h6NC?@3Ew4iA_?-pU_!xby=7CX#d^JYNmQ-2MBipLM#3O@oi&R+Yb zvXERm$;d6x{}FRy7O{IX_FJVeA7~t?LsJ3Raf7_Gd}Jis0TODzl984g)o}2N!cq%n zxfub#@=ey7m8?ty0z~tB-Rr2^<@Fu$H@-h05Rf`|rO~{?m&@5kkHFKShJiH9T_8_a zgyq=|i-ebYpZl3pvVY*H*K+RmH=&=8hHO>~;Hee$<$wkuVQe8$M^}6P55;m&G${9! zk{xDP&}S$u0S5gIx4bZI?D_>q8L=wUX~p7-07!Ly#yGjvc9>ssgef7ys#&VSeEf{4 z2&g3Xl-u@Jr~Rko-;_4#d^}eS-wPYEx zv8~(~bY>}e!W5l}wxdRMEtdv+yRF%Xg)~rRD$}Hz$czJysTI{>;I~C-JzIw)3bX6( z*Jn5qSW=6jp2ojvSMw9uEY*N;^|X@V5XBlw z*>=?c{(90(fd6+&xY@m1Qw!A4yf{s}CV?STjgug2_gYX5*H(&1fvubL6WOV5d9rtf zZuv3iwAvM$9!n`-*~u`$a_>of2cDe^a5Un&Ygg*b!6x$wha6oL8WFyozH)ai;@ zLM#Fd+jhkg!bh3_|CC#CM}#BJ&8iL~pP}2q(aKwz!CDT3n5)0!#v{b4hbb1t(uzW}CSm$P0svURFe(0zXQ#1a_ zv&ZA(%;6pZH$BGNsH*U!*Ru9(v@T&7(_4^%>fS}j!fm@6rEJ$C{s3Bb%s(hKQ^Y`A zGl&(a;)T`pmthQk(WDI}!8NvVx2s_%cjLbFW5DeGLYlWV+@z@(#7a6X6XXdmx_7Q| zw(CmXCZpG@g1ey#OE&jQm*#x_s-c1gTh)f80vN&5cx+l=U%*w1d{*5(3EFv^<5AK zafKZGx>Rp7?^dPJikred;3VxaLV&yESaF6NsicmYVLr$O6Ga7i=FYvl%ED5kbL$Fq z;>CKqLlT#HVXDQaqE`3b-7po2Nz5$={t9*Cp)eZLjjLmtX`mKW<)~N#IC6Ti09{&F z@tVp?dWe&(M`dZ_C+yQta)o1Yw>~(hYezvtJW6i(mieUn@g+{Iy{je&Iv<+d$^0MV z#-|)Kl~o%b`-`mXw7JiNX_;cT;p5RWxsod42)L5_*ioy|rsN=G9=kmZ7$n_CBlf*> z>l5Uh&q8iS-9Z9cDx821A{GPqb-5&&}agv+(h=n@j%Fg=TZkO*#L3o_BJ!un2ZRUo% z{VqrU@tPuIvSq?L*THkY&;*9tZ85vEa+je4LY^|p#O@M8-2h_e9gvpWZnNLTq04O*&x||x>;NPY z)QRJmryJnpq&iL)*~UP*&7(r95GFd~*O8NQdB>$1hE}Q??OO*AVkO-Krn#gJi5Keh zaiz|#H{S5uOzN851F4Q1pREwz?Q7f3-Cb`0c1;aO#B53{n|OoN%xCWH&c%1BVm5a- zsmidNyuWEnaBj!DN2o)3;cf7v)Xb)An;BM^UveL1PY(A;lFw^b8Ag^|2rfwyk%mep zTGpZc=+jSmN>1`8kKW5p<4-Z>Fcje<}=Mx?FkZ_*56|KI#bxQxH}(f#ECi zPm<1RYV3gj((~ASuz9AXH|Lq0C716Ycd3?Qa)h>};D!q(S|Rfx7fq@`TfJI*!O)_vG$Ge*S!9Y!)c=^7$3P`0$2SNc7oS5Mk;N|vw1Sfn)PCEuW+oYrd*6}%o7ym^K@JCtQJ`rFXqg0D`h!f z8t=1OyX~8;f)j`0iZOAhx&fk^dA83e%h8uI6*SYibdg%52M;MH!(8{io9FuY%6IrL zX3pFM8bR$maxB-1`b$w8{jQt`L+u@(Dlxh*bB2&yR6*g!bejQXBZa1L_?=t5; zBsU*{d3hne!(2Ma2}Ss%l6v9?j$R^3YqxvCZV_qax;sS%^4c{;260cmn_%vaDQ`aSSjADNG0V_Ze>l<9DU5^uH&3bJTHkpmV_M@y4zF7Wc*Nrw?K`~XYWvj6Tvm` zL5XL~_T*QamKu_q&%h=~Qi8u-FkE2N;!WFh@FVfIsNrzUoH0hfk~_i!%m}--vc67v z{c|dGK7IRbcfOA*mL|H}l5>x#4tL7phxrs3FECAE>)LE~`R!(#I-@w3=sK(#0I+br z^X`QUl1G|g556oN@_2*$REb=AVOQD7+1bt)of|XMz$|N!(Ewa`4^7aZ zQ@qJV39x3UP~s^lqXuN$4_#1j?3J4N!cjpvf2Iqx;UNoTWcKRJwc>A>8D(HugGl*1 z2IfN_uyDOb{EhbKGc&pmGQx86wDB+tx=kisT%#oTnvqz^WC`;i%c>jj3YliAH4pg8 zYfyR4sd;u^%*;H+Cd+IZI1Tf_e7AZu?du>9Gn3M>SU&jb5&xpm&)8c#Q<>}1C!v+5 z?#I)iI0-wWu%$}g<+||CH}n~YXD{0s)3euNLPVaPMY@u@8QEiL!-}gLOAnLo2~+82 zW^J`(Tr@o=iVl%dlCrX5HViBkSfpyUd-ICF%(m|taSf_7mV2OoIk+8kCn16Pw<$0ha}uwU?6-seR0OjUy^87*KdYn{(O zOP6q8fC7u0o|*b3Z&lW^mY%!xj0MTFnUtfY56PC+Yt`sAH+VE;m8MU#6oy+G*^Hp~ z-FxOzHdDD8>5(j|8Lt#Ht=`~#HBytVDqV6_oZ>b~o8k4j&R<{3XR6^+Re)x_<~^}V zYJi7)4`7NJ4JUbYO_|}g@Vrx+XMfXs?h>fjGa53Lz5?;go9gnKm0YsOl}6C*Y1Wd@ zN$IVZN-F@{nMz&acr*9@i}np)^((-gs8F9#B4OXYyQvLj6mt(1Y?}3g{_jI8$$uY0UA-I}h-oH;13Wb=s391B- z0sj=RU!+i%>`mIrQRP0~$UMC5pStrL`JI8JWN#HK+cNX9h8$VcA@ zN%MJvH&k$+mSC_Tj^_$^Bm7=@4;Bx2{qW;?u=uC~^3PRp@Td{?DwY8;A31w|J-CbB zeA@Zs8u6ojizBqu;KoN-Wcb2*uRHh@s4HX+ncv%a^VY2}qEFks;WH^;E8W%3mA8<` zvkk~0%$wxrSOO4>pSh9iQ<8fEMdX}84og~+n;nr3V3VAqQN)+_9EW9Rl-~!sbHwdX z@5{M>!bi!PP(+x1CHXCq__<^N30+}epF`(=DD0TfABYD41;$cTGV(=igmx)w3hU=2p?Rd6*+qU81)DJ&pLI(dM zFO53x!_Kuc)QYFn48#Q6<2IY>(c7qJsMo#B{GUk-`Fra1&6s|(u)SmZ_HAyM(Mj(C zQ;(RASD{N@b0oFnxxShI=wG;S2bcB3s^f^rxGm&5L&6bBYS@L{?c1{9)Hzc?$CFdR zT;=d672;V{iQDqwrRt+<0W2M_DUH4QpQlfqJ9qZ%yqPUA)_(Et$8G<|bHDzTscnk( zm;ZkJe}3KkAFDP*U;E|1^)b}``@eNDtNr5NkKZhB{EuI+jrH1p`}gDj{j@Ro<9|GD zJpbeWxwiSwKmNaKo6ncaAzm!=TAP3R|BU`W0CS(;3nf`%{PGZf!Q9hkjcIRpD}`~~ z4U=&>1W}j>{$iRp-t92ym*H2~&T!mZW{}dsGqb22w}tH_wYIpe zW@=H}Z1dYab#3}(x4G@?o!Da1FSpHZiwO2x3PvwaiLy4jX^baC&O-`t(t98y6X z4%;j!?wyIr%|4ZwVZY4@MRp=?c3YrRS={D>X3uC2=2lua(7 zsIzUYipJeUhoU9zkV^a}BZkP$OWKh)XV%2Ev`)#Aw$+GHxrEH+THbQOrGj^qWC$wPy^-;UqyW7DIfgEg;yQlvgtm}A{(iUJ)a z6!f^l9UH85xBuS%0laclO3QCd$nV`Bo-61iHM`yYVP4UhI>z60AO1G*?F`i-U7-7W ze%h&_ntDg|mwLu?RG~7xg1?R~s*!0#s=os49Mxay2i0GE1N}9*sHV?eK3Bxa#pzFO zXqFs{0iyWHw?RMR_OR`Xj!-YLe?>wX2X-J0dGuw(AXtG!=t%pUn& zt+Qq8)_QKo%#r1_xV7M~cw|Mb!T(qCUo*C<*34J)*VuOoPz83P0HJ5Ly z*?e=&f|G8d%-N7>*EM&k`z?t0GI z@u3+z96>Ogm;QFcoi}#zcjw4BlE_Q$zQIp};TxLK7oggap&7l~=O`VT!Iq`J7Nx(a zIksqqce}OvOJ=S53k-7p>K;bSezC33xp=r-oc`2(@$c~B8D`X5;#O{YG^F3`sos+D zWIp|36E(khQ!XA_Jj1khORVWPps0tI%y>}4Yc(GFAbAS6WF|s8p%Un(D2bF9N^qu* z-QlB4W-v_UW)gkkX@W3s8DhIR)H)7oF9`Eqp#s*k2Fuj}cktETFL%Hm{2hNY(*VqK zITr!K2rj%8GbBF_tmMDuz^a*MZ8d+bovGJepUG?MX0qD)nNZs}<7%5`Y;E(5sco5w zwbCE__nCp({~l-m4c7j*_}~8x)&AG`|MzcE?SF~?{omr+Z+`sZ{&Ne;Wwl?&S8D$h zU#miS`J7KX~6c=aUx&jP4WXeTxV|^0Ko0b|9M`n z_)vvC>;^m)%&L4{MulQychh+b>)Iiq4#$2s;E)0;ye>z|8QkdrezWQK1BPgJ^r7pP=4B>SKsa=+D6lkvyp4s>@Ao>xokXM;?c5lAVEz35t+=g-j zh+mX1wrHAl?6lbzmidhwb3ro~@cSYdR**qFve)m+mbs0dRymoIWPULxh*!m(0V=k# zzRYYC`-_<&cu;~@8H8qEv8=N(v9N(64E_RNHD75~u>}-L!^SdU@Uq0ZHt)~* zq8wqSys^wv3W40(&|hCvtPHBV6hwG{bp;9xaZP`*sJ@aDAA8MGaOB0(Ch9l8)*&!U zvXwe@VD`GD;LoEZSy*e3brvt_N#kC>)Gza?$qX6PEI>nsm2M>LjLZE}w@eIf0eZN& zCR^L>AA*~O3cL``L73%Xsaa+q%@bdoE!Tv#-B*XQMPBHVE18_^bTko{u|0ws=9pXK z*P2)3P~erCB>)+-QPop}^B2hDF~7#GefG+$uMQ14K8RVO10G?yTPg}T)kxm|6-x_@ zgvH$@E9)cqafJL^3IBt0E2=*yws%%b}Ei#Yy2zbRWqc{03FOq$$gS? zC}>U!PYtplU1A!~^VzYmCeU($q`Pv5L!@xW!}sUM+?xCqp1WQy4yf4?z>b%@B(+DO z!5p(|>aUm~@H$sKTRAfF+H2Wzn61$@N8w%`Gf3S~Se&PZU-Qcq202*nI!6y54rBFK z{E%N_YB_W+F8#HGs}SZkU~T z#yXn@@Plq4&qN(Vmv-$EnD{jcTjjK65aJ=&FShuFyd5sp85|n&i+qYkb*ZWrp$4_G zg=R2+m6tOZ>HBORA!4oSXj0VPH_C_DoTp0hcaFDU7UfhjYZ3)9RTQO`esg_c9IU@u zRiTelrMo7DS@ED|QmhjkvYQ(V>#qhbRHy}{o$&()eksjg%?4SnCji3*Gucv1WHy@x z#lj2;i|Au~Ih-%~fxSU30wm^XG)ndMo_dW2NBrKWpRD6$TQC((=N9OODL|-Fi6~QG0n>$$`Zqrh&}LY zoQpq+Ib7kB%&yNC<;c3{d4a;w7k^duTZzF1l7Ef1Ia`XLf4ORTIVttAg-ooyWCgglPvY+pMYmvHTjrEEZM&F}nnP{Vs^XW6=S_4PDFKw(l1K=TLc^W$$Va(n-l_<$MR-*cRM)(kBobV_P=0j$q z5a|OxF!twMPPPPEH=-Yg-ca1gHbgX`8}1KC>l%nFi8Iza44<42vbB~7q&~kGG%JV} z)_EDdx^)T0*H8{e1JH z;|;LI7l}9ryUSPP1D!$5M0Mkx$-~J#M`988LU=JL zFRu@9)#?J0F3J}B7yOG^y8e7RI@3{!-2|+2W1TIFQU&*7j=?hX87sN$su=4l4{ZsS zvKP#YP%g~(1I&_>c6XxZoh{K;{z62|;2ZG0#uGm^UfB>~)?X+F7=8mGw`ICMD-dM9eyQp}DlC9L6MFueu zdc_N#F_6#Kw43LoT)vX)yb$_Jg6tQ$T&>92`GqGCVRu!*^k*-`g(=j2G0Zp2(AoNh zH%Ro|_&+v(^@kU5$^_Mx9&4GubJ+>a@vYK=hw{zcEejccFF2Y}&vZ=hc_ONK

    XL z%F4}lA$jQ+{6Z4U3p^c>O)5D#iByLm`A~#W%F&8>AuJ?8y}+p_*L%`mq0Xkw zIBwgYFO2JpqBn?jcfr+;`koC6In?4&+aB%I^SYpd^s!tWVYGW_TymcHWw(HZV6?mAcucs$<(-qzF7z*(1<%)L zSibZRo=LhLZ}LQDVR$(%_*D&Ok0Zt8;D3G6$zJ}aT6gS-{Hu!1s0J)7@w|&Q;pJZ= zOD@(-Xo{~WkLK3+m;X7j$eRPomLx%HZH;~TH#LI-0oVj70-7oo5=XskAXAo6RyYlh z*zY3Kw(kC^VxYc`g#CWaXy9^L?luwX?S(~qs>C0xGl+=Sr{F7D?t3CTl?^o3k(b{u zdyLN^lEyLrP7^veB?hwky3Uz>nyDi1PAv$paR31aW`4&S%sy=YfPFou0ZU#;oYjUJ zak-U?`yFK3`{Y^dK96!JcNeTjzAF>=HV{-y;h=Yuy_adnufGgWX_Aux zMBh&4E6pm4#b!VGxL@gB7S#|OfV)NTV^5n&k*K<)Plj|Q;|-=E@?g8zcY88$g*aJ2 zf0Qb8$5&J}+y*QoSw&OT7^$yhGf}EyVF!vYi)|>duU3py9CulXsYJ?nk#uzi)ljyj zvupQm&pj|7UzsdBMiVEvk{Qc-&6&Epc4y>@n2oQDCA{QnpUvni%u2gDtj9oYQ6>mh zt`T&Q%j@8qS8}Rzy~EabcAY@pJ;h8JmAMKa9Ux|!vD<_ z`ZNLBMRKK*AN0DuKinBRm@2^Ngjpv?dcvLL7|n>Xfs%9HbOk+hwb%$f&GUA4SkA~w z%H1D?3U*bty1Q;u&Td{q(9B7p5jF#3u|&I`Ov(yzNttyp3vD)U1Zw5bfgdP)l{$x& zN;E6T1g$3QTE~r2sdHlcb`Aj{(Unvu91N@MYC{bM&}OGP8@6u`J6NZqmLAv9V%+$1 zEfSS)xLsz0+0II0O;XulpK8(np@O6_CaPq09hK}3+pC1@!Md_pYGbA$w642pXZ8je zXDXQ;K3&f-CEC9~Ft5U9tb&nw9mFbc&olr=JkddO7CZ*UvCFTHHn zy4TYh(N41C>+J?Zc9u{=luR1D`(+0#ZQ0i?D@k#uy1gZPOG;o&8D2K6?;-bzH2~>u zt$E#1D_`%(?b4MFXn5H@-Tgd(f2kxRw$%?uWoYT$<%#O;0i_w$f>s$hm4ldzn$af+74+%ERaVfmR0Y^cA~UArYC_3oD0^>wn! zbdtl&T3IS^C3QOMH*9FU6u0DCgQkb1oY{A$>_t^&u7)8~pDkl0onA&Z7AgDDkapK^ zXuhQ6eYUJs30ZhzKRTYu?r*)+eVJ^2WD3WUuQatPwaX&x?jP+dQDnJ|`Pn?AL~L5# z+~ts((LQ7>DlE0jo<|lBIRXq`p7J51@wY8qlBwITka;BCF{KptdDOC{|1?9tVX2DZ z!xVS-(dk<+5vwo#^$h(5iFuQ8`KCX;S7V&pC#Cn#GmhmhKB7WE6dIJq6?W-wW~AT_ za|Kc@2#S{+DZH{doYtpJZFAIuw5x4QYtUL_&TFryW#yu_CjR(u|5xLGE&r+ZO8j+g zS^VeP()gR&;wWN8ufZ+8i3<)2o&5aIlojSe#&8wyL_iYGSELotM{ajJ0z4HNrT+XZ zYem6;gu~(;h?yvd3$({v(O?+X-*#|UWF-Pf*rBfwwQh5}`Mo$YV1S^!c+b5r+7p~BoWTdaH;dwB_RLJ`xSY+-B#Zo_qgA~2{|WY|Ic~a+m>%<2>w2MI|5hFhMTtx zB%l6#cspzh+Z{Uo?NV$3oK!)SgUS!r1}lRBCHFQ&4^yA1+gL?L4Xy!X zK1LW%4`cvq18rF|x0Y#zN?NRR zYzx>TQ8d|iJ(?stQIpK0#CwLtLY(k95_zkf?!kN3x*$6F*+4n;?P#!Nh{aSc1jR)O zRPedDv|vV}S99JXal6Hq62Wd~L&nm^W|(T}BYv2D47+SyX_&AINT-?JOT0B=X%Hc`Wl518W;03_UuY28Lbjp~ou%bXn4Xo_)svA`D@1lCj*U z7qYc6oTJBS7W6u2moF#P$;wA;e)X29=-Z$hXfuN%AtIq+zlrl%(v^H z5u4ZIKv53H>BP~A&<^KBM;wJg@!6TzUK=3m&^b0e?RXJ@WN8=0BI8)(rOY}9GWg!&8)4EZAz6*6MR5sBDFbc_jI}Lsq}Z9G z$&pi}5PY*96qb@EAdf}dI#S;mCnP5)iJXzL$e~U0MJqkb=<}UsqCQFN$SAgpJhJY< z(M+p6n{A1H*lCeN!^w!Tivn_sm_!$2FOIN$MeAbhVBE0Sk}tt4At#%K-0ch#*<>;+ z=am$%FELA*KTIj0?2PQ(nQLam5P=qauvik80?;*;aZlZy^d&O#IBStHXK_>T zQg1PcNT+c{J80I@A`&}QFm^j5z05Kc9a*X(TEyrH>i=v7|hq& zC6PyE{)3bRK2kf8oek$Kd8Rca)65cPJIsIFNy~_ZOOM42IzDDVo~6hb(hjmD_x8_z zrCF5nPk~~VdVk?m;Di#fi`Td8_QH-U+d)V_u@*NPr z6gj2cw=36io|7OrD!5;Yx+-7D-?bObTaL?$d$>^)O$KH18+-w3YLtSX|9;bhz;*;0Q#qg4D^Id!`iF9oXdC`F4xSf5hWJXLg*Rs31z z927F=vHGdpQeOE9an6u;-vZ6Ct``x=O?av&N0q8WVb_$C(1kifo9UXWO>@w#6-_w_ zIXv?4bZA|GPL8DBtek{6Xdsp9X|esL!Qmi$0WhWbHvHZogQVP|CfKLb;58>lA+8yN zFi(m&YGkgd;KrfGk`UuSJk;*3IucHx(654w{9vI`fP~1UFb$5k(6ustcLy~H_#?j6 zEIN&fHC=wMGq|bLC_n_STGg@eY>u`xIs#Q-1A`tIiuB6k4GyJ|K@}7b(7zD0&oS~f zD8xez2~weXyo_jadV>xbPAbXheo00@({HUaXfKLM$zSa*&rECso!r9np z6d}pFZzsp66tTpaJOkYe%xLI`t=!jHGr;H{vYWsGIKwv72Ja6y#s16lmGc`I(Ap)= zN-phe=^Jd6q5?c2XOyp|Sp>Y`hA-sbI;YQ{_o^yyGla7`%|kU@ff+vq7v5>MqvEDm zXqk5WU2oU|#OG6tP5Hio#$aT1-{b8XjabONMS2^~=S+7#LUXL-+%vzRB$Qt{m7>?v z?KAV|FC)FLjRB|Gg4-Zxf!njF`qO54Rd1Sbx`4*Wr6tG9O;n32k z~8eh*FK?$&viYJXSwai}P zU^Z2{W1*fk3N)3ue*l96@Y0$*N4Mu0gEa< zw^Xm&hLbCptoWW;wM;IlQI8Ezxw<=Sste-l#nP@HcFV$c{GabT#&k zsjJ6xmUL`DuVh093AcEn!CMI90X6qB^dhfYc1jQu95p8jUY;LMbmuSUED|kUI)Q|R zm=if~oukV1PPnMJ9Ec}88*v=BoGZYthFndLfW=ohOOQ-#t^4wI_G3O+*z-3E^AfWt2ws$zYTL5#!}pUMMx5xNj=+weU-rKP;riRg<0OqGDG_#N>nW?ghd+c$U~u z#%}O4a!&-cXK>%|fcDOS<7AxU^uQU#LBvT&u$oDSln6TUj3zjqa{rD`8YS5j1R0@G zpxC_=PC=P|CSwy^@O1`HPAL;W#S@6W=y)A;eOyj5Qsho5z48oHf-ZWE3x(fgk$Orkr{NHIYjM?VsX1e64X447^V-<* z0?)e0Hgth%AVhxoGu@RWQPdFcvBs81#t73~Y#gNUE7$jAy!l#II?=aB*d763EHslOANF*qch()iD{+MV^ZogHV5m>h-I4~+&&_ar14*_%VBhF*NvB($CEjtgv0CzsJitADLdv|QH#?#a(Wu_&Z!+cSQc9E(w+g{Pt8tC zJD%}K&5ruQZvT3qp-*^6dJjc01(+RdZ|D!&XTbi;npb;gbZcfuV<8rZJ#y@2t$`4oXakM+EE$LN@%N#HPOuZ1Yj=RxI+d2Hl5F|FNWemCxfnyt(13< z;i_TnV&_0Hgds%`T*h`R_2`nf#HNAzP%`y3J|0PTm%4gq+4{6$fPF3)dzJ$o+lk4U zC(n;p3`6#aOudW_8;=jO=Zs#4?^>w9jontqadbdHwBFA87Xbc(4Z`@-_t|KGQu#7E>gVj<8*Fs|1*Fx{Y zQ%069T#|Lir|8c#Nor5s@T6O65ZXaMR)!;-LMV8JWHwXZC$FeAkHJjqldLi2GG6R? zQO_3^7VHuyg(?ha|C1at7z2cA!T=Y1C2foQ!~Dpx^*j0Pm}D0GMgJtiRlyraPv}iv z(p%xn67sHZA=yEQDMJzX@y8aSK`2=e)YEYqPKy39prE(GenFOfE0ihGUAUx|JE(|z(3*sVB@joQ(G>H=v!8w}e|!Qzj(Oy7XFV|hrW|Qa+!s8> ztgQRxLjfgn{YP<9xxdYx_2#Mh0 zJYuH<@(d_G4(6wOebshtgDUcO-Fgz?eh!6|dJ_BO{_yX`%M1$dwflQZV90CT^ zA$}$7lw1}k5vu{pfgZ*JIenxqH!ciWNi*v2>{deDaBnAk3;4_~RZjFc0`gH0I0HFyH z-rcVdG+ALB&qlE>=n3)MAoHNt>!5N;)Hq%r4b$mT-({Rzt{_dAOOF?$Y}`dfNRpzv z02m82s%*T;HYdI_<>0$gF4S}3Xp#mQj|ZEhUI1CX4Yx7X?p?2NWO$N2-r>$Bs5x}bw9 zAN>nB^>khupyV&jk$enH_k)5evtJ7yBUS&hJ{AubM_G2FKDdnFsRH-_DHMVssZf;PJz&Z zmW7p`tS78J_Z2v>$bj%k=b+74emGZtC-qoi*(Nv|^gIyM2;-qT!Fm97RESkNSlT-s zeb^joXsa*X&pb6HdI5711b1~93pr6Jv_@#3g7m84eN)I4?g5))57~(Z8=1aNJy&}6 zW)JM}a5&`A6fiw#A!_la&Mkw{a5z5{$gT;041mg8;igcV&3!{TiNT2y_uEs+Zt5U1 zo#}9PsB>&;s?LOo$3`tfO|WQzVUrzVQ^0tEPZT$fE|n#jXXJ25`VeWkDT5q4)YF}n zdr+y|A?8)mp403#>+V@ZEX`|DH769@g@6*fhafosy$|OJyid9&P?p?{&=T`0doX!> zNr$3CXZ9YtYEJ?@%8`8B&WUClGn3t0H#2!_L>#lN9!gpzS3=F)tlX10USODg>hEN9 zH4$z+6UO&90U`j=FcBOhhoa$$d=vnu!ixjQJ0Th(_kZzd0|t!L->P7~8IAZf`6*wu z{X{aCG($P(sBBVYyz#Os$R(l6Kgk}~6;>wA{E5e(w86tk?nJn#@>9B`#-l}OZVG2f z9>rr6|!6Fh6y*vs)OQTVN zv99x_|Di&2H&|U*@md*rguj*KPaE2H!90Vo&2D$ZV9+d`5 zm=loVMw49xe+h?Ujo`t8NiASoRfn3-HiMA>-qF%9E4&QzA%8w0FAuY)&&!xyZF z{E<+a>dlnNVShs@VDAbZQN62ZYHJkxE)Mo^%}@f4|4#BN@j=l{D+dQEM6=iv-sUE8 zA4L;%)1&M`NUmR)CI$)_p<6g)@}?_G`Vvt=0!VJ&d?OGKA%0a}CEh1* zUiqUG1mKTQ47cT33^I$12t7G`dXr-DTY^4v$dWfgg40hr_Lf1*-ETDIjT9o7uR$Km zfSI~gIhIBYOFhMSf3&zi1JZph8uNF}j%eKYh0GI)aj z2HA;Q#GT?X{9OmIkbKZHz`yUL8>w_WkRTQuqvVBpw=W&hAelRn^_M<*Av@9iI%(k@ zXfNEgcN%?_2dW-xwl#MLLJJi1dS=_Pcl!F|b}IL-XW)MB%a(StYA{C@(~0{Ddj;W}y`h&5 zw%21%$8eCoMfg$NPxecYGC*cfq>DS?^M|S8SWogWhbsw~RiSTp9zEc@WGqyQ!OLnw z^F?+eMZAx@k5b!p(zq@OnazBW0~KMDDv_r;3E5hcq~W1O)qXB)AdMX+0r%q32CI!R z$(hoi4JHIq5O@T0X%Ukq=en5j2VA!&?0(5p!!98)!n`Lm2|*srH=ucHgtjn5$zTf) zhbV?d0sJJ0Ff{_)sfZdQ0+~+;@{E5qStG`slEE$wB3(tMq5bgQ-MhXn&f83a`b;?lQYZkZh6)sbfOn-6Y)C+F`re}D@5qigWCZOP z5?jxY< z(0%f9Duy+SOsC82{`^2?pQ`{?ApeE7XCq;EAh&@1BX5w5qTW8l3rXk?2wW0F+-s1p ze7mS+Nyb4gjIsN=GNtMP7FnKTcpvnDYve5eTm?ETucfFJNmxNkGA-c#86RH&PIafm z+1%o0u{9hU*k1*BvNqEGBH)V*Vmp>vAd&+DG-(4fgu%4PJgS}XD#}y4;R}nFN5X-} zBS4B1e=%uLgC6J_dO5;)lRF**Qo2-Z_|#N-H#D6wi0Y)eDj+j}gHZ!=2qk-yRNLV? z`+h5ANqQD0%qo~hVv#UkCkX65DFZ6zbKzJ9L=F)Xd;&0Bwp2b>c`Sj+D-RcAf|4X9 zgbEe}cp+Qz&3&eHBa%u55*!(PmJ6)U$sH=tt0Y3<5_UHHnl#5@PrUP8+-b+x_K#9t%AtLLWoBSZ=dddwoMOMP_6KR)Z^@( z&>-#UH8(u-&cnV}U5Iijw>O%;&c0noxd**2+yp>D)%&~|t&=+xtk}<&mSmo{NJt$1 zmn+*F&v{SzY%^6W&-?gE7|jofBF_S`B@i=n<9QEw&uBO#%rMx1dN=qhZ$BZOSVmyv z9>=5XPnoEq-0T40AFBWr+G$3>LD|IAq&~@Mf+{{fz-H-HoRS{lq~0c`C8W2Q%QC%T zpzY6Bu}5cw_4`fn1UPHR6f7!Hkssj5d`}8S!3m~Aq|}uEO3F-74{-dDhQml_^QKLl zPp1OQjuUE{9(Ew?XE*)Me1uacC!|`RfTXC(RUF9nbM}2_eI%Ud9!IGFVfaZBg2{Ct zN0{v_MmSt1u1zV9SMc-%UI*&se(3Aa1;6igrKO2VF@;}OL$UJadW ze`nvGJ)TA}-6z6vNklK8vBQ1tak>{R;~tOG8R@d0WqyxA3)w^fha4FD@v;p+5t{C% z+aLFZJrOzHVgh>HX@HiimOmvHyooK_qjo_@MrJN3K^H&spSu5#wKtEG>#FX3&s0@i z-BsPPHMT8TgJsLIC3Q<`%~NaYNwRuSPa0d3Ez6o)V{7n{XKZ6b5b9JF-{<}F^!ccNb@p0k?=$RS?S1z8 zEzFj3`zE{tTJZ61#(wTkPzdfX9pF19Dyee;%>!C42rbj=f@Vx_)9??ZVieMFaghlt z99!7k*pfo0)U;&_>;B{t9Kd3dJcdMr)&AC~g$?L%HVgkfE`G2LWS$N?`j>s$pn0YL`q2N$)`WlQfyw+ z+?;9Rqi|n%Bs{?0vO4^!$R|9T#4%fn`qQGbrn#bti#P&n8an0u&GcqN(OId+sg`gJ z8LY>j;fQ}YIgq-qw0|XXZuu<11EeO0LcX~s-4v|H!S4t=X71xVBrXeh9-~xx%j1vp zeW*WZNw490*GEU9!|amV&;Ap?iHjLZoedxNsqdw}mX^$#uqh;)5G6L>poV)|Q>nLy zjAV@C>lBZ^+|ry8<}6eh&QQH}=)U{*qk3&cQxo1Fs`?mZ_OU@0y3BBM@`99Rx z^x5S1#DUXep%gtn9Io+K!`CgEy<8zXl){y?bQGajrD&$Y(m>|1eRg%Yo~Pa$9*z#- z)4t+b)B2vCvoghTFKk{iH(C>|_Q{Fi79Bj0R;EM?HL+o^YADf<=LK`wRJ%Gs5$`w@ zgZ5-)dPT4vhh)_JM_H4nKs*`NWLC@S?ywF%59>>V-QBDrFc%`LdH6!CNv|$;b@qu` z57*V6fzmS=r1wOL!4W0=EmpHoiUyzD4yEFDcFo{bBub(JGp?z~La%=)MXQX^@Y}8p z9zWjQtz$ReQRl)F+7))nvM>9o+Wk$^A^L3)SRQ9JmYl*zvU9`L7=;8wfIO%j&wJq) zZG%Ov`!VELHgkj3aT=#Cd>{x-R;uPtc}j+c*hi|tc6x4gP5-6>wwZ`Q%Z>3DFA zt>-BD55s6skL}jMm$OC;n@!Nhv<0mp@&Gw2WrTU*LOK{28`=NAi5>85VQX-#cyx38 zC>l_}&&4IV6R!%co1O_@qw$pREKLzM-sQQuXh#h{if)* z2n&6A8+w>N=&?%`J-iaw8N3S50nwXHsVzibCyEAc(I_%f*N1hCTuc1M^s4eElprK% z4O-YFemX!&Odj1oPwj}BcgS3SPNIP4tz|OptUlb6V1lw zVOR;yL6;Sz#r5erRz8-bSFta$Va}ZN>{4qBYW|S`Lb-@}eR1e)eSJlpk5aNYwd&f+ z1q}^zGP5PG;E1r!!Q(d^<^ccSx^hQ*YKgx%T2)@TAZWKCvg@1|$wa zwhpKC#dt2P3>zwDiw0ZGPZm$?*)2;6bP*MG@Fp#RxP=Rg$VOCx!*J>C33f{s5j4e_ zIvh)uq!yRrRVx>y8qz4SUHx$BjGW)s7w!&rg~*fBF|Vy9 zz1UwZv0{C@4F3?#d3Usn09QhA%w-6*acXg}I*nE`QcwVW|L$-XZc|SYgU_u7rD!Y* z7GxS2JFq42P-P{Q7+@$yTvxd@=}|+_>a47~#=K4LPf4t5`HJi>_twIMz^UhZq|$Oi)G&BO!^& zhL2GgHNjeTxQj}!*&|Mc*khLh!aGG6HU5ak5i$wxgVvr*Xa(fJ#&yh^WNoG?jYV_# zaELL2S8Hxq&gUZJVng83-0KvuL+XP#7cutpsJ3F$wlID*$uM2+rNychLLLDcFpE=4 zY73?l280Z~GL$D6Ds0eg4syQaa)u8lKYdqEW_J$%z6VzEHu@xFuQ> zG^N*+woqqUD%LQYaHfK)Tv^fFR8@5r9m4$ZRgAZfN6?zodb1S{ z`ojiFRd6O^1XOOAq(=SIkSVjswPjw!)wgZW=K~ zs&w4WqM-6?-3Jf0V`H3t(q;C(dLD?{)?dmPxtF4e-&t7?uh*zB?r`8StZX zmPh$$mDma_sn3h%;_xOpwX?ehBOrBmX-*qfg_tL&s&v$5{|;KxJ7Vo&1TdMxKoQ&H z*Dc469zAuc>R~!oMo7#=xR>a-%H5a&F~!XhbK)v0Cr{>eh6l4uJxf6C6*9^?1xyJU zu=BDG0?Y7R><#2Ndosx46*z}kUrYI@8>wCFh44}^H(k$CQ9I7Pt7tTLr{`djVUP&f zY&lOh%$DY6pl>Cga7nZZ|K__hb8sqU)Gr+o=3)&`mdwr8M;IfxbgrzJ<3{9R`Jn3r zhbrsog`FHnRjea1dl=1OCzhCFrFaMpNbQ#RtD=>qg}6%0@i9VtF$+$_7`}2P^o14J zWbLSx7o!J1%YqboYJ-#xpEv=5`fjF?L$L1F`_2X#){>DOXNAL%67LFKdEr?I_ZYUt z4B@^O!dZf`B_(1XkWa9S?-cZ$$(cB+59<6@T)-F8|13-`2;QW~;O-P@;be$KwVk?hbbq2e?nyc{#;W%aSEn9t$%I5~nHF4c>Iv3S!%YXMBncdF?T; zPz)48{lcDP1`NDYyTSo6VCbRifn0ydJM$kGE-9(J9vpeUBf9E}!_pmy(A=Bp9j~bVnRG#=qwHI)btZ{9qaH+|J za8fX_#`A|)5-Zxut@SnIf(eu?>9X>8F->QYSZYLS!V(lqTGEA3VmLwAZeY(KR6@ij zjIa$q>##mIE;S)DF;B8Aj7c&zf}2W{%3i!vvMLr_kbWq|lgUg-PfQl_1Ww7CSa_k- z*4mn>uNaq|kebN$aW9gfII@c7Qj;;+32^f)WJ4`{(()m~Kkq8=IDbqsx*|r1EA)aC zVmO|im@SXI_7n>K=!yve@?ZfwL?u+6TeX9=fZ0ZbJV2h1IrW>%Nny}S_Dp%}Q*{CI zNY0l^?WFK}n>1bLn=~%nwvg%^aF@|Znk)*bK8P9XO5?_iNsUfV5a%qo_-3)=lmb)( z#*O^^vtYO)$^T%dK z2NNJTqN2vIFndf_Xx>m!^fL27=p#&~M@&M>QxOv>kiLW+9PH}sh3{i5&vbNxjz1l~ zp$31d7hKrtXY>MX;@)Y16X@J9nJc=g<2gw4ib`)s; zW7E8eXaYVx(~0PW6ov6{XHC7fy3z9xhcWaJJ>i@z)gU#&9}nSB zZAPSsWjVL}0OAO7A}?WlYI>=5!i4nHWJ=J;ZJ@xSb59C6?_oshPw^YC9rnCS$XQwL zi8FIDWBl51LNuN`tmU;#4W=+#^AZ$Tz3r)(lO7XD`uG5OG$BHMb^YPPhqwrG@GmkZ z%oY`YLT0>=3fD3H5xj7_t{ zF{xVQV`?)K61j%;OrZ{y4tlNuCl?~-!NHhxErpDsQX}`*Nz61Nkh!KD%}LEp##Gd% zP0q^Cx)7pxjZ0QB|hliU-BM^Ihj_0IGL5L4aY~4IWsqj$Wr#WGzo(- zhxsW|p7EH>gwmbRFsS^9r|ntA{`kxo?(NPLGp^u%{|IH1b$A}WKu+e}%8R&@wac~m zwI3+Rfq$Kk_0$N&%(*4Ha#Uh1{$-CT&^WUnwr0#5+(j4WlH#jS?IC-eoArjm@)K- z>6tPsQl(&P`5Xm?u{3we4A*9+_>;?HSX7C~O)f1YaL+bELCRga{t2aIO=?OAUqYrX zv@+4U*J*7zNtxlGWaY1krUaAA%jqI<8g+LN>@VKCdGj{5xNMQY4ACGvzSlBQic$2J z(YIGt6GHi`MuQN@zf|$}{cSM6J}d6-BRKwq>(!Fn}fA$Ql@3 zkA$g!;i^}nAC&K7Dw5n^U4&W}1&LH43WRf@H;$z)l+U5zJB?s93ujJFqzYLPb>fZq z3?athL1Gs;arl6&VZ!SnA&@o(2SX>9$ORg{h_2z3%9C^9Mu{7l9H=Rl2X>-RFXhww zoQf#FhYww*;iJI>zY)?2rx2cEeYeLK=>`c=B~lju>e-6M=@Q97)-L62nEsI``$Qvb z#8z_}5s@Bb%mzvbDf{%jVcViK{ z+hz&;6P#ygJjdz^8*RG?0dU=c$;!XSkpV7*>a=%lRWcEl&t^K zZz)%*ZK)btXcXKIUF=^$ZFIA=IN zYBFbu^rj+b9e+boI?>XS;_W0oHy1IpkPMe25=v^CR7?iL;}R}T?%T?5x}_NMDdE2r z5Hw9L`pnZ^u`&0dYt>JBt$JB|KSTi95xu-c^(%>e_C( zae`oQBumaxFXt2!PGz-RR;Zgvs4Kqdu)gT4)Zay|XqsD$%O}xgn%OkJD4F2rHPF;h zbV&mXih+m*h=bv9Q4#l=0b*c~wzTN;cUiHtYhZv#7y}oJ*H#P+K#R3nOh4&dQu%U@ zno6MK{jT?|_Iy52I|b?a_(-4kbFs7{jp|$Nl~_aOBbWBQ^gL0Xg*~bq4(RlqoR75J z=(3kkKw&;)1(JX{l@cIO#1gz#^Y$+g%qO2GmMHm$l`^6x_c2M^35iN0PA@ zlTWe4s5-vWfg7cf#URrOPo-I2j4EYJCWjpXQdWRWDx(0qfrnC+600}aD;g5d2WD1o zkv$;DlarZTx-#MX^1i*Jyy6aQXjWlF9$%1YSvr@g4DKuK+l$n7{&ThKlX{}7+ zoa>6c@JHl2$q{T!Z$dy?HZc)qOixHyE`&7Vb% z`*ThL7x~B&pCEa5@858{LyU!D>F;@mX0Wx@NuJ1s3 zia93>k+Bp$(!0q3nv<8)6LydFq9(n0EzHd-kr9a|=pOF{tmO{!GGzT(yGxn>RtDLi zdxA$dOQ${3kvd73^}B05zKlzZLF@QrI!miSa+4?BwFJ(Tj!V zj0;L-Z}r^5=yf?w_pZ4$(BX?qWpDHJoS6FMPP*NbesnmCJ6LUaLwP1E1aen!@{s+V zo{yd^_Th$~y^G}mIZGDxaM;hz^7JU&mCDZXWTwtp^qNt&&g1FX?|Pn?EXIX#cCP2v z?^q(s&i6zf(o1F=Jo(}8T;K%`7kZGw3rSwWYU}8s#IF23;KV?%`~I zZ*>6%+(y2-nnHjA#?~M+eR`(qLV41}kPq2v0tBba$B(6v^P;@~c}>Be277 z7%>#%Rqx^CyJzRlQ3WWik@>U4K%kZ$3y!8E0x|C06YmKSmnN=~Q)fv;SrLbb)83W6 zdpLQ=j!}j3M8x4NF*>Lhob4YG1;*f=0b&-5XGcy-Z^Fs`5m)xk5Ls#AY-ZTfHZawY z1;~g{6A|BJN3#8fxKLimG+WFDktK)INXrqY`rB_PRLqhlRXTZ;h1v4q!8D=!{3zTJ zIFWqWr;|ZcIy{Js1*V7{OWTueHxx3nk~K1T@SU9nXI`~O?8Y4-vKtF&Cv#@ckt9A$ z1wGD#^q@f4?jz=6*GN+!B%I4QIG#3XY1`(_Hx|NK;Tj!4ibp7y_I)fBB|HzG)8VG< zy0H+5%4%sd#X+ayAB!S+WLI!2+q}686@ON+hJjSV4AR%|bp>Ju$%7pHuF(YvR4esQ zWLRp*+urogA8MoeJo zoH$b!+kM`aY>`Pi#uj{}yuddy4iA+N@}`-8j4v>0J}kGQMRMXnc6oMAAf%JeZiC}4 zODpgogqNMQ1wJRSjN*F2;lhxVJ3DSFNL{{0J)Fv#JgJikA*)-* z;x}&QV5N6Ufg3)Uym1SpO)fx-bkM$VkYS}ar4Sx0-G9_QAkA!A!DoU#e2taftp!=X zvd6#~(+hIM7ZP{=Z3S6?(j)f3-d=d)#5)SUK08h#{FD7oa1g(%9~Tr-+a{e>bMH9({NQz(oMp>C|vqh>U3*T%tk-&aTo<7Z#;o z;@$;Q33<|Rb1{YtRhXDL6VH=Uzl5O(ruxVx7T+Wij?r*xs)2djCe|zL1X`?IMg#LW zmxdwMCoH+;sq>?TDV8W3-Ic&RfP#1GNNTCCvojWL!X`B^i?dtQg>xMPX?v5db#`|@H5ZrT;a@}_no z7H*0&pDB)qE}d5^j6t0g$%U|kd>Ww;reFwi3ZGi~iyfWv4q5-$oFRTmxS$sD^-?>A zEkagCkd^y*&Qe{11sHvsST^HPAc%We%Gn&bx-!uTBtyQN_sXjcsRvktn}nzRjZ~>Q zw>W}%P37^CIUnm9rr@2R8JBzIg>6nXOeIOwFqQFcXZV4qdD_Uye%!-%ddQG@GYz+n zBy*#r@_rholO}n}eF&K|FR9^n&64*mWb|R*40m4G#|LlTvAip+L+Xg8@EueF5xVCi zuQ}?yi}M{dK2MbLdx=BHUwzX(+&Pg5`O7D3o}4eS2#GB!?>c~NyWT7J@;>EYE{{uo z`Gh3YUkPCe`S{P_n^y9qdF9@C zXmeSOWE*~QD>n?U%-IAW1s;@;9I(}lQ>*X#= zNRfPV!7Un!0E%TQJ-ova=@T_Qmd*a+2}3gL*6`?0DwNu~pc{T8{n{;)C)dHEe~SGOa=z~xtM?$j9{V_^)!LrX$*im07 zb+x(QLC0L)jima-A!Hkf5GxalP=7Tz^fxYaI?2XG@J zwv!EQ;#~llB^;t?L}XEHSg>GvngB5PACd(gU``>mmMx8PdP8;rAFG{=o%&=?tcSIH zEOQKHj91$-5?wY%fgMbonpqpI6TYx;A6pd>5;l))6CB>7UD>t4I^hh1xfL0opmDYK zcM`4BG0`MzvQWuKoSPuWI@m^>GSh&$M7UDdRIG*DREloEirB_Ca^&Tm{h@F!F`Gl4 zhDD3qk@AJzNw*1!Q?w?tRtd#?Ml`IKZN$Qm%(pQy7+?qe+F-X37|FnfxA3;|0+?8% z9f66XwL)NYWv?6KaQjW+I>}^1t^t4i%$gXkYR=d3PC`(K0_$2h77AaLuvR-JBN_eJ znnv-CqE^MLvujFgckL3!LkX)Rxl^{>!A@bK_8~7#?}kvznF;KELmqAy{#0Jr>dcw| zc`QU;!d?p9y;BIbOWZ%KIacS=YuHRESxBEulhPt^&vY7&oti9Q8bOw3{rowsF9vD8IQYRs-?(uC^OUAuR?FNbi9i)yyFOD!<(v7T4I(}E2ePndv;qtKXDaIGGkq>7se|BYeu-DMZB~M|X zBJ@UMuv#i^8gh_!h6hGW8OvO$%27p(+r|sFBn2|#U9U0&xdx`E*+OkSih^i@X zHH5aGZ46|i@y@nLn2vB&rcv7#52?M>A!C_XIT2ToIF2fq<{O!~k_G;kMH!(`5z9vs zgvN?3sH;+qapZK0TQC7Jc^Cv4yX8jEz+Yum*qBCv=Ix9Y7g?#d+{rMX5>7>wDxhlC z#uoI4#cS9!5?zTX-eR|+fk6OizE1>gZL$$YQh`fXOp(E=hYB}x32f$F$rd}>1$+}oWgr(5clZL*kna0PVW~hWPZG1* zoejUu%9wcKOC)}0xP#Dm5)*MmT;7750NzXFY=1{iN*43Pp5~7ihc2=|q#T1mLMmN7Q z&8f+@F|jj|*%*V6>WR>Cwj&%TCULJud=#TzWaSkr3DUEKPfXZH66(>%-BThGiHKl3 z{*noZ*vo^!nemdGU0jPjogqRRSf`=Mp6jJOiH+TGAVjixobI_V;A|0r;cP42o>$3WbrgRjV6Fj zvWV|Sl5xC{`cA@h%Y*ymgm6k$Xg6uZbQJ?>$WEz^j2^*0hRrF-0;D@!lZJ66RRLjZ zpAg0R`*_Gxi2J#)yd5!p2I3GJjfkNuz>H_SUC5fy4q6IidIa39$i7RrhV+zUI6Q;RN;R7_!yL6dzB$& zuS^(4%G*F%+R={_U5ZhM3qlSfVS~RVX26r^sv`=*8u#uJ*xRHnuM-aAfHHcUil&CGzXH{zAl>-bH(pIgXPvETP4o_-v{YY7eX#HwmFx$Q4jFQoQc7QKj&Z zu++SZ4+Bicg3YmvH#}wjvKu}NldV$-c1d^bCQ+^cyzKy#toXvR11TE!eVo^-84qVWTQv^?o(MH;?4kp^s zLm*CD;Qkm6Wnw0sKLoY?FgTOWLJk8RbcMq**F%z@Ya?vIkuk2jM`k2l(mCqrQmW!f9WG;=>$iCf(h{UyyBVGabW(Y$m#eha#ftGJ36+E!;qcipVp#Aw89oU&<&w#_ zkUL5ZfhnF-VTV8xbW7m8;S+siR0`}pRw0p=x@Ey*SehWEbo0JyJT&l+)rFWh$dx`B9l$W2>oq*o8)dOOk)-zN@p`jSRzLvBWLI$ z9m+xl{OFmA3V-Y9>m=G#qO6Z3**eBa@Q>vj%na8E_?(7p9LoXh`IK~OIJc3F!%U`P zyemFK=tF52G^uPVld70ND*IP6+8i`Bs;G5q1VlolF3M^K_m>GPZuWTO8D}eI(;2^F zqL<@{rovHDF^MBt)1dmJeTzGS$D)f4AnofTZ^G^Y}D(wsB5^1DQx ztjbPD6H3D@8|#FXQ&>xT2~e;t4P7eLlDSZM7om7kbEA2seu*(nTSA=jAQdL0Ya zB2QX^jP?5v8i*|&#$GO@?#W=pnnPx8Fi&ck#IF|SYfNe6zHoI7g!S3ErFl}zn2Yzw z6ri-tLn{2X0aCVy&c(t(%Ho-HV%uPTMFvf8J;VQ8sT9=V9_eG?ew8vwkBL0(PEy04 zi*a1GEPx1g!d&SMBukNooCdF}aDcHwAs2y92aTDzNw;*cK607X;oZhs1v{L2aOYKd zugDYR5$9u_vt}V?B&?`01(f=GoB~%Rh1W?p;DpF%>b)|Q^9X6B3`s0xNEeWzR$@#c zr5PZV4uFqAtZC5a^YmQ2IVTN}y4W2%WPL-Lzewq|ofI$js!%$B@(!w#NF`@^w~{kl zynQnK`cxg3Rh*P@18J$ZAE|JTNCaD11(D^%$dyg4K%?A?LO?+>)P|kcx`HgGr|>`AEjR zcVs?i5|Ev9na#1JQtotXLehmv&ncPE&p;$BkI0X=5kaeiSk$tC>QOYXub(M{{(FBc{`v(_U)utH9wGP}P#OzxV_L?T{w zm^g+du{*_?JWSVSF!70dRcaRn7WR-x2NEIIRzruvO3&4e?P#Dv)T|W!q>Qv7I?SWp z%VB5T28p*e943o}Z`ZTP3zhmz(?ug}FUK7OIhE-rE3jxJl84iv0kU=!Y>3*qR+iOJ z;l1#eM}q>l+vBs)RNlbIca2NAn^%a68=$K~ZBtBkWJQXxPp(9k1VuyoAzl$JgDZ(; z%0of;Ix(Fc<lUM`<1&%U3viwMz`RVYyTtIXzv#2U@Z>8AeB^)EhTBk+Ht+&XXy5(q0LtHhWG}y?jvTMappJE=Jl~HcYuugiqPT zV0Vk2kQt?Pu{8sCw@f5mST*VwUwh@La?qaGt(<6>jDd%N?UCGy2aTd9D?&3v4B@1to z^QtI6Lf+9icw@IPV3N0g?&{FRi*2zeG1!p>Th|_m;BF}op~PI4Tx7%G)r%L}+BR&E zp+|JWN5o$t7{ZKzu}4(GA+{f~;_e0@*^LJa1-?h56KbPhN(zTcXK{l-N5&r6cL!D5 z!;U8=9^!R7mvEj4uH63F@`dv$>36$*E$!im~dcQSl!v4LwLP@L2URAmV%|Te&l>JQ$=xm__w_fVo_+ zZ1E|bmTh_!tvp~U{y`k-sUB>p6bCF`ja$6Jgij7M#!0MZCm% zXs#5&D>(zdLn|%~Xh{9V#V!_KW%s^uSdyVDOZ1hMq6aJVIQgkyE5z%eXG{h-D zcT63@2xv~VC|RV)gYy_$;uL^9JRPu;2t%+rY7yU#m={GMbPW(}voh#Z%BN&Y4O4Em zIJbz42mWKKbPmgKv+T?Y*$N*Xh9?Rg_)oYP>2xACm-^^nh@lalk_|m6%1T-!4{F4S zywr8ZX~fq~;y-pMO-50()(hWtRM34pzW~X`KY0zEzD=SPHp`x5@dX{pi_dpj+DV+i z`tWUU51P$o?c&Jw$hLoWQi%r51|7C}@|I)XkzF!#SC=yq23fq(o=;Oix*(ea<@K`4_oMa(|jbBev19Y7xdA*shk*(0HU||5Cff0|GaQ& zjLYRsTI~F%EAR2qVlhRv2I*W!o{+od7Mv!e!AQ{bcJTGbz0p1NJ%% z@eT-!K9SGEO|p+UWP2E9eOI~jI;Ef~Dh4q+m>+1cT?-A|D`X>`UP)7`7;en))%ODO zh|O)xt=Rr0JK}~l(!~@x;NXGWKgQfdHhGQ6gQkjN8k0t(!7ua) zp)rq(pL2@AW>lU5{j4(zT<^|d$erKFO=Soh&g*@j(50uVyJMKfZOe8nyL2^!3zIaB4d`5gu#A@KQFsAo_ z#+H_V2h!;Xv4~0+9}yuvM-}9=QhAfpGSW+zik{0gI$vqB@`clmAdwTPG@K@eMrB@h za@WT&@yJLisoi^9aZ$jc<(=rlLU0E_dx8=trzqQlbN*<96&@#4_<42@tW&BIyIU;^Oa^)~IF#@M9VZtGlE;GU* zM9K}>B`t%uFmDErlpl6=OT>5txU4Y~PTK&DbtE>R*1j;0m&0ji1D#G7TH!{xB-WqQ zGKS7LpUttW-QArG-$5(GGG>xg1#$PySHdr2!yV#cE0lmv{*dcH&%-}t;^b(A0-l7@ z8Xpqx{Sc`RsJM+Cm0_Fs5#$Y#h?CL~@VVjE@m|0($S@?Uxcs1#`^e?V1)S|4sc43= zgS^GGktPM}|1$8i^Si?ow7pdzOO{omvav#KH{v{2D}f#@x5#SK*~o55kJ2uoQ;TXsmvSn4vq=;K1UbvxKUKBRwgZj)H-)d zA`P;vg?J%yc2ki#qcMBTp$6ljhsa~`840|IVOE7cLfI`YMYGh-3Wf}z0U666PSz%4 z?b?$8lx;n&6yhw6zx)LH@>Hd7&G$Jxcxi=i1<@Q?0E~&vh#K7_St0fL!h=IQ<*AFHW6m5fzp=W%T1g z(3_(mVl1Y?`0A;XEoeZN)am9~44h}2PI8iBxUguDD#x@6g2qnwkQlb3(-D&bigCG! z1?r!K`%iRSDcF-vgJC|Ba-`~Fyuk(A$|5J1Ax4pOZb5v~M~4A|D(9bo(X5pPyR*_i zrnkXvAw89$#9TQ{eV!p?ZsvC~!V6>Jk+! z<_%Xx-N`-AlvhM4j>*Ta_{IKx66)j;Z+bUEQs97oY8HB0`^26u9)YrgAHgg78V z!{)QpkU;98I~Ny;1L^g+0lIEns#kQ9*QWU%@gc&TZ;viqVY+$bIDER|8?ihGbo4z277~4puS+gviC02_xVz=kE{6A!*VDjM4>h z#fxz5q73IJBb0aY{enCgEXX0gAhRWLNu-K8{}nt;_Pb5V>r(5b5ZaQH=OS@$Vx%YZ zcXF?6ca7HT+8#{_jbxDS&pC+{_uqT(W>{S};E3)rVD{{?5C!oZDIbKeBF!ROab3KA zy_NyzfKLtqIhaDZ3mZ1rP+qs*T?F$6adM*{bt*WyF#Dy+Q;xKz(8=Gph~Qw!+q{|m z%4qP^mUlxX1 zSySYCBA8pM;z*p7{DV0!RS2ZxXcaCLWd1?&G*P+`B4T9=Nr(dyIlBBR3bN1y4V+6& z?&k_!dbW_3baD|Yk*cV4=pY4D77}UOE#aXEha_}KtGcNGp(cF}=HJ1H#Dv6LA_eIDln*;R1M)vj2XLxiiggfZt6DxW_k?Bf&nq~;AfsbO; z=r;uOWz3N`rHaL#UAqP%cm(K1F2Yyd3@>bBh!R%)h!QI|11x2n7Dw{Zg%(yAN`tFS z5AWqu^6vaYJw&gxXZLPZ%m_V!%wlEDVldNK zS~Z_?8FSE52W%D`ic%^zOmjF0U&|`Fvf$KJx9YYhl-;*Il|@mYQ${5@o^ndkd-*4e zhvP$s&?@gjt*WTQB8(agxZVHj~kkPMn5tPn2q2r0B6u1$(GHf{+kTR0cS7S*9$ z##DFm_2sf_l4%E)*09J?K4_`qi|!l1+5c0SxOH(JbID;c3o9^|3#u);QGPhfk>}tK z++37Vx_IW8kYdPnB)ki`Lv~U+!@w@^x~rH})Cuj#^OO?UR4Gdn&{$uWoD57U#+W)I z>BA3qY7ssbRrU&$@x~=hI3ft;z}o2GIgnJx1_bnGzDL^-req! zZ!Zexp`)0_GPFibOxzhoX_<^}Ze3Q}FrHr07OqQyssmnFrn}OJC>N#ubNdU$3q>^8`2Wd}-G|%(Wce)-7HJvnZW8PR1DYycNw?3m)gGJHPZ@ z%EutmIN|BYb&dC2w_!zIe?b#GSpws8^8ev-YCV}L@~TI&)Cb}3yxG;`;xWe-as72n zbQQOFN(He!e7W;Uu9`~kB5Miuym#K>$&gk$#W2tP3}-(@>LKf9!_Q7{Vye_SQW;1` zo~eXlndbc(?wO-Uk2tPd^2Sh*5^rUH1Z#5)_hihs6_+^OlfFxsC4$}(!@oS8+dY>5 z_^>9_v;iHA5JdPpXL!!uB}Lor9iA8tq7n22WIxjr8=-t?P`VLmw0C;eY0;Wo%bbPN zuxo)Vq0<6qd(t-8?bsu2ZH_0)X3{#N?mCZNi}bL2t|v=j@@t-_h^L~{X&^pR)V;uC z<6QS5k4x&tN0GmHD0kzb+>MuF_X?sa(P=@J5z$VPyYNpMrkqQbK_ogyDeS`iSD>)# zf^#n5gMYbzHUs|J^cn~iC*w!9EE3ft!q+FWg+L5(6xp$a9&A8sMRm2P2FqaRoWm02 zh-%m+c?JcUaXL;Qbg}u+4VSUKZVodcW=f&UHtZ^PZrRe0VT-a*Gdarb<*8*5rimg` zA|d75EZ?U(%Uk+W1yO@ORd@>y;~TJy=nOKFaGCzSKnzG& zOn&v{h(2Dp!U<8l|G<&|R>qWq%=w)_-Mbk`e*cVuG~8?Z4>83X zZsm6rV6YN;{*e?sbfq8Q7>5MTy0ZXLmNj4k@NwM`M~tNKg|~lpLFKVFvpEHy_Q|F{ z*OKZA<^A+2axk|by$jnsJLeSyrQXjkuyxS=YA7heA%VuC0(;>*7qbgav~bhq@6v*_ zfn^21b44NPq~|NFWXsx$#P^mbfwwf-5qV3Jl(#rZdyA5cw=k*j8j?!3t5vaGE$7W; z%UV5K*5)LmyxDA7o5hy3yOPnKP)*#CjPtIin-HprX>3^=rkj9j;_?Tgs;O1NDIt6k zHzcz!cciN3#(qLK%;(cp!U*vuW{CK|Gefyf9HEunFg;iv(T%^ zEb=m$#a=qI#7kwCd0}R`7i93g&#d&4428jUl4EE54E|PzcknkG&Sc+WCcJA82kCGY ze^cRX{zl;(1VLEGUq75nN)pcF@BBg)JSCOh!a{|&sF3j%7t-F6LdsiK2t6FXJsiJ1 z9KSsZEBrSX@5`TB#o7i}2}MXI;VPjCNhMq*3?Tt;-%q$oK4V_8FCuK8puMwn-x=CQ zgP^Ip=)Q^|iH=ITTYYG%DcW}tcLsAJByL+r6H{jQWkhnKFY63r6WmY?5Cj_oGGd}7 zp_gPKqY3g%(*2DP0+C)mJW>YamI$N=k`QE)zwDV9TTJssM$#}@EbDPa;^m0%JQ)z% z!%~?Dvu+l~8S0WQ#w_F#|-C@tTY;R&8iTh%{K_@t+dxd{8Y+~x`(q-Dm z%;MgATq^Tku9%O!Z4xGgJnoS@VS4LQS&So%)ysQ?t}&j>HV(;zU{0Z9Gd+ zb7jNfl{DR6j3ap;_e79#!BiqoiL=AKckw&i;7d+>=kS}oi2SPO7aI=wHD7+A$LzCB zs0e9RZNXkRAlv-C%sKbc4E1%o8bI_Q_YJMuvzMtg=}0!0!uK#+5+`m`+U-F;Ts`d05MCUVqFUtuh7L!_GD8&{H?rTrj79T zrs24wVA2RD;?n%Rsq9pqnPgdRB}v{`l!fMmharj700Pv_c0jdx-Aj zk;(fMGRGv&-p-R@0eM5f3E`fZJUbqV`+XO`c@QXud*<+)tKe5X`dm7{=95-x+siNP z`Bvf0T}X?El9gK6E;(q z!p8{G#unt8i0@Lc2}l`Nkcgg9Q!MchvAaoPPdlF*AY~+@kd!L+uZN_-?(0&LdvhLq zTFn6`mYZBs`QCvlwzRX=tXVYWywbe`J1g1N9=NnGr%~&up;$J z^SX8W$uis-?g(JmA}|oSy8J@oKzZJ6g_N9(0xm?`6UH9sC}OnajBq>jTI(XYeRp)1 z2>Hl^-~EnY`y6+aG{Gscz25x}I0GApTk-j|fM3CSoDa7zE|k`-Umt8=S}3ktzkNFf z&GvZ(u}MkslIbMxp zyAr0W1#aj{Id&^CSmuct@+R}+e>)EM72|N9$Nz#L|0exCe_oMa{M&E;<@bE~|NPud zd?*Mj4o|(j`{hx!w^kh9Au`;~W*IIvTxZxJilbxCt2jky1O8P!_-Bd_tukyk956hp z_*kO&*3TJ!-SB&g&uEbqZ$GccZ-2`0e;EFSA?H)RSMiR&(u8;3toVohhCem50^hem zkNW+J_~}1T{K7{RzdEG&4|ZYya7B;5o;94J_>CG@zE|;$0ZXtu{Khx*_}@n> z{>R4^e;FwzM;vCenx3uxnI4b+v109CD^ArXn7!j4^?24c#rlng@0I)aylnl44L@V} zHN{1tV(SdWu9D*ByA-!|7#>vIt{0fyWd-hDuIcwpRy;9V@yuq!c(469Vfe7274+yo z=^-f{Nr`i`^jup4;i|5Cko`HGi+uK2!9it+n?%M$)j@lS42 z{LnusesYarm*F18&%J2)Rm0Z|?G=2ksK;NjJN=T~=$Gt9U-_t$$JuY#m45RjJ>k_m z6@PF@@u$ZOFDd@=*NRskQM_gsc+D>Gnq6RVk&{|=tlS9yb0w#v~9 zR4{tI;-s%A&UjMs&RWI#9>aSS=V{BXZ1}PsFVYrXx%d})yhLAJ<#KIJmCF-NUn{ML z`d7Ijr3o9x8s4V3rO{9;S>=wUdc0F#Q6;Nz@~;w3SBJYkXQ<7ta@Y6lSl@Z&p1dCK z(^pk_@Q=0qR}Ow(1%tm-JoOI6$F$Z~KK6hfKlxq5pD8}&z^i;}lpa6*yN244RX+U* zJN}a4zbO9JI~9NTUTy!C?=`_6URJ>$**p5nKhfjAx?uQL!*?5g!0<)IkJ+RDShpST zGdyYdh~fJbU-}TwpMRBKtWx}vJ-RR1qx+IQx-b8p%D?=NhFS?LzjCu4e`S^8-+$Kd zH;S*^ZfFlFV>JDjTjYPRD(#a|v({LP09_1#zf<`s^)n5y4=M+H}=JpM>u75{Vm z&p-c2U-fUE33JhXm*XE+*AnwmD|`Ma%|HLtW_MctsR6@-hG!hQKdG~xC;$1E8?6s6 zXM<#JbWzjCXw}M%nP|te43`^j6vY32%yvsSWO%{wt%mP5{D9$$hF>*&&G5&DMa8i> z!-`Ifg3@HyQ3UJYx8O;WIpc{^f4^14FgEa+9 z4VNg+wmYxCNssGw(9G3qf0bL%sObxIkj*XFrN@gZ4eh*mQKu#>-K)6l3BzX%pEG>H z@MXhS4PQ6BqPRS3SgW{lq2ju8hEE#)p2Ik|?$0%$^;yNX@rL^qH%>OJGhAi(pkl{% z#m;vb{;8q8%Fe&F<8K&hf0yh0l^oOlyR^g0b!ms0>$N-V3-yHU+TrE4KcmM3|3h)l zX~n%O6!+<1o4eN@?R}ro^!uze9JE(<@D@!!@^2vZFL&gBX~I$8@CHL2GIB@f+VN^b zdu1n0e$wP8O@8t(RPS8D@YjmxGluqr&(E;-e}0h(1{E*aBfn&i{E|KLOaG>F;z!EA z+#@#|-etJVaD(AC!-I-XyvOiEhA&zBf5zU~GxpA&v3K^2y|ZWRojv2;nU{N;y|TBB z(~REsxZ-bLQ~Vvfz~8Y8ynK(QUp{5{sNp+#{`|{bR*MX_YCZnld5Z70f`0#m9{+(A z@JE;Q_>bOh_+G;g8-B*{Ylh!7{F&k(JMeOU7W>@z%R_=w_PT~z$&pBjGL@NX64kAA}verWhB#gC;8#~I$P_z64l6L#Jw?7UCD zpz;^(0$#KWc<~*UuD6_f@uPbD8I{Mm&zRsdCiv_=Rrs5$il4V0>+{yEK7XgBFEwm4 z+-i8g;W@=GMTTPxrz^hfUM21SD<9W{uh^Y^#qR7Yc4uGtmCC<*qvF@>9sZ;B7ytYb zP5-u9V7YHQ3(U)Xd$y%p|M2a*?RbabVUYTl`?kHKZ$GVq@86*KgLf$w?9P8|7xt5N zn*Nh+LwjOBIcdj_7`{XC7gh;>@m)K%8~F7~Yya04s^D6aVXxu6hNlf5Gklj~S$nd4 zu*4nbgI2>WiWMotv4*!9E-+lL?LS}9V+r>t=Ke!5zt~W%?0o*~dOYSwisSTx^W*e_ z^W*e_^W*e_^W*e_^AkR+`cq6k<-K8` zS%!oVkbn6tqYZC0H2q!g*5f_@X!!4jzi=4m_gV&fErY$5!CuQ??^-=!?`FfjiubHh z+`r54FAV=$@xWUR?E(&bK#vdZGjy#b_VS1Fns7vI!2D6Gghx+l`q4)X-)Zw69BcS5ii1A}dA<2lb|+^Rs^IKHibIbop4WDqf8dlJU%JuI>dK{g zc5L}v>aycKhJ%Kd@1@_i+lbVYtY!*_ziAeU`A_@QmT(hL;WBZ}`077Y)B@STOvx;*%M}@rE-D7a7LQ_M^{m zzu_6f#|5E^jJUACq4{ z8~IiL_{J;M&u_d^(|#()1a&#nS5y8x1=QcNrctykz)x!}l5v4{gs6X~OeQ7(Q$GoZ$H|=C5EkrTNL9L4p_pF;S+|>8a`+Eg5k@CuNuB?ct!D(S;JbxnTAUYTMf53jPsv7 zU&l$d8__E=vhOZl5QT$Za zu-0&<;S$4E!!6eSKXt$oh76xDeAe(e!xs!+Hhk6ab;B!)pUxWA8qPFaV%Tc9#oGU; z4_LyG;S+|>8a`+Eg5k@CuNuB?ct!E0tYNL;Ov5FHt%h4{XnW~^B@7upVfd`!bA~S% zzHIoa;p>K16hD(StTmizxWus4Fy3N64j2v@K4JK*;d6#B7`|-ys^RN~R}?>+HLNw9 zX}H9&RWbhT7E3r_IHdTwCc|Dsn-zTSv>iWY_%6dgHPpU3|GB@l<8K)L(C}A^f0K3? z=l^D$CERZKzZ75of}vTAFaN-f&0_qr*;8LOi}B01sr<_e4A&d>7~W%e%J5M^+W(i| zX$gO#_%%EJ=V^NUulA_^)h_H?x*C!Hmd-%)-*7Xr)nPl>|?A<^U78pFwk zb%v`9+YJW{j~d2`x9F3uj&C_*36CpI`L^P;rwo6pIQ>J4w+-Vb^BWA;8Fm}mD{NS* z#|;+@)dsI_c()wKUiIQZ6)Z7a`hXrUea7$)47Ju*Fa5L~Ypt(drnS6!#rHIQHMo+`5VPm6^0WGrDx!ERIggB32W_9uG9XndY$%v)$6qXt6r!5U-dfI|9RExw7aWb zr`=z5v$c-q7c{?SYaPw6+Of5c<|}&KLhGP>ue!zFNt;ebs@q;vg*KgzRJXlm$2uLU zZY%2XhMeI<#Z6NT>kS(XI}CRj9y7e8?Z0}{+b!X}h95TkjN#V|ziaq2#dZf?b^9ni z?iyn_-O%brm(`6fs~cVWOny@CpC{1uh~Ya7|Jd-OhMzb5C&TX>{!$TUUHMntYwx(% z-f^$IV@bDH+}mQu{f6;<_T#MKTMU2K@XriCVfZD(e=+i}HCtz? zeCu+3eQ8v}U-+^!HdZ-Md`nd(R2d{`Y>u z5`Lw)ufcGgVYlHv!;^+~f&1QJ$A7H2-(J~%%Xh!Mvi<*Ja=YODzu`Df<+!gx1@}$3 z{Lf?4{$L+$7+l3vs3p;KX_NWa3kEt0{{g|3T)sLweRBh{E)sKl8 z#PvVEMDb}gpQ@j>^PaZzp5{E)&pfU6Q}xq!;?sXjEM&&{xY<~dy!s(!B76#EQqxc-zbu2z5QE1LePZyEll;Wfoi zR~g=Hc$eWa#m`$${`v3N@lUOv`Fx@YU#KyhtoToMr?1|x$FI7|=~cgK_QJv0ug3Q0)!g$j zO+Tv(^)(M{*W(8c8D3C)aF62SKUaM6Rzo}QN!KuAujcK$RPb9`Yir)8&8_Br(hqO} ze^g;O!SD{l#fl%cC-K>j>ha4rDSq{rihmawjxn5WC{Kc?Q}cIf57hjV74X`fs_@!U z!#2aMhW8tuGkj9Ibzj~b^JHfo$+*r;*MDj(NpxZm(hY(E}1ylnV>!{-gZX!uRT zg5j?f$7d9$Y6mpx4!f{B?85G-Q~4dM4BHLk0sC=uIKl93hVL=_kl{;)uNZ#E@TZFN zexbO;E^Mh?*wXQuzI2A+BE@)VvnBKy?l(MR__*O^!}l9LZ}>&SZz`_)mg4_2Z>Yn( zp$_x@4-xm_htl$3x?aFXA1YuErTwAwehBRgmG_+w;rl@i@T-UN-$Q8scnBTl3ZbKZ zL+I#YC=IDA1Y(jQ{1~u9>lp-MgCPR3ry+D4xL{xqh=Yp9K{dod4T@`qs+$a@7endI qQ2H>Gz6_-wL+Q^DI-VIy3j=9jJ3}B|87g4h4s2&^-ybY=`7Hn(j5f~z diff --git a/images/icons_banners/icon_black.png b/images/icons_banners/icon_black.png new file mode 100644 index 0000000000000000000000000000000000000000..d808a61dbd8446a8f9a327533ef91dc45bb1beba GIT binary patch literal 183207 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%0A(EwntH-$Y;^gh1tE&Fw@P$nMPw8l?= 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�O^K1I;PMo%2Y=n!YQ7HYTSs<+QC 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 ra#hP8sONjRdQJhM?Z`iwpw^~lfcKxR% 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