From a4cdac34de56c7df0b94ed2fb2d2289218f641ce Mon Sep 17 00:00:00 2001 From: stfwi Date: Fri, 4 Sep 2020 23:04:48 +0200 Subject: [PATCH] Caution and Hazard signs added. Water Freezer added. Ladder/Hatch handling improved. Metal Bar ingredient added, recipes adapted accordingly. Roof Chimney added. --- gradle.properties | 2 +- meta/update.json | 5 +- readme.md | 11 + .../java/wile/engineersdecor/ModContent.java | 353 ++++++++++------ .../engineersdecor/ModEngineersDecor.java | 2 +- .../engineersdecor/blocks/EdChimneyBlock.java | 92 +++++ .../wile/engineersdecor/blocks/EdFreezer.java | 385 ++++++++++++++++++ .../engineersdecor/blocks/EdGroundBlock.java | 4 +- .../engineersdecor/blocks/EdHatchBlock.java | 22 +- .../wile/engineersdecor/blocks/EdHopper.java | 5 + .../engineersdecor/blocks/EdLadderBlock.java | 14 +- .../engineersdecor/blocks/EdRoofBlock.java | 26 +- .../wile/engineersdecor/items/EdItem.java | 46 +++ .../engineersdecor/libmc/detail/Fluidics.java | 7 + .../dark_shingle_roof_chimney.json | 7 + .../blockstates/sign_caution.json | 10 + .../blockstates/sign_firehazard.json | 10 + .../blockstates/sign_frost.json | 10 + .../blockstates/sign_hotsurface.json | 10 + .../blockstates/sign_laser.json | 10 + .../blockstates/sign_magichazard.json | 10 + .../blockstates/sign_magneticfield.json | 10 + .../blockstates/sign_radioactive.json | 10 + .../blockstates/small_freezer.json | 24 ++ .../assets/engineersdecor/lang/en_us.json | 21 +- .../assets/engineersdecor/lang/ru_ru.json | 21 +- .../assets/engineersdecor/lang/zh_cn.json | 21 +- .../block/device/small_freezer_model.json | 10 + .../block/device/small_freezer_model_s1.json | 6 + .../block/device/small_freezer_model_s2.json | 6 + .../block/device/small_freezer_model_s3.json | 6 + .../block/device/small_freezer_model_s4.json | 6 + .../device/small_mineral_smelter_model.json | 96 +++-- .../roof/dark_shingle_roof_chimney_model.json | 81 ++++ .../dark_shingle_roof_chimneytrunk_model.json | 126 ++++-- .../models/block/sign/sign_caution_model.json | 4 + .../block/sign/sign_firehazard_model.json | 4 + .../models/block/sign/sign_frost_model.json | 4 + .../block/sign/sign_hotsurface_model.json | 4 + .../models/block/sign/sign_laser_model.json | 4 + .../block/sign/sign_magichazard_model.json | 4 + .../block/sign/sign_magneticfield_model.json | 4 + .../block/sign/sign_mindstep_model.json | 4 - .../block/sign/sign_radioactive_model.json | 4 + .../item/dark_shingle_roof_chimney.json | 1 + .../engineersdecor/models/item/metal_bar.json | 43 ++ .../models/item/sign_caution.json | 1 + .../models/item/sign_firehazard.json | 1 + .../models/item/sign_frost.json | 1 + .../models/item/sign_hotsurface.json | 1 + .../models/item/sign_laser.json | 1 + .../models/item/sign_magichazard.json | 1 + .../models/item/sign_magneticfield.json | 1 + .../models/item/sign_radioactive.json | 1 + .../models/item/small_freezer.json | 1 + .../block/furnace/small_freezer_bottom.png | Bin 0 -> 591 bytes .../block/furnace/small_freezer_front_s0.png | Bin 0 -> 646 bytes .../block/furnace/small_freezer_front_s1.png | Bin 0 -> 760 bytes .../furnace/small_freezer_front_s1.png.mcmeta | 1 + .../block/furnace/small_freezer_front_s2.png | Bin 0 -> 667 bytes .../block/furnace/small_freezer_front_s3.png | Bin 0 -> 689 bytes .../block/furnace/small_freezer_front_s4.png | Bin 0 -> 707 bytes .../block/furnace/small_freezer_side.png | Bin 0 -> 641 bytes .../block/furnace/small_freezer_top.png | Bin 0 -> 607 bytes .../small_mineral_smelter_front_s0.png | Bin 618 -> 655 bytes .../small_mineral_smelter_front_s1.png | Bin 728 -> 754 bytes .../small_mineral_smelter_front_s2.png | Bin 940 -> 981 bytes .../small_mineral_smelter_front_s3.png | Bin 957 -> 958 bytes .../furnace/small_mineral_smelter_side.png | Bin 606 -> 647 bytes .../block/sign/sign_caution_texture.png | Bin 0 -> 1114 bytes .../block/sign/sign_firehazard_texture.png | Bin 0 -> 1268 bytes .../block/sign/sign_frost_texture.png | Bin 0 -> 1303 bytes .../block/sign/sign_hotsurface_texture.png | Bin 0 -> 1281 bytes .../block/sign/sign_laser_texture.png | Bin 0 -> 1161 bytes .../block/sign/sign_magichazard_texture.png | Bin 0 -> 1340 bytes .../block/sign/sign_magneticfield_texture.png | Bin 0 -> 1213 bytes .../block/sign/sign_mindstep_texture.png | Bin 1786 -> 0 bytes .../block/sign/sign_radioactive_texture.png | Bin 0 -> 1243 bytes .../blocks/dark_shingle_roof_chimney.json | 21 + .../loot_tables/blocks/sign_caution.json | 21 + .../loot_tables/blocks/sign_firehazard.json | 21 + .../loot_tables/blocks/sign_frost.json | 21 + .../loot_tables/blocks/sign_hotsurface.json | 21 + .../loot_tables/blocks/sign_laser.json | 21 + .../loot_tables/blocks/sign_magichazard.json | 21 + .../blocks/sign_magneticfield.json | 21 + .../loot_tables/blocks/sign_radioactive.json | 21 + .../dependent/factory_dropper_recipe.json | 57 --- .../dependent/factory_hopper_recipe.json | 57 --- .../dependent/factory_placer_recipe.json | 57 --- .../dependent/fluid_barrel_recipe.json | 56 --- .../recipes/dependent/iron_hatch_recipe.json | 53 --- .../dependent/iron_inset_light_recipe.json | 81 ---- .../dependent/labeled_crate_recipe.json | 56 --- ...loor_recipe.json => metal_bar_recipe.json} | 14 +- .../dependent/panzerglass_block_recipe.json | 55 --- .../rebar_concrete_block_recipe.json | 54 --- .../dependent/small_block_breaker_recipe.json | 59 --- .../dependent/small_fluid_funnel_recipe.json | 56 --- .../dependent/small_lab_furnace_recipe.json | 56 --- .../small_milking_machine_recipe.json | 59 --- .../small_mineral_smelter_recipe.json | 60 --- .../dependent/small_solar_panel_recipe.json | 9 +- .../dependent/small_tree_cutter_recipe.json | 59 --- .../small_waste_incinerator_recipe.json | 56 --- .../dependent/straight_pipe_valve_recipe.json | 4 +- .../dependent/thin_steel_pole_recipe.json | 53 --- .../dark_shingle_roof_chimney_recipe.json | 33 ++ .../dark_shingle_roof_metallized_recipe.json | 4 +- .../dense_grit_sand_block_recipe.json | 3 +- .../dense_grit_sand_dirt_recipe.json | 3 +- .../independent/factory_dropper_recipe.json | 31 ++ ...recipe.json => factory_hopper_recipe.json} | 19 +- .../independent/factory_placer_recipe.json | 31 ++ .../independent/fluid_barrel_recipe.json | 30 ++ .../independent/iron_hatch_recipe.json | 29 ++ .../independent/iron_inset_light_recipe.json | 31 ++ .../independent/labeled_crate_recipe.json | 30 ++ .../metal_rung_ladder_recipe.json | 4 +- .../metal_rung_steps_recipe.json | 4 +- .../independent/panzerglass_block_recipe.json | 30 ++ .../rebar_concrete_block_recipe.json | 30 ++ .../independent/sign_caution_recipe.json | 23 ++ .../independent/sign_firehazard_recipe.json | 23 ++ .../independent/sign_frost_recipe.json | 23 ++ .../independent/sign_hotsurface_recipe.json | 23 ++ .../sign_hotwire_recipe_wrapback.json | 4 +- .../independent/sign_laser_recipe.json | 23 ++ .../independent/sign_magichazard_recipe.json | 23 ++ .../sign_magneticfield_recipe.json | 23 ++ .../independent/sign_radioactive_recipe.json | 23 ++ .../small_block_breaker_recipe.json | 32 ++ .../small_electrical_furnace_recipe.json | 4 +- .../small_fluid_funnel_recipe.json | 31 ++ .../independent/small_freezer_recipe.json | 32 ++ .../independent/small_lab_furnace_recipe.json | 31 ++ .../small_milking_machine_recipe.json | 33 ++ .../small_mineral_smelter_recipe.json | 32 ++ .../independent/small_tree_cutter_recipe.json | 32 ++ .../small_waste_incinerator_recipe.json | 31 ++ .../steel_floor_grating_recipe.json | 6 +- .../steel_framed_window_recipe.json | 6 +- .../independent/steel_mesh_fence_recipe.json | 4 +- .../independent/steel_table_recipe.json | 6 +- .../independent/thick_steel_pole_recipe.json | 2 +- .../independent/thin_steel_pole_recipe.json | 29 ++ 146 files changed, 2311 insertions(+), 1275 deletions(-) create mode 100644 src/main/java/wile/engineersdecor/blocks/EdChimneyBlock.java create mode 100644 src/main/java/wile/engineersdecor/blocks/EdFreezer.java create mode 100644 src/main/java/wile/engineersdecor/items/EdItem.java create mode 100644 src/main/resources/assets/engineersdecor/blockstates/dark_shingle_roof_chimney.json create mode 100644 src/main/resources/assets/engineersdecor/blockstates/sign_caution.json create mode 100644 src/main/resources/assets/engineersdecor/blockstates/sign_firehazard.json create mode 100644 src/main/resources/assets/engineersdecor/blockstates/sign_frost.json create mode 100644 src/main/resources/assets/engineersdecor/blockstates/sign_hotsurface.json create mode 100644 src/main/resources/assets/engineersdecor/blockstates/sign_laser.json create mode 100644 src/main/resources/assets/engineersdecor/blockstates/sign_magichazard.json create mode 100644 src/main/resources/assets/engineersdecor/blockstates/sign_magneticfield.json create mode 100644 src/main/resources/assets/engineersdecor/blockstates/sign_radioactive.json create mode 100644 src/main/resources/assets/engineersdecor/blockstates/small_freezer.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s1.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s2.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s3.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s4.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/roof/dark_shingle_roof_chimney_model.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/sign/sign_caution_model.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/sign/sign_firehazard_model.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/sign/sign_frost_model.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/sign/sign_hotsurface_model.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/sign/sign_laser_model.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/sign/sign_magichazard_model.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/sign/sign_magneticfield_model.json delete mode 100644 src/main/resources/assets/engineersdecor/models/block/sign/sign_mindstep_model.json create mode 100644 src/main/resources/assets/engineersdecor/models/block/sign/sign_radioactive_model.json create mode 100644 src/main/resources/assets/engineersdecor/models/item/dark_shingle_roof_chimney.json create mode 100644 src/main/resources/assets/engineersdecor/models/item/metal_bar.json create mode 100644 src/main/resources/assets/engineersdecor/models/item/sign_caution.json create mode 100644 src/main/resources/assets/engineersdecor/models/item/sign_firehazard.json create mode 100644 src/main/resources/assets/engineersdecor/models/item/sign_frost.json create mode 100644 src/main/resources/assets/engineersdecor/models/item/sign_hotsurface.json create mode 100644 src/main/resources/assets/engineersdecor/models/item/sign_laser.json create mode 100644 src/main/resources/assets/engineersdecor/models/item/sign_magichazard.json create mode 100644 src/main/resources/assets/engineersdecor/models/item/sign_magneticfield.json create mode 100644 src/main/resources/assets/engineersdecor/models/item/sign_radioactive.json create mode 100644 src/main/resources/assets/engineersdecor/models/item/small_freezer.json create mode 100644 src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_bottom.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_front_s0.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_front_s1.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_front_s1.png.mcmeta create mode 100644 src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_front_s2.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_front_s3.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_front_s4.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_side.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_top.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/sign/sign_caution_texture.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/sign/sign_firehazard_texture.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/sign/sign_frost_texture.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/sign/sign_hotsurface_texture.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/sign/sign_laser_texture.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/sign/sign_magichazard_texture.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/sign/sign_magneticfield_texture.png delete mode 100644 src/main/resources/assets/engineersdecor/textures/block/sign/sign_mindstep_texture.png create mode 100644 src/main/resources/assets/engineersdecor/textures/block/sign/sign_radioactive_texture.png create mode 100644 src/main/resources/data/engineersdecor/loot_tables/blocks/dark_shingle_roof_chimney.json create mode 100644 src/main/resources/data/engineersdecor/loot_tables/blocks/sign_caution.json create mode 100644 src/main/resources/data/engineersdecor/loot_tables/blocks/sign_firehazard.json create mode 100644 src/main/resources/data/engineersdecor/loot_tables/blocks/sign_frost.json create mode 100644 src/main/resources/data/engineersdecor/loot_tables/blocks/sign_hotsurface.json create mode 100644 src/main/resources/data/engineersdecor/loot_tables/blocks/sign_laser.json create mode 100644 src/main/resources/data/engineersdecor/loot_tables/blocks/sign_magichazard.json create mode 100644 src/main/resources/data/engineersdecor/loot_tables/blocks/sign_magneticfield.json create mode 100644 src/main/resources/data/engineersdecor/loot_tables/blocks/sign_radioactive.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/factory_dropper_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/factory_hopper_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/factory_placer_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/fluid_barrel_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/iron_hatch_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/iron_inset_light_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/labeled_crate_recipe.json rename src/main/resources/data/engineersdecor/recipes/dependent/{treated_wood_floor_recipe.json => metal_bar_recipe.json} (54%) delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/panzerglass_block_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/rebar_concrete_block_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/small_block_breaker_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/small_fluid_funnel_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/small_lab_furnace_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/small_milking_machine_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/small_mineral_smelter_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/small_tree_cutter_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/small_waste_incinerator_recipe.json delete mode 100644 src/main/resources/data/engineersdecor/recipes/dependent/thin_steel_pole_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/dark_shingle_roof_chimney_recipe.json rename src/main/resources/data/engineersdecor/recipes/{dependent => independent}/dense_grit_sand_block_recipe.json (74%) rename src/main/resources/data/engineersdecor/recipes/{dependent => independent}/dense_grit_sand_dirt_recipe.json (74%) create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/factory_dropper_recipe.json rename src/main/resources/data/engineersdecor/recipes/independent/{clinker_brick_halfslab_recipe.json => factory_hopper_recipe.json} (50%) create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/factory_placer_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/fluid_barrel_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/iron_hatch_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/iron_inset_light_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/labeled_crate_recipe.json rename src/main/resources/data/engineersdecor/recipes/{dependent => independent}/metal_rung_ladder_recipe.json (81%) rename src/main/resources/data/engineersdecor/recipes/{dependent => independent}/metal_rung_steps_recipe.json (81%) create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/panzerglass_block_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/rebar_concrete_block_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/sign_caution_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/sign_firehazard_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/sign_frost_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/sign_hotsurface_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/sign_laser_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/sign_magichazard_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/sign_magneticfield_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/sign_radioactive_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/small_block_breaker_recipe.json rename src/main/resources/data/engineersdecor/recipes/{dependent => independent}/small_electrical_furnace_recipe.json (90%) create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/small_fluid_funnel_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/small_freezer_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/small_lab_furnace_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/small_milking_machine_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/small_mineral_smelter_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/small_tree_cutter_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/small_waste_incinerator_recipe.json create mode 100644 src/main/resources/data/engineersdecor/recipes/independent/thin_steel_pole_recipe.json diff --git a/gradle.properties b/gradle.properties index 56dd9af..9ebd200 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,4 +5,4 @@ version_minecraft=1.16.2 version_forge_minecraft=1.16.2-33.0.37 version_fml_mappings=20200723-1.16.1 version_jei=1.16.2:7.1.3.19 -version_engineersdecor=1.1.2-b5 +version_engineersdecor=1.1.2-b6 diff --git a/meta/update.json b/meta/update.json index 93b1a79..7884244 100644 --- a/meta/update.json +++ b/meta/update.json @@ -1,6 +1,7 @@ { "homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/", "1.16.2": { + "1.1.2-b6": "[A] Signs added: Generic Caution, Magical Hazard, Radioactive Hazard, Laser Hazard, Fire Hazard, Caution Hot Surface, Magnetic Field Caution, Frost Warning.\n[A] Water Freezer added (generates Ice, Packed Ice, Blue Ice from water).\n[F] Mineral Smelter GUI model facing fixed.\n[M] Hatch handling improved.\n[M] Ladder fast-move improved.\n[F] Roof Chimney Trunk shape hollow to allow feeding IE Wire power over the roof into the building.\n[A] Roof Chimney added (smoking offset for Dark Shingle Roof Chimney Trunk block).\n[A] Metal Bar (ingredient item) added to circumvent recipe collisions with other mods.\n[M] Recipes for metallic blocks modified accordingly to depend on Metal Bars.", "1.1.2-b5": "[A] Sandstone Ornamented Clinker Brick added.\n[A] Old Industrial Wood Planks/Stairs/Slabs/Slab Slices added.\n[A] Old Industrial Wood Door added.\n[M] Wood textures made slightly darker.\n[F] Milking Machine fluid transfer re-added (thx gebcrafter).\n[F] Fluid Barrel status overlay message format fixed.\n[F] Fixed missing Dense Grit Dirt loot table (issue #124, thx vaelzan).", "1.1.2-b4": "[F] Mapping adaption to Forge 1.16.2-33.0.22/20200723-1.16.1.\n[F] Fixed conditional recipe tag dependency (thx Blu, Cyborgmas).", "1.1.2-b3": "[F] Mapping adaption to Forge 1.16.2-33.0.20.", @@ -8,7 +9,7 @@ "1.1.2-b1": "[U] Ported to MC1.16.2." }, "promos": { - "1.16.2-recommended": "1.1.2-b5", - "1.16.2-latest": "1.1.2-b5" + "1.16.2-recommended": "1.1.2-b6", + "1.16.2-latest": "1.1.2-b6" } } \ No newline at end of file diff --git a/readme.md b/readme.md index 495c2da..816bdb6 100644 --- a/readme.md +++ b/readme.md @@ -11,6 +11,17 @@ Mod sources for Minecraft version 1.16.2. ## Version history + - v1.1.2-b6 [A] Signs added: Generic Caution, Magical Hazard, Radioactive Hazard, Laser Hazard, + Fire Hazard, Caution Hot Surface, Magnetic Field Caution, Frost Warning. + [A] Water Freezer added (generates Ice, Packed Ice, Blue Ice from water). + [F] Mineral Smelter GUI model facing fixed. + [M] Hatch handling improved. + [M] Ladder fast-move improved. + [F] Roof Chimney Trunk shape hollow to allow feeding IE Wire power over the roof into the building. + [A] Roof Chimney added (smoking offset for Dark Shingle Roof Chimney Trunk block). + [A] Metal Bar (ingredient item) added to circumvent recipe collisions with other mods. + [M] Recipes for metallic blocks modified accordingly to depend on Metal Bars. + - v1.1.2-b5 [A] Sandstone Ornamented Clinker Brick added. [A] Old Industrial Wood Planks/Stairs/Slabs/Slab Slices added. [A] Old Industrial Wood Door added. diff --git a/src/main/java/wile/engineersdecor/ModContent.java b/src/main/java/wile/engineersdecor/ModContent.java index 15cbcf2..cfa606a 100644 --- a/src/main/java/wile/engineersdecor/ModContent.java +++ b/src/main/java/wile/engineersdecor/ModContent.java @@ -17,6 +17,7 @@ import wile.engineersdecor.blocks.EdFurnace.FurnaceBlock; import wile.engineersdecor.blocks.EdFurnace.FurnaceContainer; import wile.engineersdecor.blocks.EdFurnace.FurnaceGui; import wile.engineersdecor.blocks.EdFurnace.FurnaceTileEntity; +import wile.engineersdecor.items.EdItem; import wile.engineersdecor.libmc.blocks.StandardBlocks; import wile.engineersdecor.libmc.blocks.StandardBlocks.IStandardBlock; import wile.engineersdecor.libmc.detail.Auxiliaries; @@ -57,6 +58,8 @@ import javax.annotation.Nonnull; @SuppressWarnings("unused") public class ModContent { + private static final String MODID = ModEngineersDecor.MODID; + //-------------------------------------------------------------------------------------------------------------------- // Blocks //-------------------------------------------------------------------------------------------------------------------- @@ -64,255 +67,263 @@ public class ModContent public static final DecorBlock.Normal CLINKER_BRICK_BLOCK = (DecorBlock.Normal)(new DecorBlock.Normal( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(3f, 50f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "clinker_brick_block")); + )).setRegistryName(new ResourceLocation(MODID, "clinker_brick_block")); public static final EdSlabBlock CLINKER_BRICK_SLAB = (EdSlabBlock)(new EdSlabBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(3f, 50f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "clinker_brick_slab")); + )).setRegistryName(new ResourceLocation(MODID, "clinker_brick_slab")); public static final EdStairsBlock CLINKER_BRICK_STAIRS = (EdStairsBlock)(new EdStairsBlock( DecorBlock.CFG_DEFAULT, CLINKER_BRICK_BLOCK.getDefaultState(), Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(3f, 50f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "clinker_brick_stairs")); + )).setRegistryName(new ResourceLocation(MODID, "clinker_brick_stairs")); public static final EdWallBlock CLINKER_BRICK_WALL = (EdWallBlock)(new EdWallBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(3f, 50f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "clinker_brick_wall")); + )).setRegistryName(new ResourceLocation(MODID, "clinker_brick_wall")); public static final DecorBlock.Normal CLINKER_BRICK_STAINED_BLOCK = (DecorBlock.Normal)(new DecorBlock.Normal( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(3f, 50f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "clinker_brick_stained_block")); + )).setRegistryName(new ResourceLocation(MODID, "clinker_brick_stained_block")); public static final EdSlabBlock CLINKER_BRICK_STAINED_SLAB = (EdSlabBlock)(new EdSlabBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(3f, 50f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "clinker_brick_stained_slab")); + )).setRegistryName(new ResourceLocation(MODID, "clinker_brick_stained_slab")); public static final EdStairsBlock CLINKER_BRICK_STAINED_STAIRS = (EdStairsBlock)(new EdStairsBlock( DecorBlock.CFG_DEFAULT, CLINKER_BRICK_BLOCK.getDefaultState(), Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(3f, 50f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "clinker_brick_stained_stairs")); + )).setRegistryName(new ResourceLocation(MODID, "clinker_brick_stained_stairs")); public static final EdCornerOrnamentedBlock CLINKER_BRICK_SASTOR_CORNER = (EdCornerOrnamentedBlock)(new EdCornerOrnamentedBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(3f, 50f).sound(SoundType.STONE), new Block[]{CLINKER_BRICK_BLOCK, CLINKER_BRICK_STAINED_BLOCK, CLINKER_BRICK_SLAB, CLINKER_BRICK_STAIRS, CLINKER_BRICK_STAINED_SLAB, CLINKER_BRICK_STAINED_STAIRS} - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "clinker_brick_sastor_corner_block")); + )).setRegistryName(new ResourceLocation(MODID, "clinker_brick_sastor_corner_block")); // ------------------------------------------------------------------------------------------------------------------- public static final DecorBlock.Normal SLAG_BRICK_BLOCK = (DecorBlock.Normal)(new DecorBlock.Normal( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(3f, 50f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "slag_brick_block")); + )).setRegistryName(new ResourceLocation(MODID, "slag_brick_block")); public static final EdSlabBlock SLAG_BRICK_SLAB = (EdSlabBlock)(new EdSlabBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(3f, 50f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "slag_brick_slab")); + )).setRegistryName(new ResourceLocation(MODID, "slag_brick_slab")); public static final EdStairsBlock SLAG_BRICK_STAIRS = (EdStairsBlock)(new EdStairsBlock( DecorBlock.CFG_DEFAULT, SLAG_BRICK_BLOCK.getDefaultState(), Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(3f, 50f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "slag_brick_stairs")); + )).setRegistryName(new ResourceLocation(MODID, "slag_brick_stairs")); public static final EdWallBlock SLAG_BRICK_WALL = (EdWallBlock)(new EdWallBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(3f, 50f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "slag_brick_wall")); + )).setRegistryName(new ResourceLocation(MODID, "slag_brick_wall")); // ------------------------------------------------------------------------------------------------------------------- public static final DecorBlock.Normal REBAR_CONCRETE_BLOCK = (DecorBlock.Normal)(new DecorBlock.Normal( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(5f, 2000f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "rebar_concrete")); + )).setRegistryName(new ResourceLocation(MODID, "rebar_concrete")); public static final EdSlabBlock REBAR_CONCRETE_SLAB = (EdSlabBlock)(new EdSlabBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(5f, 2000f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "rebar_concrete_slab")); + )).setRegistryName(new ResourceLocation(MODID, "rebar_concrete_slab")); public static final EdStairsBlock REBAR_CONCRETE_STAIRS = (EdStairsBlock)(new EdStairsBlock( DecorBlock.CFG_DEFAULT, REBAR_CONCRETE_BLOCK.getDefaultState(), Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(5f, 2000f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "rebar_concrete_stairs")); + )).setRegistryName(new ResourceLocation(MODID, "rebar_concrete_stairs")); public static final EdWallBlock REBAR_CONCRETE_WALL = (EdWallBlock)(new EdWallBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(5f, 2000f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "rebar_concrete_wall")); + )).setRegistryName(new ResourceLocation(MODID, "rebar_concrete_wall")); public static final EdSlabSliceBlock HALFSLAB_REBARCONCRETE = (EdSlabSliceBlock)(new EdSlabSliceBlock( DecorBlock.CFG_CUTOUT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(5f, 2000f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_rebar_concrete")); + )).setRegistryName(new ResourceLocation(MODID, "halfslab_rebar_concrete")); // ------------------------------------------------------------------------------------------------------------------- public static final DecorBlock.Normal GAS_CONCRETE_BLOCK = (DecorBlock.Normal)(new DecorBlock.Normal( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(1.5f, 10f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "gas_concrete")); + )).setRegistryName(new ResourceLocation(MODID, "gas_concrete")); public static final EdSlabBlock GAS_CONCRETE_SLAB = (EdSlabBlock)(new EdSlabBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(1.5f, 10f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "gas_concrete_slab")); + )).setRegistryName(new ResourceLocation(MODID, "gas_concrete_slab")); public static final EdStairsBlock GAS_CONCRETE_STAIRS = (EdStairsBlock)(new EdStairsBlock( DecorBlock.CFG_DEFAULT, REBAR_CONCRETE_BLOCK.getDefaultState(), Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(1.5f, 10f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "gas_concrete_stairs")); + )).setRegistryName(new ResourceLocation(MODID, "gas_concrete_stairs")); public static final EdWallBlock GAS_CONCRETE_WALL = (EdWallBlock)(new EdWallBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(1.5f, 10f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "gas_concrete_wall")); + )).setRegistryName(new ResourceLocation(MODID, "gas_concrete_wall")); public static final EdSlabSliceBlock HALFSLAB_GASCONCRETE = (EdSlabSliceBlock)(new EdSlabSliceBlock( DecorBlock.CFG_CUTOUT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(1.5f, 10f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_gas_concrete")); + )).setRegistryName(new ResourceLocation(MODID, "halfslab_gas_concrete")); // ------------------------------------------------------------------------------------------------------------------- public static final DecorBlock.Normal REBAR_CONCRETE_TILE = (DecorBlock.Normal)(new DecorBlock.Normal( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(5f, 2000f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "rebar_concrete_tile")); + )).setRegistryName(new ResourceLocation(MODID, "rebar_concrete_tile")); public static final EdSlabBlock REBAR_CONCRETE_TILE_SLAB = (EdSlabBlock)(new EdSlabBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(5f, 2000f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "rebar_concrete_tile_slab")); + )).setRegistryName(new ResourceLocation(MODID, "rebar_concrete_tile_slab")); public static final EdStairsBlock REBAR_CONCRETE_TILE_STAIRS = (EdStairsBlock)(new EdStairsBlock( DecorBlock.CFG_DEFAULT, REBAR_CONCRETE_TILE.getDefaultState(), Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(5f, 2000f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "rebar_concrete_tile_stairs")); + )).setRegistryName(new ResourceLocation(MODID, "rebar_concrete_tile_stairs")); // ------------------------------------------------------------------------------------------------------------------- public static final EdGlassBlock PANZERGLASS_BLOCK = (EdGlassBlock)(new EdGlassBlock( DecorBlock.CFG_TRANSLUCENT, Block.Properties.create(Material.GLASS, MaterialColor.AIR).hardnessAndResistance(0.7f, 2000f).sound(SoundType.METAL).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "panzerglass_block")); + )).setRegistryName(new ResourceLocation(MODID, "panzerglass_block")); public static final EdSlabBlock PANZERGLASS_SLAB = (EdSlabBlock)(new EdSlabBlock( DecorBlock.CFG_TRANSLUCENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(0.7f, 2000f).sound(SoundType.METAL).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "panzerglass_slab")); + )).setRegistryName(new ResourceLocation(MODID, "panzerglass_slab")); // ------------------------------------------------------------------------------------------------------------------- public static final EdRoofBlock DARK_CERAMIC_SHINGLE_ROOF = (EdRoofBlock)(new EdRoofBlock( DecorBlock.CFG_CUTOUT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 15f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "dark_shingle_roof")); + )).setRegistryName(new ResourceLocation(MODID, "dark_shingle_roof")); public static final DecorBlock.Normal DARK_CERAMIC_SHINGLE_ROOF_BLOCK = (DecorBlock.Normal)(new DecorBlock.Normal( DecorBlock.CFG_CUTOUT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 15f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "dark_shingle_roof_block")); + )).setRegistryName(new ResourceLocation(MODID, "dark_shingle_roof_block")); public static final EdSlabBlock DARK_CERAMIC_SHINGLE_ROOF_SLAB = (EdSlabBlock)(new EdSlabBlock( DecorBlock.CFG_CUTOUT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 15f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "dark_shingle_roof_slab")); + )).setRegistryName(new ResourceLocation(MODID, "dark_shingle_roof_slab")); public static final EdSlabSliceBlock HALFSLAB_DARK_CERAMIC_SHINGLE_ROOF = (EdSlabSliceBlock)(new EdSlabSliceBlock( DecorBlock.CFG_CUTOUT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 15f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "dark_shingle_roof_slabslice")); + )).setRegistryName(new ResourceLocation(MODID, "dark_shingle_roof_slabslice")); public static final EdRoofBlock DARK_CERAMIC_SHINGLE_ROOF_METALIZED = (EdRoofBlock)(new EdRoofBlock( DecorBlock.CFG_CUTOUT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 15f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "dark_shingle_roof_metallized")); + )).setRegistryName(new ResourceLocation(MODID, "dark_shingle_roof_metallized")); public static final EdRoofBlock DARK_CERAMIC_SHINGLE_ROOF_SKYLIGHT = (EdRoofBlock)(new EdRoofBlock( DecorBlock.CFG_TRANSLUCENT, Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 15f).sound(SoundType.STONE).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "dark_shingle_roof_skylight")); + )).setRegistryName(new ResourceLocation(MODID, "dark_shingle_roof_skylight")); public static final EdRoofBlock DARK_CERAMIC_SHINGLE_ROOF_CHIMNEYTRUNK = (EdRoofBlock)(new EdRoofBlock( DecorBlock.CFG_CUTOUT, - Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 15f).sound(SoundType.STONE) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "dark_shingle_roof_chimneytrunk")); + Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(2f, 15f).sound(SoundType.STONE), + VoxelShapes.create(Auxiliaries.getPixeledAABB(3, 0, 3, 13, 16, 13)), + VoxelShapes.create(Auxiliaries.getPixeledAABB(5, 0, 5, 11, 16, 11)) + )).setRegistryName(new ResourceLocation(MODID, "dark_shingle_roof_chimneytrunk")); + + public static final EdChimneyBlock DARK_CERAMIC_SHINGLE_ROOF_CHIMNEY = (EdChimneyBlock)(new EdChimneyBlock( + DecorBlock.CFG_CUTOUT|DecorBlock.CFG_AI_PASSABLE, + Block.Properties.create(Material.ROCK, MaterialColor.STONE).hardnessAndResistance(5f, 2000f).sound(SoundType.STONE), + Auxiliaries.getPixeledAABB(3, 0, 3, 13, 6, 13) + )).setRegistryName(new ResourceLocation(MODID, "dark_shingle_roof_chimney")); // ------------------------------------------------------------------------------------------------------------------- public static final EdGroundBlock DENSE_GRIT_SAND = (EdGroundBlock)(new EdGroundBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.EARTH, MaterialColor.DIRT).hardnessAndResistance(0.5f, 3f).sound(SoundType.GROUND).harvestTool(ToolType.SHOVEL) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "dense_grit_sand_block")); + )).setRegistryName(new ResourceLocation(MODID, "dense_grit_sand_block")); public static final EdGroundBlock DENSE_GRIT_DIRT = (EdGroundBlock)(new EdGroundBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.EARTH, MaterialColor.DIRT).hardnessAndResistance(0.5f, 3f).sound(SoundType.GROUND).harvestTool(ToolType.SHOVEL) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "dense_grit_dirt_block")); + )).setRegistryName(new ResourceLocation(MODID, "dense_grit_dirt_block")); // ------------------------------------------------------------------------------------------------------------------- public static final EdLadderBlock METAL_RUNG_LADDER = (EdLadderBlock)(new EdLadderBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1.0f, 25f).sound(SoundType.METAL).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "metal_rung_ladder")); + )).setRegistryName(new ResourceLocation(MODID, "metal_rung_ladder")); public static final EdLadderBlock METAL_RUNG_STEPS = (EdLadderBlock)(new EdLadderBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1.0f, 25f).sound(SoundType.METAL).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "metal_rung_steps")); + )).setRegistryName(new ResourceLocation(MODID, "metal_rung_steps")); public static final EdLadderBlock TREATED_WOOD_LADDER = (EdLadderBlock)(new EdLadderBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1.0f, 25f).sound(SoundType.WOOD).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_ladder")); + )).setRegistryName(new ResourceLocation(MODID, "treated_wood_ladder")); public static final EdHatchBlock IRON_HATCH = (EdHatchBlock)(new EdHatchBlock( DecorBlock.CFG_LOOK_PLACEMENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 2000f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(0.5,1,0, 15.5,3,14), Auxiliaries.getPixeledAABB(0.5,1,0, 15.5,14.,2) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "iron_hatch")); + )).setRegistryName(new ResourceLocation(MODID, "iron_hatch")); // ------------------------------------------------------------------------------------------------------------------- public static final DecorBlock.Normal OLD_INDUSTRIAL_PLANKS = (DecorBlock.Normal)(new DecorBlock.Normal( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1.5f, 8f).sound(SoundType.WOOD) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "old_industrial_wood_planks")); + )).setRegistryName(new ResourceLocation(MODID, "old_industrial_wood_planks")); public static final EdSlabBlock OLD_INDUSTRIAL_SLAB = (EdSlabBlock)(new EdSlabBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1.5f, 8f).sound(SoundType.WOOD) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "old_industrial_wood_slab")); + )).setRegistryName(new ResourceLocation(MODID, "old_industrial_wood_slab")); public static final EdStairsBlock OLD_INDUSTRIAL_STAIRS = (EdStairsBlock)(new EdStairsBlock( DecorBlock.CFG_DEFAULT, OLD_INDUSTRIAL_PLANKS.getDefaultState(), Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1.5f, 8f).sound(SoundType.WOOD) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "old_industrial_wood_stairs")); + )).setRegistryName(new ResourceLocation(MODID, "old_industrial_wood_stairs")); public static final EdSlabSliceBlock OLD_INDUSTRIAL_SLABSLICE = (EdSlabSliceBlock)(new EdSlabSliceBlock( DecorBlock.CFG_CUTOUT, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1.5f, 8f).sound(SoundType.WOOD).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "old_industrial_wood_slabslice")); + )).setRegistryName(new ResourceLocation(MODID, "old_industrial_wood_slabslice")); public static final EdDoorBlock OLD_INDUSTRIAL_WOOD_DOOR = (EdDoorBlock)(new EdDoorBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1.5f, 12f).sound(SoundType.WOOD).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "old_industrial_wood_door")); + )).setRegistryName(new ResourceLocation(MODID, "old_industrial_wood_door")); // ------------------------------------------------------------------------------------------------------------------- @@ -320,7 +331,7 @@ public class ModContent DecorBlock.CFG_CUTOUT, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(1,0,1, 15,15.9,15) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_table")); + )).setRegistryName(new ResourceLocation(MODID, "treated_wood_table")); public static final EdChair.ChairBlock TREATED_WOOD_STOOL = (EdChair.ChairBlock)(new EdChair.ChairBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_LOOK_PLACEMENT, @@ -331,7 +342,7 @@ public class ModContent Auxiliaries.getPixeledAABB(4,0,7, 12,1,9), Auxiliaries.getPixeledAABB(7,0,4, 9,1,12), } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_stool")); + )).setRegistryName(new ResourceLocation(MODID, "treated_wood_stool")); public static final DecorBlock.WaterLoggable TREATED_WOOD_SIDE_TABLE = (DecorBlock.WaterLoggable)(new DecorBlock.WaterLoggable( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_LOOK_PLACEMENT, @@ -347,19 +358,19 @@ public class ModContent Auxiliaries.getPixeledAABB( 2, 0, 7, 14, 1, 9), Auxiliaries.getPixeledAABB( 7, 0, 2, 9, 1,14) } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_side_table")); + )).setRegistryName(new ResourceLocation(MODID, "treated_wood_side_table")); public static final DecorBlock.DirectedWaterLoggable TREATED_WOOD_WINDOWSILL = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_AI_PASSABLE, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(0.5,15,10.5, 15.5,16,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_windowsill")); + )).setRegistryName(new ResourceLocation(MODID, "treated_wood_windowsill")); public static final DecorBlock.DirectedWaterLoggable TREATED_WOOD_BROAD_WINDOWSILL = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_FACING_PLACEMENT, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(0,14.5,4, 16,16,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_broad_windowsill")); + )).setRegistryName(new ResourceLocation(MODID, "treated_wood_broad_windowsill")); // ------------------------------------------------------------------------------------------------------------------- @@ -367,13 +378,13 @@ public class ModContent DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT|DecorBlock.CFG_AI_PASSABLE, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).setLightLevel((state)->15).notSolid(), Auxiliaries.getPixeledAABB(5.2,5.2,0, 10.8,10.8,0.3) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "iron_inset_light")); + )).setRegistryName(new ResourceLocation(MODID, "iron_inset_light")); public static final DecorBlock.DirectedWaterLoggable FLOOR_EDGE_LIGHT_IRON = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).setLightLevel((state)->15).notSolid(), Auxiliaries.getPixeledAABB(5,0,0, 11,2,0.5) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "iron_floor_edge_light")); + )).setRegistryName(new ResourceLocation(MODID, "iron_floor_edge_light")); public static final DecorBlock.DirectedWaterLoggable CEILING_EDGE_LIGHT_IRON = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, @@ -384,7 +395,7 @@ public class ModContent Auxiliaries.getPixeledAABB( 0,14.0,0, 1,16,2.0), Auxiliaries.getPixeledAABB(15,14.0,0, 16,16,2.0), } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "iron_ceiling_edge_light")); + )).setRegistryName(new ResourceLocation(MODID, "iron_ceiling_edge_light")); public static final DecorBlock.DirectedWaterLoggable BULB_LIGHT_IRON = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT|DecorBlock.CFG_AI_PASSABLE, @@ -393,7 +404,7 @@ public class ModContent Auxiliaries.getPixeledAABB(6.5,6.5,1, 9.5,9.5,4), Auxiliaries.getPixeledAABB(6.0,6.0,0, 10.0,10.0,1.0) } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "iron_bulb_light")); + )).setRegistryName(new ResourceLocation(MODID, "iron_bulb_light")); // ------------------------------------------------------------------------------------------------------------------- @@ -401,13 +412,13 @@ public class ModContent DecorBlock.CFG_CUTOUT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(0,0,0, 16,16,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_table")); + )).setRegistryName(new ResourceLocation(MODID, "steel_table")); public static final EdFloorGratingBlock STEEL_FLOOR_GRATING = (EdFloorGratingBlock)(new EdFloorGratingBlock( DecorBlock.CFG_CUTOUT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(0,14,0, 16,15.5,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_floor_grating")); + )).setRegistryName(new ResourceLocation(MODID, "steel_floor_grating")); // ------------------------------------------------------------------------------------------------------------------- @@ -415,13 +426,13 @@ public class ModContent DecorBlock.CFG_LOOK_PLACEMENT, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.GLASS).notSolid(), Auxiliaries.getPixeledAABB(0,0,7, 16,16,9) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_window")); + )).setRegistryName(new ResourceLocation(MODID, "treated_wood_window")); public static final EdWindowBlock STEEL_FRAMED_WINDOW = (EdWindowBlock)(new EdWindowBlock( DecorBlock.CFG_LOOK_PLACEMENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.GLASS).notSolid(), Auxiliaries.getPixeledAABB(0,0,7.5, 16,16,8.5) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_framed_window")); + )).setRegistryName(new ResourceLocation(MODID, "steel_framed_window")); // ------------------------------------------------------------------------------------------------------------------- @@ -429,49 +440,49 @@ public class ModContent DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_FLIP_PLACEMENT_IF_SAME, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(5.8,5.8,0, 10.2,10.2,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_pole")); + )).setRegistryName(new ResourceLocation(MODID, "treated_wood_pole")); public static final EdStraightPoleBlock TREATED_WOOD_POLE_HEAD = (EdStraightPoleBlock)(new EdStraightPoleBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_FLIP_PLACEMENT_IF_SAME, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(5.8,5.8,0, 10.2,10.2,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_pole_head")); + )).setRegistryName(new ResourceLocation(MODID, "treated_wood_pole_head")); public static final EdStraightPoleBlock TREATED_WOOD_POLE_SUPPORT = (EdStraightPoleBlock)(new EdStraightPoleBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_FLIP_PLACEMENT_IF_SAME, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(2f, 15f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(5.8,5.8,0, 10.2,10.2,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "treated_wood_pole_support")); + )).setRegistryName(new ResourceLocation(MODID, "treated_wood_pole_support")); public static final EdStraightPoleBlock THIN_STEEL_POLE = (EdStraightPoleBlock)(new EdStraightPoleBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(6,6,0, 10,10,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "thin_steel_pole")); + )).setRegistryName(new ResourceLocation(MODID, "thin_steel_pole")); public static final EdStraightPoleBlock THIN_STEEL_POLE_HEAD = (EdStraightPoleBlock)(new EdStraightPoleBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_FLIP_PLACEMENT_IF_SAME, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(6,6,0, 10,10,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "thin_steel_pole_head")); + )).setRegistryName(new ResourceLocation(MODID, "thin_steel_pole_head")); public static final EdStraightPoleBlock THICK_STEEL_POLE = (EdStraightPoleBlock)(new EdStraightPoleBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(5,5,0, 11,11,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "thick_steel_pole")); + )).setRegistryName(new ResourceLocation(MODID, "thick_steel_pole")); public static final EdStraightPoleBlock THICK_STEEL_POLE_HEAD = (EdStraightPoleBlock)(new EdStraightPoleBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_FLIP_PLACEMENT_IF_SAME, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(5,5,0, 11,11,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "thick_steel_pole_head")); + )).setRegistryName(new ResourceLocation(MODID, "thick_steel_pole_head")); public static final EdHorizontalSupportBlock STEEL_DOUBLE_T_SUPPORT = (EdHorizontalSupportBlock)(new EdHorizontalSupportBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_LOOK_PLACEMENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(5,11,0, 11,16,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_double_t_support")); + )).setRegistryName(new ResourceLocation(MODID, "steel_double_t_support")); // ------------------------------------------------------------------------------------------------------------------- @@ -479,37 +490,85 @@ public class ModContent DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1000f).sound(SoundType.WOOD).setLightLevel((state)->1).notSolid(), Auxiliaries.getPixeledAABB(0,0,15.6, 16,16,16.0) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_decor")); + )).setRegistryName(new ResourceLocation(MODID, "sign_decor")); public static final DecorBlock.DirectedWaterLoggable SIGN_HOTWIRE = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_hotwire")); + )).setRegistryName(new ResourceLocation(MODID, "sign_hotwire")); public static final DecorBlock.DirectedWaterLoggable SIGN_DANGER = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_danger")); + )).setRegistryName(new ResourceLocation(MODID, "sign_danger")); public static final DecorBlock.DirectedWaterLoggable SIGN_DEFENSE = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_defense")); + )).setRegistryName(new ResourceLocation(MODID, "sign_defense")); public static final DecorBlock.DirectedWaterLoggable SIGN_FACTORY_AREA = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_factoryarea")); + )).setRegistryName(new ResourceLocation(MODID, "sign_factoryarea")); public static final DecorBlock.DirectedWaterLoggable SIGN_EXIT = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), Auxiliaries.getPixeledAABB(3,7,15.6, 13,13,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "sign_exit")); + )).setRegistryName(new ResourceLocation(MODID, "sign_exit")); + + public static final DecorBlock.DirectedWaterLoggable SIGN_RADIOACTIVE = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( + DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), + Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) + )).setRegistryName(new ResourceLocation(MODID, "sign_radioactive")); + + public static final DecorBlock.DirectedWaterLoggable SIGN_LASER = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( + DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), + Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) + )).setRegistryName(new ResourceLocation(MODID, "sign_laser")); + + public static final DecorBlock.DirectedWaterLoggable SIGN_CAUTION = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( + DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), + Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) + )).setRegistryName(new ResourceLocation(MODID, "sign_caution")); + + public static final DecorBlock.DirectedWaterLoggable SIGN_MAGIC_HAZARD = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( + DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), + Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) + )).setRegistryName(new ResourceLocation(MODID, "sign_magichazard")); + + public static final DecorBlock.DirectedWaterLoggable SIGN_FIRE_HAZARD = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( + DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), + Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) + )).setRegistryName(new ResourceLocation(MODID, "sign_firehazard")); + + public static final DecorBlock.DirectedWaterLoggable SIGN_HOT_SURFACE = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( + DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), + Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) + )).setRegistryName(new ResourceLocation(MODID, "sign_hotsurface")); + + public static final DecorBlock.DirectedWaterLoggable SIGN_MAGNETIC_FIELD = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( + DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), + Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) + )).setRegistryName(new ResourceLocation(MODID, "sign_magneticfield")); + + public static final DecorBlock.DirectedWaterLoggable SIGN_FROST_WARNING = (DecorBlock.DirectedWaterLoggable)(new DecorBlock.DirectedWaterLoggable( + DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_AI_PASSABLE, + Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 1f).sound(SoundType.WOOD).notSolid(), + Auxiliaries.getPixeledAABB(2,2,15.6, 14,14,16) + )).setRegistryName(new ResourceLocation(MODID, "sign_frost")); // ------------------------------------------------------------------------------------------------------------------- @@ -520,7 +579,7 @@ public class ModContent Auxiliaries.getPixeledAABB(0,15,0, 16,16,16), Auxiliaries.getPixeledAABB(1, 0,1, 15,16,15) } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "metal_crafting_table")); + )).setRegistryName(new ResourceLocation(MODID, "metal_crafting_table")); public static final FurnaceBlock SMALL_LAB_FURNACE = (FurnaceBlock)(new FurnaceBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT, @@ -529,7 +588,7 @@ public class ModContent Auxiliaries.getPixeledAABB(1,0,1, 15, 1,15), Auxiliaries.getPixeledAABB(0,1,1, 16,16,16), } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "small_lab_furnace")); + )).setRegistryName(new ResourceLocation(MODID, "small_lab_furnace")); public static final EdElectricalFurnace.ElectricalFurnaceBlock SMALL_ELECTRICAL_FURNACE = (EdElectricalFurnace.ElectricalFurnaceBlock)(new EdElectricalFurnace.ElectricalFurnaceBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT, @@ -541,13 +600,13 @@ public class ModContent Auxiliaries.getPixeledAABB(3,13,0, 13,14,16), Auxiliaries.getPixeledAABB(4,14,0, 12,16,16), } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "small_electrical_furnace")); + )).setRegistryName(new ResourceLocation(MODID, "small_electrical_furnace")); public static final EdDropper.DropperBlock FACTORY_DROPPER = (EdDropper.DropperBlock)(new EdDropper.DropperBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(0,0,1, 16,16,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "factory_dropper")); + )).setRegistryName(new ResourceLocation(MODID, "factory_dropper")); public static final EdPlacer.PlacerBlock FACTORY_PLACER = (EdPlacer.PlacerBlock)(new EdPlacer.PlacerBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_FLIP_PLACEMENT_SHIFTCLICK|DecorBlock.CFG_OPPOSITE_PLACEMENT, @@ -557,7 +616,7 @@ public class ModContent Auxiliaries.getPixeledAABB( 0,0,0, 1,16, 2), Auxiliaries.getPixeledAABB(15,0,0,16,16, 2) } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "factory_placer")); + )).setRegistryName(new ResourceLocation(MODID, "factory_placer")); public static final EdBreaker.BreakerBlock SMALL_BLOCK_BREAKER = (EdBreaker.BreakerBlock)(new EdBreaker.BreakerBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT|DecorBlock.CFG_FLIP_PLACEMENT_SHIFTCLICK, @@ -570,7 +629,7 @@ public class ModContent Auxiliaries.getPixeledAABB(15,0,0, 16, 5, 4), Auxiliaries.getPixeledAABB(15,0,4, 16,12,16) } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "small_block_breaker")); + )).setRegistryName(new ResourceLocation(MODID, "small_block_breaker")); public static final EdHopper.HopperBlock FACTORY_HOPPER = (EdHopper.HopperBlock)(new EdHopper.HopperBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT, @@ -616,19 +675,25 @@ public class ModContent VoxelShapes.fullCube() )); } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "factory_hopper")); + )).setRegistryName(new ResourceLocation(MODID, "factory_hopper")); public static final EdWasteIncinerator.WasteIncineratorBlock SMALL_WASTE_INCINERATOR = (EdWasteIncinerator.WasteIncineratorBlock)(new EdWasteIncinerator.WasteIncineratorBlock( DecorBlock.CFG_DEFAULT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL), Auxiliaries.getPixeledAABB(0,0,0, 16,16,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "small_waste_incinerator")); + )).setRegistryName(new ResourceLocation(MODID, "small_waste_incinerator")); public static final EdMineralSmelter.MineralSmelterBlock SMALL_MINERAL_SMELTER = (EdMineralSmelter.MineralSmelterBlock)(new EdMineralSmelter.MineralSmelterBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_LOOK_PLACEMENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(1.1,0,1.1, 14.9,16,14.9) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "small_mineral_smelter")); + )).setRegistryName(new ResourceLocation(MODID, "small_mineral_smelter")); + + public static final EdFreezer.FreezerBlock SMALL_FREEZER = (EdFreezer.FreezerBlock)(new EdFreezer.FreezerBlock( + DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_LOOK_PLACEMENT, + Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), + Auxiliaries.getPixeledAABB(1.1,0,1.1, 14.9,16,14.9) + )).setRegistryName(new ResourceLocation(MODID, "small_freezer")); public static final EdSolarPanel.SolarPanelBlock SMALL_SOLAR_PANEL = (EdSolarPanel.SolarPanelBlock)(new EdSolarPanel.SolarPanelBlock( DecorBlock.CFG_CUTOUT, @@ -637,7 +702,7 @@ public class ModContent Auxiliaries.getPixeledAABB(0,0,0, 16,2,16), Auxiliaries.getPixeledAABB(6,1.5,3, 10,10.5,13), } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "small_solar_panel")); + )).setRegistryName(new ResourceLocation(MODID, "small_solar_panel")); public static final EdMilker.MilkerBlock SMALL_MILKING_MACHINE = (EdMilker.MilkerBlock)(new EdMilker.MilkerBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_LOOK_PLACEMENT, @@ -649,7 +714,7 @@ public class ModContent Auxiliaries.getPixeledAABB( 0, 1,1, 1,14,11), Auxiliaries.getPixeledAABB(15, 1,1, 16,14,11) } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "small_milking_machine")); + )).setRegistryName(new ResourceLocation(MODID, "small_milking_machine")); public static final EdTreeCutter.TreeCutterBlock SMALL_TREE_CUTTER = (EdTreeCutter.TreeCutterBlock)(new EdTreeCutter.TreeCutterBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_FLIP_PLACEMENT_SHIFTCLICK, @@ -662,7 +727,7 @@ public class ModContent Auxiliaries.getPixeledAABB( 0,0,13, 16,8,16), Auxiliaries.getPixeledAABB( 5,6,12, 16,8,13), } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "small_tree_cutter")); + )).setRegistryName(new ResourceLocation(MODID, "small_tree_cutter")); public static final EdPipeValve.PipeValveBlock STRAIGHT_CHECK_VALVE = (EdPipeValve.PipeValveBlock)(new EdPipeValve.PipeValveBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT|DecorBlock.CFG_FLIP_PLACEMENT_SHIFTCLICK, @@ -674,7 +739,7 @@ public class ModContent Auxiliaries.getPixeledAABB(3,3, 5, 13,13,11), Auxiliaries.getPixeledAABB(4,4, 2, 12,12,14), } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "straight_pipe_valve")); + )).setRegistryName(new ResourceLocation(MODID, "straight_pipe_valve")); public static final EdPipeValve.PipeValveBlock STRAIGHT_REDSTONE_VALVE = (EdPipeValve.PipeValveBlock)(new EdPipeValve.PipeValveBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT, @@ -686,7 +751,7 @@ public class ModContent Auxiliaries.getPixeledAABB(3,3, 5, 13,13,11), Auxiliaries.getPixeledAABB(4,4, 2, 12,12,14), } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "straight_pipe_valve_redstone")); + )).setRegistryName(new ResourceLocation(MODID, "straight_pipe_valve_redstone")); public static final EdPipeValve.PipeValveBlock STRAIGHT_REDSTONE_ANALOG_VALVE = (EdPipeValve.PipeValveBlock)(new EdPipeValve.PipeValveBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_FACING_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT, @@ -698,13 +763,13 @@ public class ModContent Auxiliaries.getPixeledAABB(3,3, 5, 13,13,11), Auxiliaries.getPixeledAABB(4,4, 2, 12,12,14), } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "straight_pipe_valve_redstone_analog")); + )).setRegistryName(new ResourceLocation(MODID, "straight_pipe_valve_redstone_analog")); @Deprecated // remove in 1.17/1.16.3, not needed by anyone public static final DecorBlock.Normal PASSIVE_FLUID_ACCUMULATOR = (DecorBlock.Normal)(new DecorBlock.Normal( DecorBlock.CFG_EXPERIMENTAL, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "passive_fluid_accumulator")); + )).setRegistryName(new ResourceLocation(MODID, "passive_fluid_accumulator")); public static final EdFluidBarrel.FluidBarrelBlock FLUID_BARREL = (EdFluidBarrel.FluidBarrelBlock)(new EdFluidBarrel.FluidBarrelBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT, @@ -716,7 +781,7 @@ public class ModContent Auxiliaries.getPixeledAABB(1,14,0, 15,15,16), Auxiliaries.getPixeledAABB(2,15,0, 14,16,16), } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "fluid_barrel")); + )).setRegistryName(new ResourceLocation(MODID, "fluid_barrel")); public static final EdFluidFunnel.FluidFunnelBlock SMALL_FLUID_FUNNEL = (EdFluidFunnel.FluidFunnelBlock)(new EdFluidFunnel.FluidFunnelBlock( DecorBlock.CFG_CUTOUT, @@ -726,45 +791,45 @@ public class ModContent Auxiliaries.getPixeledAABB(1,14,1, 15,15,15), Auxiliaries.getPixeledAABB(0,15,0, 16,16,16) } - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "small_fluid_funnel")); + )).setRegistryName(new ResourceLocation(MODID, "small_fluid_funnel")); public static final EdLabeledCrate.LabeledCrateBlock LABELED_CRATE = (EdLabeledCrate.LabeledCrateBlock)(new EdLabeledCrate.LabeledCrateBlock( DecorBlock.CFG_HORIZIONTAL|DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_OPPOSITE_PLACEMENT, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(0.5f, 128f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(0,0,0, 16,16,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "labeled_crate")); + )).setRegistryName(new ResourceLocation(MODID, "labeled_crate")); // ------------------------------------------------------------------------------------------------------------------- public static final EdSlabSliceBlock HALFSLAB_TREATEDWOOD = (EdSlabSliceBlock)(new EdSlabSliceBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HARD_IE_DEPENDENT, Block.Properties.create(Material.WOOD, MaterialColor.WOOD).hardnessAndResistance(1f, 4f).sound(SoundType.WOOD).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_treated_wood")); + )).setRegistryName(new ResourceLocation(MODID, "halfslab_treated_wood")); public static final EdSlabSliceBlock HALFSLAB_SHEETMETALIRON = (EdSlabSliceBlock)(new EdSlabSliceBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HARD_IE_DEPENDENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_sheetmetal_iron")); + )).setRegistryName(new ResourceLocation(MODID, "halfslab_sheetmetal_iron")); public static final EdSlabSliceBlock HALFSLAB_SHEETMETALSTEEL = (EdSlabSliceBlock)(new EdSlabSliceBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HARD_IE_DEPENDENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_sheetmetal_steel")); + )).setRegistryName(new ResourceLocation(MODID, "halfslab_sheetmetal_steel")); public static final EdSlabSliceBlock HALFSLAB_SHEETMETALCOPPER = (EdSlabSliceBlock)(new EdSlabSliceBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HARD_IE_DEPENDENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_sheetmetal_copper")); + )).setRegistryName(new ResourceLocation(MODID, "halfslab_sheetmetal_copper")); public static final EdSlabSliceBlock HALFSLAB_SHEETMETALGOLD = (EdSlabSliceBlock)(new EdSlabSliceBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HARD_IE_DEPENDENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_sheetmetal_gold")); + )).setRegistryName(new ResourceLocation(MODID, "halfslab_sheetmetal_gold")); public static final EdSlabSliceBlock HALFSLAB_SHEETMETALALUMINIUM = (EdSlabSliceBlock)(new EdSlabSliceBlock( DecorBlock.CFG_CUTOUT|DecorBlock.CFG_HARD_IE_DEPENDENT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(1f, 10f).sound(SoundType.METAL).notSolid() - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "halfslab_sheetmetal_aluminum")); + )).setRegistryName(new ResourceLocation(MODID, "halfslab_sheetmetal_aluminum")); // ------------------------------------------------------------------------------------------------------------------- @@ -772,13 +837,13 @@ public class ModContent DecorBlock.CFG_CUTOUT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), 1.5, 16, 0.25, 0, 16, 16 - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_mesh_fence")); + )).setRegistryName(new ResourceLocation(MODID, "steel_mesh_fence")); public static final EdDoubleGateBlock STEEL_MESH_FENCE_GATE = (EdDoubleGateBlock)(new EdDoubleGateBlock( DecorBlock.CFG_CUTOUT, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(2f, 15f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(0,0,6.5, 16,16,9.5) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "steel_mesh_fence_gate")); + )).setRegistryName(new ResourceLocation(MODID, "steel_mesh_fence_gate")); // ------------------------------------------------------------------------------------------------------------------- @@ -786,7 +851,7 @@ public class ModContent DecorBlock.CFG_LOOK_PLACEMENT|DecorBlock.CFG_FLIP_PLACEMENT_SHIFTCLICK, Block.Properties.create(Material.IRON, MaterialColor.IRON).hardnessAndResistance(0f, 32000f).sound(SoundType.METAL).notSolid(), Auxiliaries.getPixeledAABB(0,0,0, 16,16,16) - )).setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "test_block")); + )).setRegistryName(new ResourceLocation(MODID, "test_block")); // ------------------------------------------------------------------------------------------------------------------- @@ -803,6 +868,7 @@ public class ModContent SMALL_SOLAR_PANEL, SMALL_WASTE_INCINERATOR, SMALL_MINERAL_SMELTER, + SMALL_FREEZER, SMALL_MILKING_MACHINE, FLUID_BARREL, STRAIGHT_CHECK_VALVE, @@ -852,6 +918,7 @@ public class ModContent DARK_CERAMIC_SHINGLE_ROOF_BLOCK, DARK_CERAMIC_SHINGLE_ROOF_SLAB, HALFSLAB_DARK_CERAMIC_SHINGLE_ROOF, + DARK_CERAMIC_SHINGLE_ROOF_CHIMNEY, METAL_RUNG_LADDER, METAL_RUNG_STEPS, TREATED_WOOD_LADDER, @@ -889,6 +956,14 @@ public class ModContent SIGN_DEFENSE, SIGN_FACTORY_AREA, SIGN_EXIT, + SIGN_RADIOACTIVE, + SIGN_LASER, + SIGN_CAUTION, + SIGN_MAGIC_HAZARD, + SIGN_FIRE_HAZARD, + SIGN_HOT_SURFACE, + SIGN_MAGNETIC_FIELD, + SIGN_FROST_WARNING, SIGN_MODLOGO, }; @@ -903,87 +978,92 @@ public class ModContent public static final TileEntityType TET_CRAFTING_TABLE = TileEntityType.Builder .create(EdCraftingTable.CraftingTableTileEntity::new, CRAFTING_TABLE) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_treated_wood_crafting_table"); + .setRegistryName(MODID, "te_treated_wood_crafting_table"); public static final TileEntityType TET_LABELED_CRATE = TileEntityType.Builder .create(EdLabeledCrate.LabeledCrateTileEntity::new, LABELED_CRATE) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_labeled_crate"); + .setRegistryName(MODID, "te_labeled_crate"); public static final TileEntityType TET_SMALL_LAB_FURNACE = TileEntityType.Builder .create(FurnaceTileEntity::new, SMALL_LAB_FURNACE) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_small_lab_furnace"); + .setRegistryName(MODID, "te_small_lab_furnace"); public static final TileEntityType TET_SMALL_ELECTRICAL_FURNACE = TileEntityType.Builder .create(EdElectricalFurnace.ElectricalFurnaceTileEntity::new, SMALL_ELECTRICAL_FURNACE) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_small_electrical_furnace"); + .setRegistryName(MODID, "te_small_electrical_furnace"); public static final TileEntityType TET_FACTORY_DROPPER = TileEntityType.Builder .create(EdDropper.DropperTileEntity::new, FACTORY_DROPPER) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_factory_dropper"); + .setRegistryName(MODID, "te_factory_dropper"); public static final TileEntityType TET_FACTORY_PLACER = TileEntityType.Builder .create(EdPlacer.PlacerTileEntity::new, FACTORY_PLACER) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_factory_placer"); + .setRegistryName(MODID, "te_factory_placer"); public static final TileEntityType TET_SMALL_BLOCK_BREAKER = TileEntityType.Builder .create(EdBreaker.BreakerTileEntity::new, SMALL_BLOCK_BREAKER) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_small_block_breaker"); + .setRegistryName(MODID, "te_small_block_breaker"); public static final TileEntityType TET_FACTORY_HOPPER = TileEntityType.Builder .create(EdHopper.HopperTileEntity::new, FACTORY_HOPPER) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_factory_hopper"); + .setRegistryName(MODID, "te_factory_hopper"); public static final TileEntityType TET_WASTE_INCINERATOR = TileEntityType.Builder .create(EdWasteIncinerator.WasteIncineratorTileEntity::new, SMALL_WASTE_INCINERATOR) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_small_waste_incinerator"); + .setRegistryName(MODID, "te_small_waste_incinerator"); public static final TileEntityType TET_STRAIGHT_PIPE_VALVE = TileEntityType.Builder .create(EdPipeValve.PipeValveTileEntity::new, STRAIGHT_CHECK_VALVE, STRAIGHT_REDSTONE_VALVE, STRAIGHT_REDSTONE_ANALOG_VALVE) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_pipe_valve"); + .setRegistryName(MODID, "te_pipe_valve"); public static final TileEntityType TET_FLUID_BARREL = TileEntityType.Builder .create(EdFluidBarrel.FluidBarrelTileEntity::new, FLUID_BARREL) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_fluid_barrel"); + .setRegistryName(MODID, "te_fluid_barrel"); public static final TileEntityType TET_SMALL_FLUID_FUNNEL = TileEntityType.Builder .create(EdFluidFunnel.FluidFunnelTileEntity::new, SMALL_FLUID_FUNNEL) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_small_fluid_funnel"); + .setRegistryName(MODID, "te_small_fluid_funnel"); public static final TileEntityType TET_MINERAL_SMELTER = TileEntityType.Builder .create(EdMineralSmelter.MineralSmelterTileEntity::new, SMALL_MINERAL_SMELTER) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_small_mineral_smelter"); + .setRegistryName(MODID, "te_small_mineral_smelter"); + + public static final TileEntityType TET_FREEZER = TileEntityType.Builder + .create(EdFreezer.FreezerTileEntity::new, SMALL_FREEZER) + .build(null) + .setRegistryName(MODID, "te_small_freezer"); public static final TileEntityType TET_SMALL_SOLAR_PANEL = TileEntityType.Builder .create(EdSolarPanel.SolarPanelTileEntity::new, SMALL_SOLAR_PANEL) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_small_solar_panel"); + .setRegistryName(MODID, "te_small_solar_panel"); public static final TileEntityType TET_SMALL_MILKING_MACHINE = TileEntityType.Builder .create(EdMilker.MilkerTileEntity::new, SMALL_MILKING_MACHINE) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_small_milking_machine"); + .setRegistryName(MODID, "te_small_milking_machine"); public static final TileEntityType TET_SMALL_TREE_CUTTER = TileEntityType.Builder .create(EdTreeCutter.TreeCutterTileEntity::new, SMALL_TREE_CUTTER) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_small_tree_cutter"); + .setRegistryName(MODID, "te_small_tree_cutter"); public static final TileEntityType TET_TEST_BLOCK = TileEntityType.Builder .create(EdTestBlock.TestTileEntity::new, TEST_BLOCK) .build(null) - .setRegistryName(ModEngineersDecor.MODID, "te_test_block"); + .setRegistryName(MODID, "te_test_block"); private static final TileEntityType tile_entity_types[] = { TET_CRAFTING_TABLE, @@ -997,6 +1077,7 @@ public class ModContent TET_SMALL_TREE_CUTTER, TET_WASTE_INCINERATOR, TET_MINERAL_SMELTER, + TET_FREEZER, TET_SMALL_SOLAR_PANEL, TET_SMALL_MILKING_MACHINE, TET_STRAIGHT_PIPE_VALVE, @@ -1005,6 +1086,19 @@ public class ModContent TET_TEST_BLOCK }; + //-------------------------------------------------------------------------------------------------------------------- + // Items + //-------------------------------------------------------------------------------------------------------------------- + + private static Item.Properties default_item_properties() + { return (new Item.Properties()).group(ModEngineersDecor.ITEMGROUP); } + + public static final EdItem METAL_BAR_ITEM = (EdItem)((new EdItem(default_item_properties()).setRegistryName(MODID, "metal_bar"))); + + private static final EdItem modItems[] = { + METAL_BAR_ITEM + }; + //-------------------------------------------------------------------------------------------------------------------- // Entities bound exclusively to the blocks above //-------------------------------------------------------------------------------------------------------------------- @@ -1016,8 +1110,8 @@ public class ModContent .immuneToFire().size(1e-3f, 1e-3f).disableSerialization() .setShouldReceiveVelocityUpdates(false).setUpdateInterval(4) .setCustomClientFactory(EdChair.EntityChair::customClientFactory) - .build(new ResourceLocation(ModEngineersDecor.MODID, "et_chair").toString()) - .setRegistryName(new ResourceLocation(ModEngineersDecor.MODID, "et_chair")) + .build(new ResourceLocation(MODID, "et_chair").toString()) + .setRegistryName(new ResourceLocation(MODID, "et_chair")) ); private static final EntityType entity_types[] = { @@ -1039,21 +1133,21 @@ public class ModContent static { CT_TREATED_WOOD_CRAFTING_TABLE = (new ContainerType(EdCraftingTable.CraftingTableContainer::new)); - CT_TREATED_WOOD_CRAFTING_TABLE.setRegistryName(ModEngineersDecor.MODID,"ct_treated_wood_crafting_table"); + CT_TREATED_WOOD_CRAFTING_TABLE.setRegistryName(MODID,"ct_treated_wood_crafting_table"); CT_FACTORY_DROPPER = (new ContainerType(EdDropper.DropperContainer::new)); - CT_FACTORY_DROPPER.setRegistryName(ModEngineersDecor.MODID,"ct_factory_dropper"); + CT_FACTORY_DROPPER.setRegistryName(MODID,"ct_factory_dropper"); CT_FACTORY_PLACER = (new ContainerType(EdPlacer.PlacerContainer::new)); - CT_FACTORY_PLACER.setRegistryName(ModEngineersDecor.MODID,"ct_factory_placer"); + CT_FACTORY_PLACER.setRegistryName(MODID,"ct_factory_placer"); CT_FACTORY_HOPPER = (new ContainerType(EdHopper.HopperContainer::new)); - CT_FACTORY_HOPPER.setRegistryName(ModEngineersDecor.MODID,"ct_factory_hopper"); + CT_FACTORY_HOPPER.setRegistryName(MODID,"ct_factory_hopper"); CT_SMALL_LAB_FURNACE = (new ContainerType(FurnaceContainer::new)); - CT_SMALL_LAB_FURNACE.setRegistryName(ModEngineersDecor.MODID,"ct_small_lab_furnace"); + CT_SMALL_LAB_FURNACE.setRegistryName(MODID,"ct_small_lab_furnace"); CT_SMALL_ELECTRICAL_FURNACE = (new ContainerType(EdElectricalFurnace.ElectricalFurnaceContainer::new)); - CT_SMALL_ELECTRICAL_FURNACE.setRegistryName(ModEngineersDecor.MODID,"ct_small_electrical_furnace"); + CT_SMALL_ELECTRICAL_FURNACE.setRegistryName(MODID,"ct_small_electrical_furnace"); CT_WASTE_INCINERATOR = (new ContainerType(EdWasteIncinerator.WasteIncineratorContainer::new)); - CT_WASTE_INCINERATOR.setRegistryName(ModEngineersDecor.MODID,"ct_small_waste_incinerator"); + CT_WASTE_INCINERATOR.setRegistryName(MODID,"ct_small_waste_incinerator"); CT_LABELED_CRATE = (new ContainerType(EdLabeledCrate.LabeledCrateContainer::new)); - CT_LABELED_CRATE.setRegistryName(ModEngineersDecor.MODID,"ct_labeled_crate"); + CT_LABELED_CRATE.setRegistryName(MODID,"ct_labeled_crate"); } // DON'T FORGET TO REGISTER THE GUI in registerContainerGuis(), no list/map format found yet for that. @@ -1127,6 +1221,9 @@ public class ModContent } } + public static final void registerItems(final RegistryEvent.Register event) + { for(Item e:modItems) event.getRegistry().register(e); } + public static final void registerTileEntities(final RegistryEvent.Register> event) { int n_registered = 0; diff --git a/src/main/java/wile/engineersdecor/ModEngineersDecor.java b/src/main/java/wile/engineersdecor/ModEngineersDecor.java index 1718302..f9d7bfd 100644 --- a/src/main/java/wile/engineersdecor/ModEngineersDecor.java +++ b/src/main/java/wile/engineersdecor/ModEngineersDecor.java @@ -103,7 +103,7 @@ public class ModEngineersDecor @SubscribeEvent public static void onItemRegistry(final RegistryEvent.Register event) - { ModContent.registerBlockItems(event); } + { ModContent.registerItems(event); ModContent.registerBlockItems(event); } @SubscribeEvent public static void onTileEntityRegistry(final RegistryEvent.Register> event) diff --git a/src/main/java/wile/engineersdecor/blocks/EdChimneyBlock.java b/src/main/java/wile/engineersdecor/blocks/EdChimneyBlock.java new file mode 100644 index 0000000..e419955 --- /dev/null +++ b/src/main/java/wile/engineersdecor/blocks/EdChimneyBlock.java @@ -0,0 +1,92 @@ +/* + * @file EdChimneyBlock.java + * @author Stefan Wilhelm (wile) + * @copyright (C) 2019 Stefan Wilhelm + * @license MIT (see https://opensource.org/licenses/MIT) + * + * Block type for smoking chimneys. + */ +package wile.engineersdecor.blocks; + +import net.minecraft.block.*; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.state.IntegerProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import javax.annotation.Nullable; +import java.util.Random; + +public class EdChimneyBlock extends DecorBlock.Normal implements IDecorBlock +{ + public static final IntegerProperty POWER = BlockStateProperties.POWER_0_15; + + public EdChimneyBlock(long config, Block.Properties properties, AxisAlignedBB aabb) + { super(config, properties, aabb); } + + public EdChimneyBlock(long config, Block.Properties builder) + { + this(config, builder, new AxisAlignedBB(0,0,0,1,1,1)); + setDefaultState(super.getDefaultState().with(POWER, 0)); // no smoke in JEI + } + + @Override + protected void fillStateContainer(StateContainer.Builder builder) + { super.fillStateContainer(builder); builder.add(POWER); } + + @Override + @Nullable + public BlockState getStateForPlacement(BlockItemUseContext context) + { + int p = context.getWorld().getRedstonePowerFromNeighbors(context.getPos()); + return super.getStateForPlacement(context).with(POWER, p==0 ? 5 : p); + } + + @Override + @SuppressWarnings("deprecation") + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + { world.setBlockState(pos, state.with(POWER, (state.get(POWER)+1) & 0xf), 1|2); return ActionResultType.SUCCESS; } + + @Override + @SuppressWarnings("deprecation") + public void neighborChanged(BlockState state, World world, BlockPos pos, Block block, BlockPos fromPos, boolean unused) + { + int p = world.getRedstonePowerFromNeighbors(pos); + if(p != state.get(POWER)) world.setBlockState(pos, state.with(POWER, p), 2); + } + + @Override + @OnlyIn(Dist.CLIENT) + public void animateTick(BlockState state, World world, BlockPos pos, Random rnd) + { + if(state.getBlock() != this) return; + final int p = state.get(POWER); + if(p==0) return; + int end = 1+rnd.nextInt(10) * p / 15; + for(int i=0; i 0.7 ? ParticleTypes.LARGE_SMOKE : (rv>0.4 ? ParticleTypes.SMOKE : ParticleTypes.CAMPFIRE_COSY_SMOKE)), + 0.5+pos.getX()+(rnd.nextDouble()*0.2), + 0.9+pos.getY()+(rnd.nextDouble()*0.1), + 0.5+pos.getZ()+(rnd.nextDouble()*0.2), + -0.02 + rnd.nextDouble()*0.04, + +0.05 + rnd.nextDouble()*0.1, + -0.02 + rnd.nextDouble()*0.04 + ); + } + } + +} diff --git a/src/main/java/wile/engineersdecor/blocks/EdFreezer.java b/src/main/java/wile/engineersdecor/blocks/EdFreezer.java new file mode 100644 index 0000000..09123ac --- /dev/null +++ b/src/main/java/wile/engineersdecor/blocks/EdFreezer.java @@ -0,0 +1,385 @@ +/* + * @file EdFreezer.java + * @author Stefan Wilhelm (wile) + * @copyright (C) 2019 Stefan Wilhelm + * @license MIT (see https://opensource.org/licenses/MIT) + * + * Small highly insulated stone liquification furnace + * (magmatic phase). + */ +package wile.engineersdecor.blocks; + +import net.minecraftforge.common.util.Constants; +import wile.engineersdecor.ModContent; +import wile.engineersdecor.ModEngineersDecor; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; +import net.minecraft.block.*; +import net.minecraft.tileentity.ITickableTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.item.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.*; +import net.minecraft.util.math.*; +import net.minecraft.state.IntegerProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.fluid.Fluids; +import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; +import net.minecraftforge.fluids.capability.CapabilityFluidHandler; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import wile.engineersdecor.libmc.detail.Fluidics; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.*; + +public class EdFreezer +{ + //-------------------------------------------------------------------------------------------------------------------- + // Block + //-------------------------------------------------------------------------------------------------------------------- + + public static class FreezerBlock extends DecorBlock.Horizontal implements IDecorBlock + { + public static final int PHASE_MAX = 4; + public static final IntegerProperty PHASE = IntegerProperty.create("phase", 0, PHASE_MAX); + + public FreezerBlock(long config, Block.Properties builder, final AxisAlignedBB unrotatedAABB) + { super(config, builder, unrotatedAABB); } + + @Override + protected void fillStateContainer(StateContainer.Builder builder) + { super.fillStateContainer(builder); builder.add(PHASE); } + + @Override + @Nullable + public BlockState getStateForPlacement(BlockItemUseContext context) + { return super.getStateForPlacement(context).with(PHASE, 0); } + + @Override + @SuppressWarnings("deprecation") + public boolean hasComparatorInputOverride(BlockState state) + { return true; } + + @Override + @SuppressWarnings("deprecation") + public int getComparatorInputOverride(BlockState state, World world, BlockPos pos) + { return MathHelper.clamp((state.get(PHASE)*4), 0, 15); } + + @Override + public boolean hasTileEntity(BlockState state) + { return true; } + + @Override + @Nullable + public TileEntity createTileEntity(BlockState state, IBlockReader world) + { return new EdFreezer.FreezerTileEntity(); } + + @Override + public void onBlockPlacedBy(World world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) + {} + + @Override + public boolean hasDynamicDropList() + { return true; } + + @Override + public List dropList(BlockState state, World world, TileEntity te, boolean explosion) + { + final List stacks = new ArrayList(); + if(world.isRemote) return stacks; + if(!(te instanceof FreezerTileEntity)) return stacks; + ((FreezerTileEntity)te).reset_process(); + stacks.add(new ItemStack(this, 1)); + return stacks; + } + + @Override + public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) + { + if(player.isSneaking()) return ActionResultType.PASS; + if(world.isRemote) return ActionResultType.SUCCESS; + FreezerTileEntity te = getTe(world, pos); + if(te==null) return ActionResultType.FAIL; + final ItemStack stack = player.getHeldItem(hand); + boolean dirty = false; + if(Fluidics.manualFluidHandlerInteraction(world, pos, null, player, hand)) { + world.playSound(null, pos, SoundEvents.ITEM_BUCKET_EMPTY, SoundCategory.BLOCKS, 0.5f, 1.4f); + return ActionResultType.SUCCESS; + } + if(stack.getItem()==Items.WATER_BUCKET) { + return ActionResultType.SUCCESS; // would be already handled + } else if(stack.isEmpty()) { + ItemStack ice = te.getIceItem(true); + if(!ice.isEmpty()) { + player.addItemStackToInventory(ice); + world.playSound(null, pos, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.BLOCKS, 0.3f, 1.1f); + } else { + world.playSound(null, pos, SoundEvents.BLOCK_IRON_TRAPDOOR_OPEN, SoundCategory.BLOCKS, 0.2f, 0.02f); + } + return ActionResultType.SUCCESS; + } else { + return ActionResultType.PASS; + } + } + + @Override + @OnlyIn(Dist.CLIENT) + public void animateTick(BlockState state, World world, BlockPos pos, Random rnd) + {} + + @Nullable + private FreezerTileEntity getTe(World world, BlockPos pos) + { final TileEntity te=world.getTileEntity(pos); return (!(te instanceof FreezerTileEntity)) ? (null) : ((FreezerTileEntity)te); } + } + + //-------------------------------------------------------------------------------------------------------------------- + // Tile entity + //-------------------------------------------------------------------------------------------------------------------- + + public static class FreezerTileEntity extends TileEntity implements ITickableTileEntity, IEnergyStorage, ICapabilityProvider + { + public static final int TICK_INTERVAL = 20; + public static final int MAX_FLUID_LEVEL = 2000; + public static final int MAX_ENERGY_BUFFER = 32000; + public static final int MAX_ENERGY_TRANSFER = 8192; + public static final int DEFAULT_ENERGY_CONSUMPTION = 92; + public static final int DEFAULT_COOLDOWN_RATE = 2; + public static final int PHASE_EMPTY = 0; + public static final int PHASE_WATER = 1; + public static final int PHASE_ICE = 2; + public static final int PHASE_PACKEDICE = 3; + public static final int PHASE_BLUEICE = 4; + + private static int energy_consumption = DEFAULT_ENERGY_CONSUMPTION; + private static int cooldown_rate = DEFAULT_COOLDOWN_RATE; + private static int reheat_rate = 1; + private final Fluidics.Tank tank_ = new Fluidics.Tank(2000, fs->fs.getFluid()==Fluids.WATER); + private int tick_timer_; + private int energy_stored_; + private int progress_; + private boolean force_block_update_; + + public static void on_config(int consumption, int cooldown_per_second) + { + energy_consumption = MathHelper.clamp(consumption, 8, 4096); + cooldown_rate = MathHelper.clamp(cooldown_per_second, 1, 5); + reheat_rate = MathHelper.clamp(cooldown_per_second/2, 1, 5); + ModEngineersDecor.logger().info("Config freezer energy consumption:" + energy_consumption + "rf/t, cooldown-rate: " + cooldown_rate + "%/s."); + } + + public FreezerTileEntity() + { this(ModContent.TET_FREEZER); } + + public FreezerTileEntity(TileEntityType te_type) + { super(te_type); } + + public int progress() + { return progress_; } + + public int phase() + { + if(tank_.getFluidAmount() < 1000) return PHASE_EMPTY; + if(progress_ >= 100) return PHASE_BLUEICE; + if(progress_ >= 70) return PHASE_PACKEDICE; + if(progress_ >= 30) return PHASE_ICE; + return PHASE_WATER; + } + + public ItemStack getIceItem(boolean extract) + { + ItemStack stack; + switch(phase()) { + case PHASE_ICE: stack = new ItemStack(Items.ICE); break; + case PHASE_PACKEDICE: stack = new ItemStack(Items.PACKED_ICE); break; + case PHASE_BLUEICE: stack = new ItemStack(Items.BLUE_ICE); break; + default: return ItemStack.EMPTY; + } + if(extract) reset_process(); + return stack; + } + + public int comparator_signal() + { return phase() * 4; } + + protected void reset_process() + { + force_block_update_ = true; + tank_.drain(1000); + tick_timer_ = 0; + progress_ = 0; + } + + public void readnbt(CompoundNBT nbt) + { + energy_stored_ = nbt.getInt("energy"); + progress_ = nbt.getInt("progress"); + if(nbt.contains("tank", Constants.NBT.TAG_COMPOUND)) tank_.readnbt(nbt.getCompound("tank")); + } + + protected void writenbt(CompoundNBT nbt) + { + nbt.putInt("energy", MathHelper.clamp(energy_stored_,0 , MAX_ENERGY_BUFFER)); + nbt.putInt("progress", MathHelper.clamp(progress_,0 , 100)); + if(!tank_.isEmpty()) nbt.put("tank", tank_.writenbt(new CompoundNBT())); + } + + // TileEntity ------------------------------------------------------------------------------ + + @Override + public void read(BlockState state, CompoundNBT nbt) + { super.read(state, nbt); readnbt(nbt); } + + @Override + public CompoundNBT write(CompoundNBT nbt) + { super.write(nbt); writenbt(nbt); return nbt; } + + @Override + public void remove() + { + super.remove(); + energy_handler_.invalidate(); + fluid_handler_.invalidate(); + item_handler_.invalidate(); + } + + // IItemHandler -------------------------------------------------------------------------------- + + private LazyOptional item_handler_ = LazyOptional.of(() -> (IItemHandler)new FreezerItemHandler(this)); + + protected static class FreezerItemHandler implements IItemHandler + { + private FreezerTileEntity te; + + FreezerItemHandler(FreezerTileEntity te) + { this.te = te; } + + @Override + public int getSlots() + { return 1; } + + @Override + public int getSlotLimit(int index) + { return 1; } + + @Override + public boolean isItemValid(int slot, @Nonnull ItemStack stack) + { return false; } + + @Override + @Nonnull + public ItemStack getStackInSlot(int index) + { return (index!=0) ? ItemStack.EMPTY : te.getIceItem(false); } + + @Override + @Nonnull + public ItemStack insertItem(int index, @Nonnull ItemStack stack, boolean simulate) + { return ItemStack.EMPTY; } + + @Override + @Nonnull + public ItemStack extractItem(int index, int amount, boolean simulate) + { return te.getIceItem(!simulate); } + } + + // IFluidHandler -------------------------------------------------------------------------------- + + private final LazyOptional fluid_handler_ = LazyOptional.of(() -> new Fluidics.SingleTankFluidHandler(tank_)); + + // IEnergyStorage ---------------------------------------------------------------------------- + + protected LazyOptional energy_handler_ = LazyOptional.of(() -> (IEnergyStorage)this); + + @Override + public boolean canExtract() + { return false; } + + @Override + public boolean canReceive() + { return true; } + + @Override + public int getMaxEnergyStored() + { return MAX_ENERGY_BUFFER; } + + @Override + public int getEnergyStored() + { return energy_stored_; } + + @Override + public int extractEnergy(int maxExtract, boolean simulate) + { return 0; } + + @Override + public int receiveEnergy(int maxReceive, boolean simulate) + { + if(energy_stored_ >= MAX_ENERGY_BUFFER) return 0; + int n = Math.min(maxReceive, (MAX_ENERGY_BUFFER - energy_stored_)); + if(n > MAX_ENERGY_TRANSFER) n = MAX_ENERGY_TRANSFER; + if(!simulate) {energy_stored_ += n; markDirty(); } + return n; + } + + // Capability export ---------------------------------------------------------------------------- + + @Override + public LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable Direction facing) + { + if(capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return item_handler_.cast(); + if(capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) return fluid_handler_.cast(); + if(capability == CapabilityEnergy.ENERGY) return energy_handler_.cast(); + return super.getCapability(capability, facing); + } + + // ITickable ------------------------------------------------------------------------------------ + + @Override + public void tick() + { + if(world.isRemote) return; + if(--tick_timer_ > 0) return; + tick_timer_ = TICK_INTERVAL; + BlockState state = world.getBlockState(pos); + if(!(state.getBlock() instanceof FreezerBlock)) return; + boolean dirty = false; + final int last_phase = phase(); + if(tank_.getFluidAmount() < 1000) { + progress_ = 0; + } else if((energy_stored_ <= 0) || (world.isBlockPowered(pos))) { + progress_ = MathHelper.clamp(progress_-reheat_rate, 0,100); + } else if(progress_ >= 100) { + progress_ = 100; + energy_stored_ = MathHelper.clamp(energy_stored_-((energy_consumption*TICK_INTERVAL)/20), 0, MAX_ENERGY_BUFFER); + } else { + energy_stored_ = MathHelper.clamp(energy_stored_-(energy_consumption*TICK_INTERVAL), 0, MAX_ENERGY_BUFFER); + progress_ = MathHelper.clamp(progress_+cooldown_rate, 0, 100); + } + int new_phase = phase(); + if(new_phase > last_phase) { + world.playSound(null, pos, SoundEvents.BLOCK_SAND_FALL, SoundCategory.BLOCKS, 0.2f, 0.7f); + } else if(new_phase < last_phase) { + world.playSound(null, pos, SoundEvents.BLOCK_SAND_FALL, SoundCategory.BLOCKS, 0.2f, 0.7f); + } + // Block state + if((force_block_update_ || (state.get(FreezerBlock.PHASE) != new_phase))) { + state = state.with(FreezerBlock.PHASE, new_phase); + world.setBlockState(pos, state,3|16); + world.notifyNeighborsOfStateChange(getPos(), state.getBlock()); + force_block_update_ = false; + } + if(dirty) markDirty(); + } + } +} diff --git a/src/main/java/wile/engineersdecor/blocks/EdGroundBlock.java b/src/main/java/wile/engineersdecor/blocks/EdGroundBlock.java index 6536134..f2d87aa 100644 --- a/src/main/java/wile/engineersdecor/blocks/EdGroundBlock.java +++ b/src/main/java/wile/engineersdecor/blocks/EdGroundBlock.java @@ -1,5 +1,5 @@ /* - * @file EdSoilBlock.java + * @file EdGroundBlock.java * @author Stefan Wilhelm (wile) * @copyright (C) 2019 Stefan Wilhelm * @license MIT (see https://opensource.org/licenses/MIT) @@ -11,10 +11,8 @@ package wile.engineersdecor.blocks; import net.minecraft.block.*; - public class EdGroundBlock extends DecorBlock.Normal implements IDecorBlock { public EdGroundBlock(long config, Block.Properties builder) { super(config, builder); } - } diff --git a/src/main/java/wile/engineersdecor/blocks/EdHatchBlock.java b/src/main/java/wile/engineersdecor/blocks/EdHatchBlock.java index 9cd2476..cb65b2e 100644 --- a/src/main/java/wile/engineersdecor/blocks/EdHatchBlock.java +++ b/src/main/java/wile/engineersdecor/blocks/EdHatchBlock.java @@ -10,9 +10,7 @@ package wile.engineersdecor.blocks; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.entity.EntitySpawnPlacementRegistry; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.*; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.pathfinding.PathType; import net.minecraft.state.BooleanProperty; @@ -24,6 +22,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.util.math.vector.Vector3d; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; @@ -66,7 +65,7 @@ public class EdHatchBlock extends DecorBlock.HorizontalWaterLoggable implements @Override public boolean isLadder(BlockState state, IWorldReader world, BlockPos pos, LivingEntity entity) - { return state.get(OPEN); } + { return state.get(OPEN) && world.getBlockState(pos.up()).isLadder(world, pos, entity); } @Override public boolean canCreatureSpawn(BlockState state, IBlockReader world, BlockPos pos, EntitySpawnPlacementRegistry.PlacementType type, @Nullable EntityType entityType) @@ -97,4 +96,19 @@ public class EdHatchBlock extends DecorBlock.HorizontalWaterLoggable implements world.setBlockState(pos, state.with(OPEN, powered).with(POWERED, powered), 1|2); } + @Override + @SuppressWarnings("deprecation") + public void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) + { + if((!state.get(OPEN)) || (!(entity instanceof PlayerEntity))) return; + final PlayerEntity player = (PlayerEntity)entity; + if(entity.getLookVec().getY() > -0.75) return; + if(player.getHorizontalFacing() != state.get(HORIZONTAL_FACING)) return; + Vector3d ppos = player.getPositionVec(); + Vector3d centre = Vector3d.copyCenteredHorizontally(pos); + Vector3d v = centre.subtract(ppos); + if(ppos.getY() < (centre.getY()-0.1) || (v.lengthSquared() > 0.3)) return; + v = v.scale(0.3); + player.addVelocity(v.x, 0, v.z); + } } diff --git a/src/main/java/wile/engineersdecor/blocks/EdHopper.java b/src/main/java/wile/engineersdecor/blocks/EdHopper.java index a734457..fe1f879 100644 --- a/src/main/java/wile/engineersdecor/blocks/EdHopper.java +++ b/src/main/java/wile/engineersdecor/blocks/EdHopper.java @@ -9,6 +9,7 @@ package wile.engineersdecor.blocks; import com.mojang.blaze3d.matrix.MatrixStack; +import net.minecraft.world.IWorldReader; import wile.engineersdecor.ModContent; import wile.engineersdecor.ModEngineersDecor; import wile.engineersdecor.libmc.detail.Auxiliaries; @@ -173,6 +174,10 @@ public class EdHopper ((HopperTileEntity)te).collection_timer_ = 0; } + @Override + public boolean shouldCheckWeakPower(BlockState state, IWorldReader world, BlockPos pos, Direction side) + { return false; } + @Override @SuppressWarnings("deprecation") public boolean canProvidePower(BlockState state) diff --git a/src/main/java/wile/engineersdecor/blocks/EdLadderBlock.java b/src/main/java/wile/engineersdecor/blocks/EdLadderBlock.java index 6fd4542..ca0e667 100644 --- a/src/main/java/wile/engineersdecor/blocks/EdLadderBlock.java +++ b/src/main/java/wile/engineersdecor/blocks/EdLadderBlock.java @@ -87,12 +87,22 @@ public class EdLadderBlock extends LadderBlock implements IDecorBlock { if((without_speed_boost_) || (player.isOnGround()) || (!player.isOnLadder()) || (player.isSteppingCarefully()) || (player.isSpectator())) return; double lvy = player.getLookVec().y; - if(Math.abs(lvy) < 0.94) return; + if(Math.abs(lvy) < 0.92) return; final BlockPos pos = player.getPosition(); final BlockState state = player.world.getBlockState(pos); if(!(state.getBlock() instanceof EdLadderBlock)) return; player.fallDistance = 0; - player.setMotionMultiplier(state, new Vector3d(0.2, (lvy>0)?(3):(6), 0.2)); + if((player.getMotion().getY() < 0) == (player.getLookVec().y < 0)) { + player.setMotionMultiplier(state, new Vector3d(0.2, (lvy>0)?(3):(6), 0.2)); + if(Math.abs(player.getMotion().getY()) > 0.1) { + Vector3d vdiff = Vector3d.copyCenteredHorizontally(pos).subtract(player.getPositionVec()).scale(1); + vdiff.add(Vector3d.copyCenteredHorizontally(state.get(FACING).getDirectionVec()).scale(0.5)); + vdiff = new Vector3d(vdiff.x, player.getMotion().y, vdiff.z); + player.setMotion(vdiff); + } + } else if(player.getLookVec().y > 0) { + player.setMotionMultiplier(state, new Vector3d(1, 0.05, 1)); + } } } diff --git a/src/main/java/wile/engineersdecor/blocks/EdRoofBlock.java b/src/main/java/wile/engineersdecor/blocks/EdRoofBlock.java index 50dbade..13fa6c6 100644 --- a/src/main/java/wile/engineersdecor/blocks/EdRoofBlock.java +++ b/src/main/java/wile/engineersdecor/blocks/EdRoofBlock.java @@ -21,6 +21,7 @@ import net.minecraft.util.*; import net.minecraft.util.Direction.Axis; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.IBooleanFunction; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.util.math.shapes.VoxelShapes; @@ -36,14 +37,16 @@ public class EdRoofBlock extends StandardBlocks.HorizontalWaterLoggable implemen { public static final EnumProperty SHAPE = BlockStateProperties.STAIRS_SHAPE; public static final EnumProperty HALF = BlockStateProperties.HALF; - private static final VoxelShape[][][] SHAPE_CACHE = makeShapes(); + private final VoxelShape[][][] shape_cache_; public EdRoofBlock(long config, Block.Properties properties) + { this(config, properties, VoxelShapes.empty(), VoxelShapes.empty()); } + + public EdRoofBlock(long config, Block.Properties properties, VoxelShape add, VoxelShape cut) { - super(config, - properties,//.func_235838_a_((state)->1).notSolid(), //shade rendering again messed up - Auxiliaries.getPixeledAABB(0, 0,0,16, 8, 16)); + super(config, properties, Auxiliaries.getPixeledAABB(0, 0,0,16, 8, 16)); setDefaultState(stateContainer.getBaseState().with(HORIZONTAL_FACING, Direction.NORTH).with(SHAPE, StairsShape.STRAIGHT).with(WATERLOGGED, false)); + shape_cache_ = makeShapes(add, cut); } @Override @@ -53,7 +56,7 @@ public class EdRoofBlock extends StandardBlocks.HorizontalWaterLoggable implemen @Override public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context) - { return SHAPE_CACHE[state.get(HALF).ordinal()][state.get(HORIZONTAL_FACING).getIndex()][state.get(SHAPE).ordinal()]; } + { return shape_cache_[state.get(HALF).ordinal()][state.get(HORIZONTAL_FACING).getIndex()][state.get(SHAPE).ordinal()]; } @Override protected void fillStateContainer(StateContainer.Builder builder) @@ -123,13 +126,22 @@ public class EdRoofBlock extends StandardBlocks.HorizontalWaterLoggable implemen return (!isRoofBlock(st)) || (st.get(HORIZONTAL_FACING) != state.get(HORIZONTAL_FACING)); } - private static VoxelShape[][][] makeShapes() + private static VoxelShape[][][] makeShapes(VoxelShape add, VoxelShape cut) { VoxelShape[][][] shapes = new VoxelShape[2][6][5]; for(int half_index=0; half_index ENABLED_TABS = Collections.singletonList(ModEngineersDecor.ITEMGROUP); + public static final Collection DISABLED_TABS = new ArrayList(); + + public EdItem(Item.Properties properties) + { super(properties.group(ModEngineersDecor.ITEMGROUP)); } + + @Override + @OnlyIn(Dist.CLIENT) + public void addInformation(ItemStack stack, @Nullable World world, List tooltip, ITooltipFlag flag) + { Auxiliaries.Tooltip.addInformation(stack, world, tooltip, flag, true); } + + @Override + public Collection getCreativeTabs() + { return ModConfig.isOptedOut(this) ? (DISABLED_TABS) : (ENABLED_TABS); } + +} diff --git a/src/main/java/wile/engineersdecor/libmc/detail/Fluidics.java b/src/main/java/wile/engineersdecor/libmc/detail/Fluidics.java index 86e173e..e4cfb8e 100644 --- a/src/main/java/wile/engineersdecor/libmc/detail/Fluidics.java +++ b/src/main/java/wile/engineersdecor/libmc/detail/Fluidics.java @@ -69,6 +69,9 @@ public class Fluidics public Tank(int capacity) { capacity_ = capacity; } + public Tank(int capacity, Predicate validator) + { capacity_ = capacity; setValidator(validator); } + public Tank readnbt(CompoundNBT nbt) { setFluid(FluidStack.loadFluidStackFromNBT(nbt)); return this; } @@ -136,6 +139,10 @@ public class Fluidics } } + @Nonnull + public FluidStack drain(int maxDrain) + { return drain(maxDrain, FluidAction.EXECUTE); } + @Nonnull @Override public FluidStack drain(FluidStack fs, FluidAction action) diff --git a/src/main/resources/assets/engineersdecor/blockstates/dark_shingle_roof_chimney.json b/src/main/resources/assets/engineersdecor/blockstates/dark_shingle_roof_chimney.json new file mode 100644 index 0000000..a418fdf --- /dev/null +++ b/src/main/resources/assets/engineersdecor/blockstates/dark_shingle_roof_chimney.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": [ + { "model": "engineersdecor:block/roof/dark_shingle_roof_chimney_model" } + ] + } +} diff --git a/src/main/resources/assets/engineersdecor/blockstates/sign_caution.json b/src/main/resources/assets/engineersdecor/blockstates/sign_caution.json new file mode 100644 index 0000000..2fea45c --- /dev/null +++ b/src/main/resources/assets/engineersdecor/blockstates/sign_caution.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=north": { "model": "engineersdecor:block/sign/sign_caution_model", "y":180 }, + "facing=south": { "model": "engineersdecor:block/sign/sign_caution_model" }, + "facing=west": { "model": "engineersdecor:block/sign/sign_caution_model", "y":90 }, + "facing=east": { "model": "engineersdecor:block/sign/sign_caution_model", "y":270 }, + "facing=up": { "model": "engineersdecor:block/sign/sign_caution_model" }, + "facing=down": { "model": "engineersdecor:block/sign/sign_caution_model" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/blockstates/sign_firehazard.json b/src/main/resources/assets/engineersdecor/blockstates/sign_firehazard.json new file mode 100644 index 0000000..dffe7f7 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/blockstates/sign_firehazard.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=north": { "model": "engineersdecor:block/sign/sign_firehazard_model", "y":180 }, + "facing=south": { "model": "engineersdecor:block/sign/sign_firehazard_model" }, + "facing=west": { "model": "engineersdecor:block/sign/sign_firehazard_model", "y":90 }, + "facing=east": { "model": "engineersdecor:block/sign/sign_firehazard_model", "y":270 }, + "facing=up": { "model": "engineersdecor:block/sign/sign_firehazard_model" }, + "facing=down": { "model": "engineersdecor:block/sign/sign_firehazard_model" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/blockstates/sign_frost.json b/src/main/resources/assets/engineersdecor/blockstates/sign_frost.json new file mode 100644 index 0000000..069d8b0 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/blockstates/sign_frost.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=north": { "model": "engineersdecor:block/sign/sign_frost_model", "y":180 }, + "facing=south": { "model": "engineersdecor:block/sign/sign_frost_model" }, + "facing=west": { "model": "engineersdecor:block/sign/sign_frost_model", "y":90 }, + "facing=east": { "model": "engineersdecor:block/sign/sign_frost_model", "y":270 }, + "facing=up": { "model": "engineersdecor:block/sign/sign_frost_model" }, + "facing=down": { "model": "engineersdecor:block/sign/sign_frost_model" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/blockstates/sign_hotsurface.json b/src/main/resources/assets/engineersdecor/blockstates/sign_hotsurface.json new file mode 100644 index 0000000..c7f4a5a --- /dev/null +++ b/src/main/resources/assets/engineersdecor/blockstates/sign_hotsurface.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=north": { "model": "engineersdecor:block/sign/sign_hotsurface_model", "y":180 }, + "facing=south": { "model": "engineersdecor:block/sign/sign_hotsurface_model" }, + "facing=west": { "model": "engineersdecor:block/sign/sign_hotsurface_model", "y":90 }, + "facing=east": { "model": "engineersdecor:block/sign/sign_hotsurface_model", "y":270 }, + "facing=up": { "model": "engineersdecor:block/sign/sign_hotsurface_model" }, + "facing=down": { "model": "engineersdecor:block/sign/sign_hotsurface_model" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/blockstates/sign_laser.json b/src/main/resources/assets/engineersdecor/blockstates/sign_laser.json new file mode 100644 index 0000000..38fca3a --- /dev/null +++ b/src/main/resources/assets/engineersdecor/blockstates/sign_laser.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=north": { "model": "engineersdecor:block/sign/sign_laser_model", "y":180 }, + "facing=south": { "model": "engineersdecor:block/sign/sign_laser_model" }, + "facing=west": { "model": "engineersdecor:block/sign/sign_laser_model", "y":90 }, + "facing=east": { "model": "engineersdecor:block/sign/sign_laser_model", "y":270 }, + "facing=up": { "model": "engineersdecor:block/sign/sign_laser_model" }, + "facing=down": { "model": "engineersdecor:block/sign/sign_laser_model" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/blockstates/sign_magichazard.json b/src/main/resources/assets/engineersdecor/blockstates/sign_magichazard.json new file mode 100644 index 0000000..34cf058 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/blockstates/sign_magichazard.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=north": { "model": "engineersdecor:block/sign/sign_magichazard_model", "y":180 }, + "facing=south": { "model": "engineersdecor:block/sign/sign_magichazard_model" }, + "facing=west": { "model": "engineersdecor:block/sign/sign_magichazard_model", "y":90 }, + "facing=east": { "model": "engineersdecor:block/sign/sign_magichazard_model", "y":270 }, + "facing=up": { "model": "engineersdecor:block/sign/sign_magichazard_model" }, + "facing=down": { "model": "engineersdecor:block/sign/sign_magichazard_model" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/blockstates/sign_magneticfield.json b/src/main/resources/assets/engineersdecor/blockstates/sign_magneticfield.json new file mode 100644 index 0000000..529cc9d --- /dev/null +++ b/src/main/resources/assets/engineersdecor/blockstates/sign_magneticfield.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=north": { "model": "engineersdecor:block/sign/sign_magneticfield_model", "y":180 }, + "facing=south": { "model": "engineersdecor:block/sign/sign_magneticfield_model" }, + "facing=west": { "model": "engineersdecor:block/sign/sign_magneticfield_model", "y":90 }, + "facing=east": { "model": "engineersdecor:block/sign/sign_magneticfield_model", "y":270 }, + "facing=up": { "model": "engineersdecor:block/sign/sign_magneticfield_model" }, + "facing=down": { "model": "engineersdecor:block/sign/sign_magneticfield_model" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/blockstates/sign_radioactive.json b/src/main/resources/assets/engineersdecor/blockstates/sign_radioactive.json new file mode 100644 index 0000000..c1121bb --- /dev/null +++ b/src/main/resources/assets/engineersdecor/blockstates/sign_radioactive.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=north": { "model": "engineersdecor:block/sign/sign_radioactive_model", "y":180 }, + "facing=south": { "model": "engineersdecor:block/sign/sign_radioactive_model" }, + "facing=west": { "model": "engineersdecor:block/sign/sign_radioactive_model", "y":90 }, + "facing=east": { "model": "engineersdecor:block/sign/sign_radioactive_model", "y":270 }, + "facing=up": { "model": "engineersdecor:block/sign/sign_radioactive_model" }, + "facing=down": { "model": "engineersdecor:block/sign/sign_radioactive_model" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/blockstates/small_freezer.json b/src/main/resources/assets/engineersdecor/blockstates/small_freezer.json new file mode 100644 index 0000000..3323cd9 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/blockstates/small_freezer.json @@ -0,0 +1,24 @@ +{ + "variants": { + "facing=north,phase=0": { "model": "engineersdecor:block/device/small_freezer_model", "y": 0 }, + "facing=south,phase=0": { "model": "engineersdecor:block/device/small_freezer_model", "y": 180 }, + "facing=west,phase=0": { "model": "engineersdecor:block/device/small_freezer_model", "y": 270 }, + "facing=east,phase=0": { "model": "engineersdecor:block/device/small_freezer_model", "y": 90 }, + "facing=north,phase=1": { "model": "engineersdecor:block/device/small_freezer_model_s1", "y": 0 }, + "facing=south,phase=1": { "model": "engineersdecor:block/device/small_freezer_model_s1", "y": 180 }, + "facing=west,phase=1": { "model": "engineersdecor:block/device/small_freezer_model_s1", "y": 270 }, + "facing=east,phase=1": { "model": "engineersdecor:block/device/small_freezer_model_s1", "y": 90 }, + "facing=north,phase=2": { "model": "engineersdecor:block/device/small_freezer_model_s2", "y": 0 }, + "facing=south,phase=2": { "model": "engineersdecor:block/device/small_freezer_model_s2", "y": 180 }, + "facing=west,phase=2": { "model": "engineersdecor:block/device/small_freezer_model_s2", "y": 270 }, + "facing=east,phase=2": { "model": "engineersdecor:block/device/small_freezer_model_s2", "y": 90 }, + "facing=north,phase=3": { "model": "engineersdecor:block/device/small_freezer_model_s3", "y": 0 }, + "facing=south,phase=3": { "model": "engineersdecor:block/device/small_freezer_model_s3", "y": 180 }, + "facing=west,phase=3": { "model": "engineersdecor:block/device/small_freezer_model_s3", "y": 270 }, + "facing=east,phase=3": { "model": "engineersdecor:block/device/small_freezer_model_s3", "y": 90 }, + "facing=north,phase=4": { "model": "engineersdecor:block/device/small_freezer_model_s4", "y": 0 }, + "facing=south,phase=4": { "model": "engineersdecor:block/device/small_freezer_model_s4", "y": 180 }, + "facing=west,phase=4": { "model": "engineersdecor:block/device/small_freezer_model_s4", "y": 270 }, + "facing=east,phase=4": { "model": "engineersdecor:block/device/small_freezer_model_s4", "y": 90 } + } +} diff --git a/src/main/resources/assets/engineersdecor/lang/en_us.json b/src/main/resources/assets/engineersdecor/lang/en_us.json index d1e79b6..2025256 100644 --- a/src/main/resources/assets/engineersdecor/lang/en_us.json +++ b/src/main/resources/assets/engineersdecor/lang/en_us.json @@ -67,7 +67,10 @@ "block.engineersdecor.clinker_brick_wall.help": "§6Simplistic Clinker Brick Wall.", "block.engineersdecor.dark_shingle_roof": "Dark Shingle Roof", "block.engineersdecor.dark_shingle_roof_block": "Dark Shingle Roof Block", + "block.engineersdecor.dark_shingle_roof_chimney": "§6Dark Shingle Roof Chimney.", + "block.engineersdecor.dark_shingle_roof_chimney.help": "Smoking chimney fitting to the Dark Shingle Roof Chimney Trunk. Click to change the smoke intensity.", "block.engineersdecor.dark_shingle_roof_chimneytrunk": "Dark Shingle Roof Chimney Trunk", + "block.engineersdecor.dark_shingle_roof_chimneytrunk.help": "Trunk to put a chimney on or place a IE Wire Connector to feed RF power into the building over the roof.", "block.engineersdecor.dark_shingle_roof_metallized": "Dark Shingle Roof Show Guard", "block.engineersdecor.dark_shingle_roof_skylight": "Dark Shingle Roof Skylight", "block.engineersdecor.dark_shingle_roof_slab": "Dark Shingle Roof Slab", @@ -180,20 +183,23 @@ "block.engineersdecor.rebar_concrete_tile_stairs.help": "§6Steel reinforced concrete tile stairs.§r Expensive but Creeper-proof like obsidian.", "block.engineersdecor.rebar_concrete_wall": "Rebar Concrete Wall", "block.engineersdecor.rebar_concrete_wall.help": "§6Steel reinforced concrete wall.§r Expensive but Creeper-proof like obsidian.", + "block.engineersdecor.sign_caution": "Sign \"Generic Caution\"", "block.engineersdecor.sign_danger": "Sign \"Caution Really Dangerous There\"", - "block.engineersdecor.sign_danger.help": "§6General danger warning.", "block.engineersdecor.sign_decor": "Sign Plate (Engineer's decor)", "block.engineersdecor.sign_decor.help": "§6This should not be craftable or visible in JEI. Used for creative tab and screenshots.", "block.engineersdecor.sign_defense": "Sign \"Caution Defense System Ahead\"", - "block.engineersdecor.sign_defense.help": "§6Warning sign for turrets, Tesla Coils, and traps.", "block.engineersdecor.sign_exit": "Exit Sign", "block.engineersdecor.sign_exit.help": "§6There's the door, please ...", "block.engineersdecor.sign_factoryarea": "Sign \"Factory Area\"", - "block.engineersdecor.sign_factoryarea.help": "§6Marker sign for buildings or areas where the really big machines are located.", + "block.engineersdecor.sign_firehazard": "Sign \"Fire Hazard\"", + "block.engineersdecor.sign_frost": "Sign \"Frost Warning\"", + "block.engineersdecor.sign_hotsurface": "Sign \"Caution Hot Surface\"", "block.engineersdecor.sign_hotwire": "Sign \"Caution Hot Wire\"", "block.engineersdecor.sign_hotwire.help": "§6Electrical hazard warning. Don't forget to place around HV, or you will have a nonconformity in the next audit.", - "block.engineersdecor.sign_mindstep": "Sign \"Mind The Step\"", - "block.engineersdecor.sign_mindstep.help": "§6Placable on walls (horizontally).", + "block.engineersdecor.sign_laser": "Sign \"Laser Hazard\"", + "block.engineersdecor.sign_magichazard": "Sign \"Caution Magical Hazard\"", + "block.engineersdecor.sign_magneticfield": "Sign \"Caution Strong Magnetic Field\"", + "block.engineersdecor.sign_radioactive": "Sign \"Radioactive Hazard\"", "block.engineersdecor.slag_brick_block": "Slag Brick Block", "block.engineersdecor.slag_brick_block.help": "§6A gray-brown brick block with position dependent texture variations.", "block.engineersdecor.slag_brick_slab": "Slag Brick Slab", @@ -211,6 +217,8 @@ "block.engineersdecor.small_electrical_furnace.tooltips.speed": "Smelting speed selection §8(OFF/I/II/III)", "block.engineersdecor.small_fluid_funnel": "Small Fluid Collection Funnel", "block.engineersdecor.small_fluid_funnel.help": "§6Collects fluids above it.§r Has an internal tank with three buckets capacity. Traces flowing fluids to nearby source blocks. The fluid can be obtained with fluid transfer systems or a bucket. Fills only tanks below (gravity transfer). Compatible with vanilla infinite-water-source creation.", + "block.engineersdecor.small_freezer": "Small Water Freezer", + "block.engineersdecor.small_freezer.help": "§6Ice production device.§r\nCools down water to ice, packed ice, and finally blue ice. Click with a water bucket or pipe in water and ensure the device is RF powered. Use a Hopper or other item extraction to retrieve the ice variant. Remove the RF power or apply a redstone signal to disable the freezer. For automation, you can use a redstone comparator to detect which ice phase is currently present.", "block.engineersdecor.small_lab_furnace": "Small Laboratory Furnace", "block.engineersdecor.small_lab_furnace.help": "§6Small metal cased lab kiln.§r Solid fuel consuming, updraught. Slightly hotter and better isolated than a cobblestone furnace, therefore more efficient. Two auxiliary slots e.g. for storage. Two stack internal hopper fifos for input, output, and fuel. Place an external heater into a aux slot and connect power for electrical smelting speed boost.", "block.engineersdecor.small_milking_machine": "Small Milking Machine", @@ -276,5 +284,6 @@ "block.engineersdecor.treated_wood_window": "Treated Wood Window", "block.engineersdecor.treated_wood_window.help": "§6Wood framed triple glazed window. Well insulating.§r Does not connect to adjacent blocks like glass panes.", "block.engineersdecor.treated_wood_windowsill": "Treated Wood Window Sill", - "block.engineersdecor.treated_wood_windowsill.help": "§6Simple window decoration." + "block.engineersdecor.treated_wood_windowsill.help": "§6Simple window decoration.", + "item.engineersdecor.metal_bar": "Metal Bar" } \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/lang/ru_ru.json b/src/main/resources/assets/engineersdecor/lang/ru_ru.json index 75b4519..c98251e 100644 --- a/src/main/resources/assets/engineersdecor/lang/ru_ru.json +++ b/src/main/resources/assets/engineersdecor/lang/ru_ru.json @@ -67,7 +67,10 @@ "block.engineersdecor.clinker_brick_wall.help": "§6Обыкновенная клинкерная кирпичная стена.", "block.engineersdecor.dark_shingle_roof": "Dark Ceramic Shingle Roof", "block.engineersdecor.dark_shingle_roof_block": "Dark Ceramic Shingle Roof Block", + "block.engineersdecor.dark_shingle_roof_chimney": "§6Dark Shingle Roof Chimney.", + "block.engineersdecor.dark_shingle_roof_chimney.help": "Smoking chimney fitting to the Dark Shingle Roof Chimney Trunk. Click to change the smoke intensity.", "block.engineersdecor.dark_shingle_roof_chimneytrunk": "Dark Shingle Roof Chimney Trunk", + "block.engineersdecor.dark_shingle_roof_chimneytrunk.help": "Trunk to put a chimney on or place a IE Wire Connector to feed RF power into the building over the roof.", "block.engineersdecor.dark_shingle_roof_metallized": "Dark Shingle Roof Show Guard", "block.engineersdecor.dark_shingle_roof_skylight": "Dark Shingle Roof Skylight", "block.engineersdecor.dark_shingle_roof_slab": "Dark Ceramic Shingle Roof Slab", @@ -180,20 +183,23 @@ "block.engineersdecor.rebar_concrete_tile_stairs.help": "§6Ступеньки из железобетонной плитки.§r Дорогие, но взрывоустойчивые, как обсидиан.", "block.engineersdecor.rebar_concrete_wall": "Железобетонная стена", "block.engineersdecor.rebar_concrete_wall.help": "§6Стальная железобетонная стена.§r Дорогая, но взрывоустойчивая, как обсидиан.", + "block.engineersdecor.sign_caution": "Sign \"Generic Caution\"", "block.engineersdecor.sign_danger": "Знак «Осторожно, там опасность»", - "block.engineersdecor.sign_danger.help": "§6Общее предупреждение об опасности.", "block.engineersdecor.sign_decor": "Табличка с надписью (Логотип Engineer's decor)", "block.engineersdecor.sign_decor.help": "§Это не должно быть крафтовым или видимым в JEI. Используется для творческой вкладки и скриншотов.", "block.engineersdecor.sign_defense": "Знак «Осторожно, впереди система обороны»", - "block.engineersdecor.sign_defense.help": "§6Предупреждающий знак для турелей, катушек Тесла и ловушек.", "block.engineersdecor.sign_exit": "Знак «Выход»", "block.engineersdecor.sign_exit.help": "§6Там дверь, пожалуйста ...", "block.engineersdecor.sign_factoryarea": "Знак «Заводская зона»", - "block.engineersdecor.sign_factoryarea.help": "§6Маркерный знак для зданий или областей, где расположены действительно большие машины.", + "block.engineersdecor.sign_firehazard": "Sign \"Fire Hazard\"", + "block.engineersdecor.sign_frost": "Sign \"Frost Warning\"", + "block.engineersdecor.sign_hotsurface": "Sign \"Caution Hot Surface\"", "block.engineersdecor.sign_hotwire": "Знак «Осторожно, под напряжением»", "block.engineersdecor.sign_hotwire.help": "§6Предупреждение об опасности поражения электрическим током. Не забудьте разместить около высокого напряжения, иначе у вас будет штраф при следующей проверке.", - "block.engineersdecor.sign_mindstep": "Знак «Осторожно, там ступеньки!»", - "block.engineersdecor.sign_mindstep.help": "§6Размещается на стенах (горизонтально)", + "block.engineersdecor.sign_laser": "Sign \"Laser Hazard\"", + "block.engineersdecor.sign_magichazard": "Sign \"Caution Magical Hazard\"", + "block.engineersdecor.sign_magneticfield": "Sign \"Caution Strong Magnetic Field\"", + "block.engineersdecor.sign_radioactive": "Sign \"Radioactive Hazard\"", "block.engineersdecor.slag_brick_block": "Шлакоблок", "block.engineersdecor.slag_brick_block.help": "§6Серо-коричневый кирпичный блок с зависимыми от положения вариациями текстуры.", "block.engineersdecor.slag_brick_slab": "Плита из шлакоблока", @@ -211,6 +217,8 @@ "block.engineersdecor.small_electrical_furnace.tooltips.speed": "Smelting speed selection §8(OFF/I/II/III)", "block.engineersdecor.small_fluid_funnel": "Малая воронка для сбора жидкости", "block.engineersdecor.small_fluid_funnel.help": "§6Собирает жидкости над ним.§r Имеет внутренний бак на три ведра. Прослеживает текучие жидкости к соседним блокам источника. Жидкость может быть получена с помощью систем передачи жидкости или ведра. Заполняет только резервуары ниже (сила гравитации). Совместим с ванильным источником бесконечной воды.", + "block.engineersdecor.small_freezer": "Small Water Freezer", + "block.engineersdecor.small_freezer.help": "§6Ice production device.§r\nCools down water to ice, packed ice, and finally blue ice. Click with a water bucket or pipe in water and ensure the device is RF powered. Use a Hopper or other item extraction to retrieve the ice variant. Remove the RF power or apply a redstone signal to disable the freezer. For automation, you can use a redstone comparator to detect which ice phase is currently present.", "block.engineersdecor.small_lab_furnace": "Компактная лабораторная печь", "block.engineersdecor.small_lab_furnace.help": "§6Лабораторная печь в металлическом корпусе.§r Подача твёрдого топлива сверху. Немного горячее и изолированней каменной, поэтому быстрее. Два вспомогательных слота, например для хранения. Два слота-воронки для ввода, вывода, и топлива. Поместите внешний нагреватель в слот AUX и подключите питание для электрического повышения скорости обработки.", "block.engineersdecor.small_milking_machine": "Малый доильный аппарат", @@ -276,5 +284,6 @@ "block.engineersdecor.treated_wood_window": "Обработанное деревянное окно", "block.engineersdecor.treated_wood_window.help": "§6Деревянный каркас окна с тройным остеклением. Ну и шумоизоляция.", "block.engineersdecor.treated_wood_windowsill": "Обработанный деревянный подоконник", - "block.engineersdecor.treated_wood_windowsill.help": "§6Простое оформление окон." + "block.engineersdecor.treated_wood_windowsill.help": "§6Простое оформление окон.", + "item.engineersdecor.metal_bar": "Metal Bar" } \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/lang/zh_cn.json b/src/main/resources/assets/engineersdecor/lang/zh_cn.json index 8becae0..f0e2376 100644 --- a/src/main/resources/assets/engineersdecor/lang/zh_cn.json +++ b/src/main/resources/assets/engineersdecor/lang/zh_cn.json @@ -67,7 +67,10 @@ "block.engineersdecor.clinker_brick_wall.help": "§6简单的过烧砖墙。", "block.engineersdecor.dark_shingle_roof": "Dark Ceramic Shingle Roof", "block.engineersdecor.dark_shingle_roof_block": "Dark Ceramic Shingle Roof Block", + "block.engineersdecor.dark_shingle_roof_chimney": "§6Dark Shingle Roof Chimney.", + "block.engineersdecor.dark_shingle_roof_chimney.help": "Smoking chimney fitting to the Dark Shingle Roof Chimney Trunk. Click to change the smoke intensity.", "block.engineersdecor.dark_shingle_roof_chimneytrunk": "Dark Shingle Roof Chimney Trunk", + "block.engineersdecor.dark_shingle_roof_chimneytrunk.help": "Trunk to put a chimney on or place a IE Wire Connector to feed RF power into the building over the roof.", "block.engineersdecor.dark_shingle_roof_metallized": "Dark Shingle Roof Show Guard", "block.engineersdecor.dark_shingle_roof_skylight": "Dark Shingle Roof Skylight", "block.engineersdecor.dark_shingle_roof_slab": "Dark Ceramic Shingle Roof Slab", @@ -180,20 +183,23 @@ "block.engineersdecor.rebar_concrete_tile_stairs.help": "§6钢强化的混凝土砖楼梯。§r昂贵但像黑曜石一样防爬行者爆炸。", "block.engineersdecor.rebar_concrete_wall": "钢筋混凝土墙", "block.engineersdecor.rebar_concrete_wall.help": "§6钢强化的混凝土墙。§r 昂贵但像黑曜石一样防爬行者爆炸。", + "block.engineersdecor.sign_caution": "Sign \"Generic Caution\"", "block.engineersdecor.sign_danger": "指示牌 \"小心危险\"", - "block.engineersdecor.sign_danger.help": "§6通用危险警告。", "block.engineersdecor.sign_decor": "标志板(工程师的装饰)", "block.engineersdecor.sign_decor.help": "§6这不应该可合成或在JEI看到。用于创造模式的物品栏标签和截屏。", "block.engineersdecor.sign_defense": "指示牌 \"小心防御系统\"", - "block.engineersdecor.sign_defense.help": "§6用于警告炮塔、特斯拉线圈和陷阱。", "block.engineersdecor.sign_exit": "出口指示牌", "block.engineersdecor.sign_exit.help": "§6There's the door, please ...", "block.engineersdecor.sign_factoryarea": "指示牌 \"工厂区域\"", - "block.engineersdecor.sign_factoryarea.help": "§6用于指示真的很大的机器所在的建筑和区域。", + "block.engineersdecor.sign_firehazard": "Sign \"Fire Hazard\"", + "block.engineersdecor.sign_frost": "Sign \"Frost Warning\"", + "block.engineersdecor.sign_hotsurface": "Sign \"Caution Hot Surface\"", "block.engineersdecor.sign_hotwire": "指示牌 \"小心电线\"", "block.engineersdecor.sign_hotwire.help": "§6电气危害警告。不要忘记在高压线周围放置,否则下次审计时你会发现不合格。", - "block.engineersdecor.sign_mindstep": "指示牌 \"小心脚滑\"", - "block.engineersdecor.sign_mindstep.help": "§6能(水平)放在墙上。", + "block.engineersdecor.sign_laser": "Sign \"Laser Hazard\"", + "block.engineersdecor.sign_magichazard": "Sign \"Caution Magical Hazard\"", + "block.engineersdecor.sign_magneticfield": "Sign \"Caution Strong Magnetic Field\"", + "block.engineersdecor.sign_radioactive": "Sign \"Radioactive Hazard\"", "block.engineersdecor.slag_brick_block": "炉渣砖块", "block.engineersdecor.slag_brick_block.help": "§6一种放在不同位置贴图有不同变化的灰棕色砖块。", "block.engineersdecor.slag_brick_slab": "炉渣砖台阶", @@ -211,6 +217,8 @@ "block.engineersdecor.small_electrical_furnace.tooltips.speed": "Smelting speed selection §8(OFF/I/II/III)", "block.engineersdecor.small_fluid_funnel": "小型流体收集漏斗", "block.engineersdecor.small_fluid_funnel.help": "§6收集上方的流体。§r有一个三桶大的内部储罐。会 追溯流体到附近的源方块。流体可被流体运输系统或桶 移出。只会装满下方的储罐(重力传输)。与原版 无限水兼容。", + "block.engineersdecor.small_freezer": "Small Water Freezer", + "block.engineersdecor.small_freezer.help": "§6Ice production device.§r\nCools down water to ice, packed ice, and finally blue ice. Click with a water bucket or pipe in water and ensure the device is RF powered. Use a Hopper or other item extraction to retrieve the ice variant. Remove the RF power or apply a redstone signal to disable the freezer. For automation, you can use a redstone comparator to detect which ice phase is currently present.", "block.engineersdecor.small_lab_furnace": "小型实验室炉", "block.engineersdecor.small_lab_furnace.help": "§6小型金属壳实验室窑。§r消耗固体燃料,向上排气。 比圆石炉稍微热一点,隔热性也更好,因此效率更高。 有两个用于储存的辅助格。两个堆叠的内部漏斗对输入、输出和燃料进行队列管理。 在辅助格放置一个外置加热器并通入电力可以加快熔炼速度。", "block.engineersdecor.small_milking_machine": "小型挤奶机", @@ -276,5 +284,6 @@ "block.engineersdecor.treated_wood_window": "防腐木窗", "block.engineersdecor.treated_wood_window.help": "§6木框三层玻璃窗。绝缘良好。§r不像玻璃板一样连接到相邻方块。", "block.engineersdecor.treated_wood_windowsill": "防腐木窗台", - "block.engineersdecor.treated_wood_windowsill.help": "§6简单的窗户装饰。" + "block.engineersdecor.treated_wood_windowsill.help": "§6简单的窗户装饰。", + "item.engineersdecor.metal_bar": "Metal Bar" } \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model.json b/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model.json new file mode 100644 index 0000000..4b7a2e5 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model.json @@ -0,0 +1,10 @@ +{ + "parent": "engineersdecor:block/device/small_mineral_smelter_model", + "textures": { + "front": "engineersdecor:block/furnace/small_freezer_front_s0", + "top": "engineersdecor:block/furnace/small_freezer_top", + "particle": "engineersdecor:block/furnace/small_freezer_side", + "side": "engineersdecor:block/furnace/small_freezer_side", + "bottom": "engineersdecor:block/furnace/small_freezer_bottom" + } +} diff --git a/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s1.json b/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s1.json new file mode 100644 index 0000000..7c2a7b7 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s1.json @@ -0,0 +1,6 @@ +{ + "parent": "engineersdecor:block/device/small_freezer_model", + "textures": { + "front": "engineersdecor:block/furnace/small_freezer_front_s1" + } +} diff --git a/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s2.json b/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s2.json new file mode 100644 index 0000000..ba30f66 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s2.json @@ -0,0 +1,6 @@ +{ + "parent": "engineersdecor:block/device/small_freezer_model", + "textures": { + "front": "engineersdecor:block/furnace/small_freezer_front_s2" + } +} diff --git a/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s3.json b/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s3.json new file mode 100644 index 0000000..1d07b83 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s3.json @@ -0,0 +1,6 @@ +{ + "parent": "engineersdecor:block/device/small_freezer_model", + "textures": { + "front": "engineersdecor:block/furnace/small_freezer_front_s3" + } +} diff --git a/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s4.json b/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s4.json new file mode 100644 index 0000000..0fc6664 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/device/small_freezer_model_s4.json @@ -0,0 +1,6 @@ +{ + "parent": "engineersdecor:block/device/small_freezer_model", + "textures": { + "front": "engineersdecor:block/furnace/small_freezer_front_s4" + } +} diff --git a/src/main/resources/assets/engineersdecor/models/block/device/small_mineral_smelter_model.json b/src/main/resources/assets/engineersdecor/models/block/device/small_mineral_smelter_model.json index fec8185..dfdd992 100644 --- a/src/main/resources/assets/engineersdecor/models/block/device/small_mineral_smelter_model.json +++ b/src/main/resources/assets/engineersdecor/models/block/device/small_mineral_smelter_model.json @@ -3,8 +3,8 @@ "textures": { "front": "engineersdecor:block/furnace/small_mineral_smelter_front_s0", "top": "engineersdecor:block/furnace/small_mineral_smelter_top", - "side": "engineersdecor:block/furnace/small_mineral_smelter_side", "particle": "engineersdecor:block/furnace/small_mineral_smelter_side", + "side": "engineersdecor:block/furnace/small_mineral_smelter_side", "bottom": "engineersdecor:block/furnace/small_mineral_smelter_bottom" }, "elements": [ @@ -12,95 +12,101 @@ "from": [1, 1, 1], "to": [15, 15, 15], "faces": { - "north": {"texture": "#side"}, - "east": {"texture": "#side"}, - "south": {"texture": "#front"}, - "west": {"texture": "#side"}, - "up": {"texture": "#front"}, - "down": {"texture": "#top"} + "north": {"uv": [1, 1, 15, 15], "texture": "#side"}, + "east": {"uv": [1, 1, 15, 15], "texture": "#side"}, + "south": {"uv": [1, 1, 15, 15], "texture": "#front"}, + "west": {"uv": [1, 1, 15, 15], "texture": "#side"}, + "up": {"uv": [1, 1, 15, 15], "texture": "#front"}, + "down": {"uv": [1, 1, 15, 15], "texture": "#top"} } }, { "from": [0, 15, 0], "to": [16, 16, 16], "faces": { - "north": {"texture": "#side"}, - "east": {"texture": "#side"}, - "south": {"texture": "#front"}, - "west": {"texture": "#side"}, - "up": {"texture": "#top"}, - "down": {"texture": "#top"} + "north": {"uv": [0, 0, 16, 1], "texture": "#side"}, + "east": {"uv": [0, 0, 16, 1], "texture": "#side"}, + "south": {"uv": [0, 0, 16, 1], "texture": "#front"}, + "west": {"uv": [0, 0, 16, 1], "texture": "#side"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#top"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#top"} } }, { "from": [0, 1, 2], "to": [1, 15, 14], "faces": { - "north": {"texture": "#side"}, - "south": {"texture": "#front"}, - "west": {"texture": "#side"}, - "up": {"texture": "#front"}, - "down": {"texture": "#top"} + "north": {"uv": [15, 1, 16, 15], "texture": "#side"}, + "south": {"uv": [0, 1, 1, 15], "texture": "#front"}, + "west": {"uv": [2, 1, 14, 15], "texture": "#side"}, + "up": {"uv": [0, 2, 1, 14], "texture": "#front"}, + "down": {"uv": [0, 2, 1, 14], "texture": "#top"} } }, { "from": [15, 1, 2], "to": [16, 15, 14], "faces": { - "north": {"texture": "#side"}, - "east": {"texture": "#side"}, - "south": {"texture": "#front"}, - "up": {"texture": "#front"}, - "down": {"texture": "#top"} + "north": {"uv": [0, 1, 1, 15], "texture": "#side"}, + "east": {"uv": [2, 1, 14, 15], "texture": "#side"}, + "south": {"uv": [15, 1, 16, 15], "texture": "#front"}, + "up": {"uv": [15, 2, 16, 14], "texture": "#front"}, + "down": {"uv": [15, 2, 16, 14], "texture": "#top"} } }, { "from": [2, 1, 0], "to": [14, 15, 1], "faces": { - "north": {"texture": "#side"}, - "east": {"texture": "#side"}, - "south": {"texture": "#side"}, - "west": {"texture": "#side"}, - "up": {"texture": "#side"}, - "down": {"texture": "#side"} + "north": {"uv": [2, 1, 14, 15], "texture": "#side"}, + "east": {"uv": [15, 1, 16, 15], "texture": "#side"}, + "south": {"uv": [2, 1, 14, 15], "texture": "#side"}, + "west": {"uv": [0, 1, 1, 15], "texture": "#side"}, + "up": {"uv": [2, 0, 14, 1], "texture": "#side"}, + "down": {"uv": [2, 15, 14, 16], "texture": "#side"} } }, { "from": [2, 1, 15], "to": [14, 15, 16], "faces": { - "north": {"texture": "#front"}, - "east": {"texture": "#side"}, - "south": {"texture": "#front"}, - "west": {"texture": "#side"}, - "up": {"texture": "#front"}, - "down": {"texture": "#front"} + "north": {"uv": [2, 1, 14, 15], "texture": "#front"}, + "east": {"uv": [0, 1, 1, 15], "texture": "#side"}, + "south": {"uv": [2, 1, 14, 15], "texture": "#front"}, + "west": {"uv": [15, 1, 16, 15], "texture": "#side"}, + "up": {"uv": [2, 15, 14, 16], "texture": "#front"}, + "down": {"uv": [2, 0, 14, 1], "texture": "#front"} } }, { "from": [0, 0, 0], "to": [16, 1, 16], "faces": { - "north": {"texture": "#side"}, - "east": {"texture": "#side"}, - "south": {"texture": "#front"}, - "west": {"texture": "#side"}, - "up": {"texture": "#bottom"}, - "down": {"texture": "#bottom"} + "north": {"uv": [0, 15, 16, 16], "texture": "#side"}, + "east": {"uv": [0, 15, 16, 16], "texture": "#side"}, + "south": {"uv": [0, 15, 16, 16], "texture": "#front"}, + "west": {"uv": [0, 15, 16, 16], "texture": "#side"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#bottom"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#bottom"} } } ], "display": { - "ground": { - "translation": [0, 1.75, 0], - "scale": [0.2, 0.2, 0.2] + "thirdperson_righthand": { + "rotation": [75, -134, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] }, "gui": { - "rotation": [30, 225, 0], + "rotation": [30, -45, 0], "scale": [0.625, 0.625, 0.625] }, "fixed": { + "rotation": [0, -180, 0], "scale": [0.5, 0.5, 0.5] } } diff --git a/src/main/resources/assets/engineersdecor/models/block/roof/dark_shingle_roof_chimney_model.json b/src/main/resources/assets/engineersdecor/models/block/roof/dark_shingle_roof_chimney_model.json new file mode 100644 index 0000000..df2808f --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/roof/dark_shingle_roof_chimney_model.json @@ -0,0 +1,81 @@ +{ + "parent": "block/block", + "ambientocclusion": false, + "textures": { + "particle": "engineersdecor:block/pole/thick_steel_pole_top_texture", + "t": "engineersdecor:block/pole/thick_steel_pole_top_texture" + }, + "elements": [ + { + "from": [3, 0, 3], + "to": [13, 6, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 11.5, 7]}, + "faces": { + "north": {"uv": [3, 10, 13, 16], "texture": "#t"}, + "east": {"uv": [11, 10, 13, 16], "texture": "#t"}, + "south": {"uv": [3, 10, 13, 16], "texture": "#t"}, + "west": {"uv": [3, 10, 5, 16], "texture": "#t"}, + "up": {"uv": [3, 3, 13, 5], "texture": "#t"}, + "down": {"uv": [3, 11, 13, 13], "texture": "#t"} + } + }, + { + "from": [3, 0, 11], + "to": [13, 6, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 11.5, 15]}, + "faces": { + "north": {"uv": [3, 10, 13, 16], "texture": "#t"}, + "east": {"uv": [3, 10, 5, 16], "texture": "#t"}, + "south": {"uv": [3, 10, 13, 16], "texture": "#t"}, + "west": {"uv": [11, 10, 13, 16], "texture": "#t"}, + "up": {"uv": [3, 11, 13, 13], "texture": "#t"}, + "down": {"uv": [3, 3, 13, 5], "texture": "#t"} + } + }, + { + "from": [11, 0, 5], + "to": [13, 6, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 11.5, 12]}, + "faces": { + "east": {"uv": [5, 10, 11, 16], "texture": "#t"}, + "west": {"uv": [5, 10, 11, 16], "texture": "#t"}, + "up": {"uv": [11, 5, 13, 11], "texture": "#t"}, + "down": {"uv": [11, 5, 13, 11], "texture": "#t"} + } + }, + { + "from": [3, 0, 5], + "to": [5, 6, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 11.5, 12]}, + "faces": { + "east": {"uv": [5, 10, 11, 16], "texture": "#t"}, + "west": {"uv": [5, 10, 11, 16], "texture": "#t"}, + "up": {"uv": [3, 5, 5, 11], "texture": "#t"}, + "down": {"uv": [3, 5, 5, 11], "texture": "#t"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 1, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 11.5, 12]}, + "faces": { + "up": {"uv": [5, 5, 11, 11], "texture": "#t"}, + "down": {"uv": [5, 5, 11, 11], "texture": "#t"} + } + } + ], + "display": { + "thirdperson_lefthand": { + "rotation": [75, -135, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "gui": { + "rotation": [30, 135, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "rotation": [0, -90, 0] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/block/roof/dark_shingle_roof_chimneytrunk_model.json b/src/main/resources/assets/engineersdecor/models/block/roof/dark_shingle_roof_chimneytrunk_model.json index 68d704c..9250729 100644 --- a/src/main/resources/assets/engineersdecor/models/block/roof/dark_shingle_roof_chimneytrunk_model.json +++ b/src/main/resources/assets/engineersdecor/models/block/roof/dark_shingle_roof_chimneytrunk_model.json @@ -1,6 +1,6 @@ { - "parent": "block/block", - "ambientocclusion": false, + "parent": "block/block", + "ambientocclusion": false, "textures": { "particle": "engineersdecor:block/roof/dark_shingle_roof", "s": "engineersdecor:block/roof/dark_shingle_roof", @@ -20,25 +20,72 @@ }, { "from": [4, 0, 0], - "to": [8, 7.5, 16], + "to": [8, 7.5, 3], "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]}, "faces": { - "north": {"uv": [8, 8, 12, 16], "texture": "#s", "cullface": "north"}, - "south": {"uv": [4, 8, 8, 16], "texture": "#s", "cullface": "south"}, - "west": {"uv": [0, 8, 16, 16], "texture": "#s"}, - "up": {"uv": [4, 0, 8, 16], "texture": "#s"}, - "down": {"uv": [4, 0, 8, 16], "texture": "#s", "cullface": "down"} + "north": {"uv": [8, 8.5, 12, 16], "texture": "#s", "cullface": "north"}, + "south": {"uv": [4, 8.5, 8, 16], "texture": "#s", "cullface": "south"}, + "west": {"uv": [0, 8.5, 3, 16], "texture": "#s"}, + "up": {"uv": [4, 0, 8, 3], "texture": "#s"}, + "down": {"uv": [4, 13, 8, 16], "texture": "#s", "cullface": "down"} } }, { - "from": [3, 3, 3], - "to": [11, 11.5, 13], + "from": [4, 0, 13], + "to": [8, 7.5, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 21]}, + "faces": { + "north": {"uv": [8, 8.5, 12, 16], "texture": "#s", "cullface": "north"}, + "south": {"uv": [4, 8.5, 8, 16], "texture": "#s", "cullface": "south"}, + "west": {"uv": [13, 8.5, 16, 16], "texture": "#s"}, + "up": {"uv": [4, 13, 8, 16], "texture": "#s"}, + "down": {"uv": [4, 0, 8, 3], "texture": "#s", "cullface": "down"} + } + }, + { + "from": [3, 1, 3], + "to": [12, 11.5, 5], "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, "faces": { - "north": {"uv": [5, 4.5, 13, 13], "texture": "#s"}, - "south": {"uv": [3, 4.5, 11, 13], "texture": "#s"}, - "west": {"uv": [3, 4.5, 13, 13], "texture": "#s"}, - "up": {"uv": [3, 3, 11, 13], "texture": "#t"} + "north": {"uv": [4, 4.5, 13, 15], "texture": "#s"}, + "south": {"uv": [3, 4.5, 12, 15], "texture": "#t"}, + "west": {"uv": [3, 4.5, 5, 15], "texture": "#s"}, + "up": {"uv": [3, 3, 12, 5], "texture": "#t"} + } + }, + { + "from": [4, 0, 3], + "to": [12, 1.25, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 8]}, + "faces": { + "north": {"uv": [4, 14.75, 12, 16], "texture": "#s"}, + "south": {"uv": [4, 14.75, 12, 16], "texture": "#t"}, + "west": {"uv": [3, 14.75, 5, 16], "texture": "#s"}, + "up": {"uv": [4, 3, 12, 5], "texture": "#t"}, + "down": {"uv": [4, 11, 12, 13], "texture": "#t"} + } + }, + { + "from": [4, 0, 11], + "to": [12, 1, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 16]}, + "faces": { + "north": {"uv": [4, 15, 12, 16], "texture": "#s"}, + "south": {"uv": [4, 15, 12, 16], "texture": "#t"}, + "west": {"uv": [11, 15, 13, 16], "texture": "#s"}, + "up": {"uv": [4, 11, 12, 13], "texture": "#t"}, + "down": {"uv": [4, 3, 12, 5], "texture": "#t"} + } + }, + { + "from": [3, 1, 11], + "to": [12, 11.5, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 16]}, + "faces": { + "north": {"uv": [4, 4.5, 13, 15], "texture": "#t"}, + "south": {"uv": [3, 4.5, 12, 15], "texture": "#s"}, + "west": {"uv": [11, 4.5, 13, 15], "texture": "#s"}, + "up": {"uv": [3, 11, 12, 13], "texture": "#t"} } }, { @@ -86,26 +133,51 @@ "down": {"uv": [3, 5, 5, 11], "texture": "#s"} } }, + { + "from": [3, 1, 5], + "to": [5, 11.5, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [5, 18.5, 12]}, + "faces": { + "east": {"uv": [5, 4.5, 11, 15], "texture": "#t"}, + "west": {"uv": [5, 4.5, 11, 15], "texture": "#s"}, + "up": {"uv": [3, 5, 5, 11], "texture": "#t"}, + "down": {"uv": [3, 5, 5, 11], "texture": "#t"} + } + }, + { + "from": [11, 0, 5], + "to": [12, 11.5, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 18.5, 12]}, + "faces": { + "east": {"uv": [5, 4.5, 11, 16], "texture": "#t"}, + "west": {"uv": [5, 4.5, 11, 16], "texture": "#t"}, + "up": {"uv": [11, 5, 12, 11], "texture": "#t"}, + "down": {"uv": [11, 5, 12, 11], "texture": "#t"} + } + }, + { + "from": [4, 0, 5], + "to": [5, 1, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [4.75, 18.5, 12]}, + "faces": { + "east": {"uv": [5, 15, 11, 16], "texture": "#t"}, + "west": {"uv": [5, 15, 11, 16], "texture": "#t"}, + "up": {"uv": [4, 5, 5, 11], "texture": "#t"}, + "down": {"uv": [4, 5, 5, 11], "texture": "#t"} + } + }, { "from": [8, 0, 0], - "to": [12, 11.5, 5], + "to": [12, 11.5, 3], "faces": { "north": {"uv": [4, 4.5, 8, 16], "texture": "#s", "cullface": "north"}, - "west": {"uv": [0, 4.5, 5, 16], "texture": "#s"}, - "up": {"uv": [8, 0, 12, 5], "texture": "#s"}, - "down": {"uv": [8, 11, 12, 16], "texture": "#s", "cullface": "down"} + "west": {"uv": [0, 4.5, 3, 16], "texture": "#s"}, + "up": {"uv": [8, 0, 12, 3], "texture": "#s"}, + "down": {"uv": [8, 13, 12, 16], "texture": "#s", "cullface": "down"} } }, { - "from": [8, 0, 5], - "to": [12, 5.5, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "down": {"uv": [8, 5, 12, 11], "texture": "#s", "cullface": "down"} - } - }, - { - "from": [8, 0, 11], + "from": [8, 0, 13], "to": [12, 11.5, 16], "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 19]}, "faces": { diff --git a/src/main/resources/assets/engineersdecor/models/block/sign/sign_caution_model.json b/src/main/resources/assets/engineersdecor/models/block/sign/sign_caution_model.json new file mode 100644 index 0000000..0a8e528 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/sign/sign_caution_model.json @@ -0,0 +1,4 @@ +{ + "parent": "engineersdecor:block/sign/sign_triangular_model", + "textures": { "f": "engineersdecor:block/sign/sign_caution_texture" } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/block/sign/sign_firehazard_model.json b/src/main/resources/assets/engineersdecor/models/block/sign/sign_firehazard_model.json new file mode 100644 index 0000000..7592df2 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/sign/sign_firehazard_model.json @@ -0,0 +1,4 @@ +{ + "parent": "engineersdecor:block/sign/sign_triangular_model", + "textures": { "f": "engineersdecor:block/sign/sign_firehazard_texture" } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/block/sign/sign_frost_model.json b/src/main/resources/assets/engineersdecor/models/block/sign/sign_frost_model.json new file mode 100644 index 0000000..665cb53 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/sign/sign_frost_model.json @@ -0,0 +1,4 @@ +{ + "parent": "engineersdecor:block/sign/sign_triangular_model", + "textures": { "f": "engineersdecor:block/sign/sign_frost_texture" } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/block/sign/sign_hotsurface_model.json b/src/main/resources/assets/engineersdecor/models/block/sign/sign_hotsurface_model.json new file mode 100644 index 0000000..eff0073 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/sign/sign_hotsurface_model.json @@ -0,0 +1,4 @@ +{ + "parent": "engineersdecor:block/sign/sign_triangular_model", + "textures": { "f": "engineersdecor:block/sign/sign_hotsurface_texture" } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/block/sign/sign_laser_model.json b/src/main/resources/assets/engineersdecor/models/block/sign/sign_laser_model.json new file mode 100644 index 0000000..65f8d14 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/sign/sign_laser_model.json @@ -0,0 +1,4 @@ +{ + "parent": "engineersdecor:block/sign/sign_triangular_model", + "textures": { "f": "engineersdecor:block/sign/sign_laser_texture" } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/block/sign/sign_magichazard_model.json b/src/main/resources/assets/engineersdecor/models/block/sign/sign_magichazard_model.json new file mode 100644 index 0000000..16f74ef --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/sign/sign_magichazard_model.json @@ -0,0 +1,4 @@ +{ + "parent": "engineersdecor:block/sign/sign_triangular_model", + "textures": { "f": "engineersdecor:block/sign/sign_magichazard_texture" } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/block/sign/sign_magneticfield_model.json b/src/main/resources/assets/engineersdecor/models/block/sign/sign_magneticfield_model.json new file mode 100644 index 0000000..cb51074 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/sign/sign_magneticfield_model.json @@ -0,0 +1,4 @@ +{ + "parent": "engineersdecor:block/sign/sign_triangular_model", + "textures": { "f": "engineersdecor:block/sign/sign_magneticfield_texture" } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/block/sign/sign_mindstep_model.json b/src/main/resources/assets/engineersdecor/models/block/sign/sign_mindstep_model.json deleted file mode 100644 index 5809d95..0000000 --- a/src/main/resources/assets/engineersdecor/models/block/sign/sign_mindstep_model.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "parent": "engineersdecor:block/sign/sign_decor_model", - "textures": { "f": "engineersdecor:block/sign/sign_mindstep_texture" } -} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/block/sign/sign_radioactive_model.json b/src/main/resources/assets/engineersdecor/models/block/sign/sign_radioactive_model.json new file mode 100644 index 0000000..632a374 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/block/sign/sign_radioactive_model.json @@ -0,0 +1,4 @@ +{ + "parent": "engineersdecor:block/sign/sign_triangular_model", + "textures": { "f": "engineersdecor:block/sign/sign_radioactive_texture" } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/item/dark_shingle_roof_chimney.json b/src/main/resources/assets/engineersdecor/models/item/dark_shingle_roof_chimney.json new file mode 100644 index 0000000..a1f1623 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/item/dark_shingle_roof_chimney.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/roof/dark_shingle_roof_chimney_model" } \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/item/metal_bar.json b/src/main/resources/assets/engineersdecor/models/item/metal_bar.json new file mode 100644 index 0000000..416400c --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/item/metal_bar.json @@ -0,0 +1,43 @@ +{ + "parent": "block/block", + "textures": { + "particle": "engineersdecor:block/material/steel_texture", + "o": "engineersdecor:block/material/steel_texture" + }, + "elements": [ + { + "from": [0, 6, 7.5], + "to": [16, 10, 8.5], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 7.5, 8]}, + "faces": { + "north": {"uv": [0, 6, 16, 10], "texture": "#o"}, + "east": {"uv": [7.5, 6, 8.5, 10], "texture": "#o"}, + "south": {"uv": [0, 6, 16, 10], "texture": "#o"}, + "west": {"uv": [7.5, 6, 8.5, 10], "texture": "#o"}, + "up": {"uv": [0, 7.5, 16, 8.5], "texture": "#o"}, + "down": {"uv": [0, 7.5, 16, 8.5], "texture": "#o"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [16, -87, -56], + "translation": [0, 0.25, 0.25], + "scale": [0.36, 0.36, 0.36] + }, + "firstperson_lefthand": { + "rotation": [-5, 55, 3], + "translation": [-20.5, 0, 0.25], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 1.75, 0], + "scale": [0.2, 0.2, 0.2] + }, + "gui": { + "rotation": [0, -180, 0], + "translation": [0.25, 0, 0] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/item/sign_caution.json b/src/main/resources/assets/engineersdecor/models/item/sign_caution.json new file mode 100644 index 0000000..c5d900b --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/item/sign_caution.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/sign/sign_caution_model" } \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/item/sign_firehazard.json b/src/main/resources/assets/engineersdecor/models/item/sign_firehazard.json new file mode 100644 index 0000000..725314e --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/item/sign_firehazard.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/sign/sign_firehazard_model" } \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/item/sign_frost.json b/src/main/resources/assets/engineersdecor/models/item/sign_frost.json new file mode 100644 index 0000000..519a379 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/item/sign_frost.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/sign/sign_frost_model" } \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/item/sign_hotsurface.json b/src/main/resources/assets/engineersdecor/models/item/sign_hotsurface.json new file mode 100644 index 0000000..2afc84b --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/item/sign_hotsurface.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/sign/sign_hotsurface_model" } \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/item/sign_laser.json b/src/main/resources/assets/engineersdecor/models/item/sign_laser.json new file mode 100644 index 0000000..ad0100e --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/item/sign_laser.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/sign/sign_laser_model" } \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/item/sign_magichazard.json b/src/main/resources/assets/engineersdecor/models/item/sign_magichazard.json new file mode 100644 index 0000000..99d7cf9 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/item/sign_magichazard.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/sign/sign_magichazard_model" } \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/item/sign_magneticfield.json b/src/main/resources/assets/engineersdecor/models/item/sign_magneticfield.json new file mode 100644 index 0000000..c81c1f9 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/item/sign_magneticfield.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/sign/sign_magneticfield_model" } \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/item/sign_radioactive.json b/src/main/resources/assets/engineersdecor/models/item/sign_radioactive.json new file mode 100644 index 0000000..6950126 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/item/sign_radioactive.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/sign/sign_radioactive_model" } \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/models/item/small_freezer.json b/src/main/resources/assets/engineersdecor/models/item/small_freezer.json new file mode 100644 index 0000000..43164d4 --- /dev/null +++ b/src/main/resources/assets/engineersdecor/models/item/small_freezer.json @@ -0,0 +1 @@ +{ "parent": "engineersdecor:block/device/small_freezer_model" } \ No newline at end of file diff --git a/src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_bottom.png b/src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..4d89bb08f136a43709cf0bb5a608dd7676fe2e03 GIT binary patch literal 591 zcmV-V0z}-<*dheJSnMrF6cc+v> zW)cy&JFPV$f?7&BFXnls_fBSFW~eHyHO3g!S{Y-InS6YFoQ3M~>pag)(}cTkm1{*r zP*qfw%w(D-%#6p!N7i-adcAH6rfFiHXFlW(s^Dh02N6Mf5*d(5t(9BpJn0+jx^5~( z1OQb9AUqJ+&b3xlxA$YUyq)J-D|O!x5lHCV`1kh@y?0aIWqrS>6H!4$DSMQq6ngIpPyvr*=t51z_Kj( z&O_`f0S@Ecof;8){{_iSqPz3{{=T=RtjmIxZ>S1~pC?GYca9>hH2{A6{Edo|BpJcI zDq{?aU9lam11ts3$OOU7$;eYCU*z6sMC3U$dm5FOmls5Y?{(m@J*saAM+V`+T@#jN zVfB?U24ie2)B~c|*H`9wKB+un9AjW+m>Eap{>9L98cQiG%W_U)L{RoP#~55L7fLCZ d*@?2d^B-rTPm9%i;RpZ#002ovPDHLkV1g)%`cwb_ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_front_s0.png b/src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_front_s0.png new file mode 100644 index 0000000000000000000000000000000000000000..9704db6ff0376d78a1ab14dc91b1331c9ec8c153 GIT binary patch literal 646 zcmV;10(t$3P)lDMUP!I-7`@J zq5(xB6C%MPi?HBlAV1D8v>+j^NPsl`D%)9fGpTKreXp-i$^G43h5fFh0+?_0{lu`gNcg&2OGiHXFky66kQ9xC3K!I@_SydGoAR-9h_V$*h zX&8n95t$WLad#qu>+5Tprs2=?^W3-;53C}t#8e96HhsOlP3MODG#=v0#k>*P2=DFrj5UdC}VQqG77;m&5WnHvDB zm^07_7$ei0()T?8(==fbp47CSXMYq z6GRXZeC&T6Imn`lEJamS(RUrMFE4!k_6;kAh+wr^@%sA8G>$XU3+AYji9l0g90tC8 z|4!31oSmNoP}TJjrtNmikDD8srlC6=&_#IWU{QK_c%W@t_WM0`U9(=V0XQ5E4DQGK z(~}b-;y*~DiY|NK?RIpB18;9{Y&IL*ov!Oz(=cZ##|SJjw!A g04hQ(TQM{K0XV>2Z95sYS^xk507*qoM6N<$f*vIoeE`vf#$bBnU>(42SHh%7WB5$il#6ZEl-gKkvQ%*!+m_K(%RH?NhB8Uho0wNHByQ8X#)rz@OYh{`yJc4S*I8D@Aad#qOF1i#S z#}QE_1M^`7_xJboeb3==_}WqRSm5^dmcH-#@V`GXP1F2?2-OS`A#dOOj38Layib1u&@>G-Km}@m zsi2FPs>)0I(^5ysO-xiXN`jOU0JT;^p*na~n(U;uJqpWg2oZsb2%Sv$Vq>k9QVL?r z<>ELH?wp;Sp{f9+7(hUYV3d}FHw?pYoFJ=^Rj^UX2q`7Z4EH$+md+p`cl+Oo2vSOD zdqG4{N?{LVaY%r0RNdV<8-AM|G9!yBVMb|Nnr5D2yWP^1U$9z<2%4s0x7*F>TXYEb zSwxoZ(>StTuj%`q_g7a4(3Elv)A`%C+}+*L_dQShJ*rAXe9b{b@c8)1X0u_vUQpDb)-EPM)49D}!i+R;~g2hi+Uf622V)ydG^Yb%Z*AedQmX0dIYPG_bhN?Piz_QP4 z=0yYnrf~$IG|lWgpdy4SIcKa^a-Ak#dGM;N0BL!J|K$P9fs4h??>zVh59-xtqCy2q z4$@yI^5Dflfi49E*r_~_A3!}A#za@I){45T(r)i>ghZHXmYR}5^u7f&I3~r q4;l@U$p7Pk)=CqBeCNS8dGHSy%)85agrn#H0000VC4ikMi$xm3|VI9wa=m}G?G|uz`!V;>FH*%ykKW!b4M2VUcDc= zfA`K~(-2f~z|0WpDWxE)_A?d|B1qF*Al?;HQfV+O}mJN1{koY-U`(e$9Hl=JC@fj>jV!0=CGCG4f`++x&)=Enxju-H%@7gdm(?$TklMtn@B~29G(UVk zUkSFDsjBSK&kK$cqtBQbU6=?j>aUzL#e`K0>y@%Q6jIxsjHT2>+znMxIyH*d7<0~~ zlz7nzFVB?!4uxZOycAZe6{=db`wSwe<4iP+B`}WTX#;Tn{sM+#>3kQq@_aWhie(lia@II`RA`1sc!SkAaR zP1CU7?`!)OAH0;B0t@>*O>DPY`o8DY=#BAVYAs# z7D83697zw;u30P{2fkea6E4yXvON{kW9nQ#2uUr8pZVqE|L002ovPDHLkV1g8! BIZXfn literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_front_s3.png b/src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_front_s3.png new file mode 100644 index 0000000000000000000000000000000000000000..789c3eb05bac115c92f2d00831616b5d52ba5a60 GIT binary patch literal 689 zcmV;i0#5yjP)Rrq0kpUjr)T=76wGQ3by$UZuimTI z^4ps?=0m`#VnD4GVR@}JM3qtsB7%sZA|L{0wAN5nrItc%jZz9ZXPOzMR_2^3rO;Z# z%oflC_&m>uDjryxW?WxiGYkXMH2u%0dIY$-x?&gx{=L7)drzwsH8VsNfSa2eZf|dK z&S7TcoJlEBWkr?Mu@4Yq#LVy_i{e@5dlmf6wsI?MfTnhaLzsmgj_B}Z-ice1?e|&fceoe~{AVR4X5y3yKegcHpMP9f) z_`u2Oj=uNwJ)~4fsqp;yj#a3rDv$9c03wQd%SajN%M;EyD0@EN{RJ$;Q|p#3wy%%I zaxmRm#j7YmXPOD6Gzh1}7>~oRHVp`vHCC$?IcI3#EmJh2hA|UJ&5=?9K;s#G@7Zkv zk5govjgtPO)=F!OFU56WhF_0=V`ez#(C&;fJ`fIu&T}HjBE@y*$8@gKKd5umTJfTa z)k^F-LI|Xkc-l|=`SEwg{U@fUPlOPdTjcEg6(SiC!CG6cz=1u_Gnbc_48y>BH4$B5 zy?e=YqL>-AR(`p9%`i0X#}U<~uHSNyb3P``dykii-e)$O4PDovs^2Bi%nlpCcjwt| zw>*FO!hXM}?|ZB@o)3&F!gjl*)w-~&E*@~u^X=1!2m<7JUUDD8!V0Jeri%BTS_)qQ X2XbKK;nCB%00000NkvXXu0mjf!x}c# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_front_s4.png b/src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_front_s4.png new file mode 100644 index 0000000000000000000000000000000000000000..87417f4ba4589af070955eea17796e41fc6e1fe6 GIT binary patch literal 707 zcmV;!0zCbRP)A0u2oXV=1=}2j#c+hV%ZMYe<^n8Oa*J#twFC=-fFv^`O;1u?^`31Om5!ITZ0onb zUw(Y^CUVn|R0+V$5aw`qM3q`AB7%sZA|L`0xI3zywVNvorR?K&=&EmSASIZ969xYtrtHAKv~%txg0S^$oxM@(#(zxZi;Y)eI3K zf9$^ngtlw>BJChI9G#rfHHofC>?dO?#^dguF5aW6d}_Z0Kt$0T1*rpz`k9mx)E%E| z55QQA(K`T+`wrZ$gDu#7_?zE<{h4txia9xFO7k_521E)XLb%Up^R&H8 z6X)mWEOcPmLz|4vs$tzeaP;CUR-2c6|N0wNs}&K!fge3^P)d0wG3QKEZ|UPb>tpD~ zKM~RA`T>6tnL#=@jR-cI4UZ2G>~=dAiv{7%<1nE52P(p5v%$@X2vl{x0Z)1kt`iXi pDAP1^-!$`9Kt%{ua?V(-{0|23TLWAzaS{Lk002ovPDHLkV1iizI8y)s literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_side.png b/src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_side.png new file mode 100644 index 0000000000000000000000000000000000000000..773dae2bb13b2f3a9a496b0f524e4eca6c5a66c8 GIT binary patch literal 641 zcmV-{0)G98P)?{ch zB0=I5!5btG#8ZRBC5OOrLfRV(Gh@3uhuLfnmMqIEcU66sySuwoRfb_;nP(ysRV6cN ztzl-=S^*Fd%nT6$ptXi)Ceb^Gw>Nt4AVTzxyE9D_Wf%a62!>LqwVw87h6D5nYOVbI z^^2F67v_0JMELaiGpb5NkeS@x-m=^6czu0kv)KTw6PPL$xWB(=zu$9nb3^Z))*6|4 z5_oucV87pUadAOimQ}!10Vu=3cDv>L{2W!K_f9E=<#-Wb97nFNuQ?nJh#BsVdMRrl z$Djau@2Dzf#&)|s1^3UtyQ8YK-tj;71Gi3;;4o}Xo+AQLK}5*2wUOw7)2M?{XjBYu zIGGR$qX?oxi3YYNp8+a@N@o^D5SCC7qvCj>qgm-0Sb&Oxu05L>5djJA&SD#)&v;)* zghIzPDv^nZuwWRgUqMI`b*1(HZA2QXioiO-x5MvMeOWlmGsbbm-B0kS87(TkcWSMt zWoFFtjH@cDO05-l=kWH1s^X#5_&paf(_i zWb*C%cSK|bECN+U0U{H3=kf88=jUh49Yn}X#&JYMP*t9uo_N{qsI{&+iQw)|J07?h zS65do%fc`We0+TH{{BuxP)cDag)d*fl9{XJQq~N-l=T%eT5Bt1$FKaa&dfy3I3LFo bt(nPR(4kM-s$D5f00000NkvXXu0mjf*60`D literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_top.png b/src/main/resources/assets/engineersdecor/textures/block/furnace/small_freezer_top.png new file mode 100644 index 0000000000000000000000000000000000000000..b76daf18425b8d26fdad1ab8dce1f8800feba88b GIT binary patch literal 607 zcmV-l0-*hgP)ZrwN#L|->a$(HSS zHSlJ9hq;S4IYyB4vHDd}US3|}I1X~oxH|wT zCCrRc3ez-UW&o%vW=2YhQVRRNlSKp(AtHEqc);CswMOrqoHN5rK#>&oipZwr$+p+>qU!ySqDpyRN`*)?*$}~;P(@atwA}OUaMl&NK zMoC13ZQJ<#chK6OxHkYIVmttx5CKXl=f#V~q>1O}XWX5X60J41C@8|El!L=>5KAcl ze2;rnl+YmDkx6N-G5JQnl&kknDFp@C_Z@(`ZR~X?Jcdm!rlimEb~GKk+#6YuZuOcCs69LI4&?7gF^Bk$|3wUSaA|KOUInQ@Ii&U&Bo@B2=z tmD}4}uA=28jt`0002ovPDHLkV1iO|5EuXe literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/engineersdecor/textures/block/furnace/small_mineral_smelter_front_s0.png b/src/main/resources/assets/engineersdecor/textures/block/furnace/small_mineral_smelter_front_s0.png index f75510d897e6da44a6c187dc729b8eec07eb6f7d..80e3caf85988357fc7cc65b2e553c9980b7e49d7 100644 GIT binary patch delta 624 zcmV-$0+0Rb1dj!fDt{UPDgZZLbW&vi000SaNLh0L01FcU01FcV0GgZ_0006nNklfY0G`{`5UoJlDWfSDmc0O5|PGEWntiin^hAOaD%JAYYJndcb*bH~icIb&v+ z87U>q9R*Ys2NW2`k*coA01-g|*VosyZObqWh)7XX#odVruCA_V+m_$=_oeYXBcE?? z13*&(pzAs=FE39M#4>6`U}kh($Mdr@n$?O!-;+h8Tr%Uu`8k`-hWlT?7>1#!m@$qc zIcHw(c3fOsaDV9g;)_UG!OW=Zn&WYIe*XA@N1!5j1g~DdW|}4dM5LH4LcWpjP(jWW z-_l0_s;W9QiwNqRv3bVbQB`i_JBL&uDkviCJwXI1B~nVvW+YXP(+$%^-885ws!9M2 z6XAi12v2iKVV-BqjAmKK%}6;TB7{5Z^%`9oA5+SI;(tjQEri42KwZ~N(}YEkQ!2HT z$T>4F$qZBo#r*u$-{S5h&1_VO2%4rT=BdIG;WSMUK}7Jy-k&(gqKYh!>bmC8_dNXl z%d0nUuz4mTsH%#GhXHEGYim=^oPl6&+P}U`uBlE{^JB?#mWdSPy6(LklKlUGK`d5Ty;+Ovb0000< KMNUMnLSTYSV;;Q# delta 587 zcmV-R0<`^)1?mKlDu2NMy#T#cVAy5=000SaNLh0L01FcU01FcV0GgZ_0006CNklMzfscXxa(=;LS=JYVNF2}f^d83X;-kmYUG=Ig z&reTYHw~344wxB2d2-H(Dk&vI1Q9_+Km^>$IisqIrG({7N`HwMBiWr~#uOtdC34QV zdl@r3T8OJCBc#^nK6qc>KRnbs2Dfe^1}{{C$6?u4}Rx^6UB85us8A5r$#l z?(PmV!_4qms=H%m48y>W%S+m}WgJIpk>c3QxVpY(yUhow6o{%yjFHnIfS3|mRpgmNcBc(t0eecs%}R_R1o9kXN{M#1lg+5A zYPocFc801J7pf(t6Wtgi<2V)t-xOtcRCNKGb6!}vJAZn5AyE9e)3)u>0TIDxbtk}u zqu@X-s<;`UZE2c@aU9w0c5H8N%O!W35ZHZul=huC`^*ZT#NGyAO9aS)-+>geGcQYuL<*8$VF+$nB(&D8XJ@*q zF6i-s2oS#bChbwx|9@5W%l+H8kxL<|5`dW@w9nlURcft>2!A4iihu}2;O?lZVzpxK z)LNOQ36G$fF-{Y;R@|M4XhrAZ<2WL!WS~7paCdh{-}fAk$G~=e@udgvP%#4_&Mg(TYZnxv}%S#rE1;a3qMVezX-A`+eKKXAbUd3e51Pab&aE(DyxGTwNhR>AKT0onKsVdwWaY_iUe@ z&{^$i4}T(phldAtyB(X&hOX;aE|-W1hr@wk7*6k(uU-)mvx1qZ%ony=tvI}Y&*S4G z%jJ@A=P-9v5mu`eJ~vd=#(>$+^UjM10!-rwKvxO?0jLO}O3oRpm0YKZ=R9~OD?pmB z@ZWg=kWwPN9rmX@_>Vjo|NNaWZ#y4BTE8?8l1<|2Pln4Je4?Y0iAHs{bVWd3(0000F&-E zA*g}~(=>5)b%mK>X85|QyJKcd)5M#L3;Moio@b&+Lu_VTzJ1I2`8i*|eBp375JJGr zSeAv@bqvG6ZhyC9etxEu0?;6s87U?B7kP)TBkmRL0<~1)?mao@Rv*6~^qKvbIwr4){hLI~ti2webe+bmY;Q#ujr?u{F>)*z)s zU1cn#v|?@3#RXZFIy*Z7@2n+;wo`*osp)d)9I)a!dS0YS zmzSj(tLqx;fQsO%#2B$sh$Ux^d7!IQ0)+Jy{x=U;CG}N}-+AzpJXpScrk08zxL4x4 z4=>Auy@Eu63Z4E+9>fSDxEtBZ%k#h&!%IQCh%s8i5E1``hzCJL z4+e!rF))V^78KlZHQ6D_WHLR~(^d6)=+5{7yD+(UNnfjZKYyNj--nXj`}ftRDTy&C z5JEtxz8E874BmT01QEfAfC#7(W5gI^2;LK7#CuO!mPA#22u#Wn?>#X_RJ96P2cJwP zh%s28I#gwQdz)UbM^O}iXEbISU~_YmUa!Z~<72F~#1N2ocXt&L5@SGwe!tJg#s(n- zLI`MGs;Uw~pnu=*b7Og#Mx%jq4l7c19714qZH-o|#qrS*MNwdqgiyC-t>uMIhxPS! z+<1)l9-wL=gg};M@DF&e+6zWL>M8=HSvDP}*5V>tTU+#cJ&wm?OkM4C4pfzHw@bg@r_Wf{$86A>ZL zbDVS2^W~)_RJE?4CMxxYwcBm-(TL%2NVC~QV}B&CGa3=v?KZJaXpE^CQ1^2=^CE%( z4QtM0wnbo{?`WpNs^$kTI_2dJjVxj?1dxqc4|f_21_i&$O`KS=hRo)JZ@Z2pF}%K!@#VvlXZpaN z>3kq zIQ;zrGa2#Xyz=#dpZ$IC#i8Du2NMy#T#cVAy5=000SaNLh0L01FcU01FcV0GgZ_0009_Nkl(;H#B$L=P9VOEUW{`kp5pdyRma~~3Fj4#|?gW2?_%lQVH=>&n zL1!_L0pkY@j0Ka##-!8T)wk+?xv1(M5gh1j+@zLuZ=G}A_kW!G)Rn`B50lPwGNnjB z2mzseVvLAVc<&JrLMwC*D;5{Kmy!SZgh$-Pipm7fGJuya7N^Q_Cc+)h9 zQfQ!EOo@Yo1In_buIrZ>m0AY4d-pD7S@P%E8Cq*%2*?MAhY1lfr9gzyXvFUBE+GU$ z2&AsmloBBXMt`FbuWfBn6b05=v`DKsguq~Xn~jYPPESs#>zXXf2qDlk4LZ*m4u|aQ z>|p0}y!QaDgb)J882E>I@9HTtZ#bXV08D#5oOA645qt=(#FP?QmSKv5EX&CA9AgaA zx?X<#;oGgLF}4<_7!hbqR7&BTV-X0zdCw>JdyHO8`G561aXJSj=1#(PiC9Ur}fhH<$e(ophYQC2$-TE&vUG`TwY!> zUw@s?9)DZVn|wJoRI_nAeG4CAL`2YZ=DDU}I2=-zCAS9y1jvn94%5cXo9yrJQ-7*3s;a_TyIkMeY)x$|==4Z;!utI_)ojLOGNIS& zkz%CkGAa@J{XVfvsFZ3wpwqLMc@aSX*E9f_Jb!Op2b2g&DYVuE@6p~l7Cca0s|3ip zQ}}Nl0AyK4>bh~wgIDn29X+G+ITKp}aFN|wjR%)?!_-a@A|JhXV|5;UdfzY}*F00V zsL>QgR^!2UPc14_y#H3g*FT;AClB<(-2_-`$@3iN9FHdJY-AUVPtLe^NAtzSiafB+ zqJIZ{zW+nvyXscw!Lf&|$LZxY53YIefAL^XTfB#h?ti&54{SYS+`;5ZJoxy*Hk0Qs z`0YG0_lCl(uf~Jpa*AqZym=$>&Cg-=`@vVgBz~{fd3>6xG diff --git a/src/main/resources/assets/engineersdecor/textures/block/furnace/small_mineral_smelter_front_s3.png b/src/main/resources/assets/engineersdecor/textures/block/furnace/small_mineral_smelter_front_s3.png index c7b176ae2711af9dee06cd5905af2739c852d9d0..2955f1731c026947050a9bf863ed920203c60ab4 100644 GIT binary patch delta 930 zcmV;T16};R2fhc8Dt{UPDgZZLbW&vi000SaNLh0L01FcU01FcV0GgZ_000ACNkl7Loe-)9?S7Le={0Wy*$egY8^WM^Xj0}|4uPKo#vNTj3$BuJzj za&nOavpV6uz2m&bv$NY>T?8|`pc8juGXhWAqpEt}s(Ms%`hVbo`4A|a!vIx9Xuq5@ z;v6X@L0k#oj5=g^eUoJlDWV8&pWHy`qozb~vfTN=$hQlFGM930S0r=*ksS_!I3 zS(fk*^Ugl3@N1s1Rbkn9_~SJ(#`Xshk}4vC|I|G~9C#o2x%e1>5CWE!R40m_C+x4I z>Dj_{K9gT)im>R4Q0D?OqbLfBqG+9u84QB_iR%T*s()Gl32CS$bPCXOap&h-0zoO7Lu);s^g`s8c~Len&a5J)M}AFL5Co{=tpL;JfFMS-f4 zb7n>W1Tg$h`hHu!6l^$$nNgM{e!GvoJ0M=qNVP6q&pGo$`k?KQDqft!R4J>95CTop zFquqv_R)*NIA*Z=~L9lCPX#<_=k_QVJ?c~0O z2Y)%j^r}WreKmFK?*sy+QB2 zUB3M8ay1^fUO*hgNkpFf@k$=N@;=bp83@?(r!=Ex_4{Bps?nU;c`?W+T^we169Pf;iHqkrJyTWxU)7&V9^Ak0b$(tWPea>W*i(Ivb(#>@zbZQ*K4Y(!p!LVo;n1k(;jJ;R6w}*&xx~sj7$%5x{z~b6R4^xQqEZK;1J~%+D4ifx5m2r;D3$T5Fo}#8QYk1ril>^f}G9C z&4hHaz}?x|*+EqY6{@c#m>DT0x~>BtrNou#RiqZ|=n3m*tF56M8JqUkn->D8D(+6x zG}PCxP(GTHUaqlaCTH6kJoqRSpcYl!jMy}U5a_y&#bUw3AIDa?6Jlg}em+d!#)nc6 z5o$*BQh(nwolcp}X52V9K!6bAc9?drUE|K3JIrP?PFAaJwc9yxcOE}}%zQp)I-L?@ zq-|S7gynKc*LBbH3S5Mv}9?t?kH6ShB$6#g3zYE>nrwB-Rn%9-xBW2C9^ z(?1bu{=owPHyZ-H$pbT^iIMKfbL#Sv-ma0mvgN@>hNy!3Ai>OVpzAt92*WHSSUp`) z(ti>?JiIs$_CEW7#m_={nbDx+oG!+LufKnj2YShaOCJ1BJoxtWLzYJi;^YeL$2a)u zhog(}K-++bkQNE~$k4IHxC~D63Dr`+!_zwg9m>BiQPfBWO6?Y00000NkvXXu0mjf D*wwWe diff --git a/src/main/resources/assets/engineersdecor/textures/block/furnace/small_mineral_smelter_side.png b/src/main/resources/assets/engineersdecor/textures/block/furnace/small_mineral_smelter_side.png index 2f94b0558d250e793e2f0aeae5462d1a2460ce28..9be7ffe925315cf7cafbe2a7da09dd17d17c9c84 100644 GIT binary patch delta 616 zcmV-u0+;>X1cwEXDt{UPDgZZLbW&vi000SaNLh0L01FcU01FcV0GgZ_0006fNklg=C8b0u1ppBtrG$t8P=9O1A_8xXH4wpD z!_1hbi98GdxI076lv1{RN(lpK?vzsa_4_yP@9)g>jEL~<;sRC0-H8Yu9v;~5_k4VO zaCUYE&=n+A3h?yw#Nlw@{{EiU8nsp;Vr%gH{LJBS;QIQSvMjwpQUxFn1H0Xh%gakt zmDUdqcDpUO|NNU7s!DAQ`*Zpm z5y8zF%7Ca49(Xt+f`||iv}m~Znya(OKt!Ms!O7El*hhtcsxm~uyjxJ!t)aU!#M0HM zDx+5%VIrd_C|vjvRGBe|V3dZZU=H0lP*v=oILE_5f`9K3TMox`LH31FDy=nUj1z`? z!~bW^{_;OCGnQrHT+bQLM$Bx3M^mDfLTimu3dQ?MDKRf|x1g$&QZO@)pPyY?&JeMo zJxvotAZr$_wQeIKV1?=C<_1KVripo)h*d=?1tR$I^Cu$G0dq%HQ2>v?%y@Zu;qC2> zWCp9pabX-05mc4e*H_;6drB$WM9j>nYr#_D_V$)#Sr~?a)9J+5*B9t&p9h#K59LJ5;h~QtQUsKPSjGp2E0000J%;1>OXZDu2NMy#T#cVAy5=000SaNLh0L01FcU01FcV0GgZ_00060NklhG8J31VDF3 zQzDl_cPE;ms(%xdocZ?sJICXZ%jH4{fvc-4LGQ)08(ELCf*nAy@lz-qPP z=H`ae>4X7lhJVBuN5Q6yb4#jP^Gno48uV09Wz5jh%pjEz}*-0 zl+qFd2qB;%gb)ySr`Ad-<-ak-7&#mcsOs3O86kv)q_s8@{ChDACnAUl4-XGKJv{-C zQewScFLyJwxjW5$3C@Tj!u9nv`~9BF<+4cpFe)^^71k&KP}99wOTZJetzclc%+oFkeHb*0afMeeoxMsloIFj zne*@8_&B6^jFIhjOLwP~LQHA2^1P}tyKA!YOrn#ZYQ}cG9$RY-fIk5>NgA^xLEiuX N002ovPDHLkV1mcf3yA;# diff --git a/src/main/resources/assets/engineersdecor/textures/block/sign/sign_caution_texture.png b/src/main/resources/assets/engineersdecor/textures/block/sign/sign_caution_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..863bc3d0d15b2176a820a6ac04a831ad552af1bf GIT binary patch literal 1114 zcmV-g1f~0lP)mrpf6@$r1i1f400amMXD`hI@Z&c(pzAOK z6LFO6qZnr|ouV~62|%M*;M*(LSQ~)_9X0#uxyc;Oo#&4qK%-Wp|000WoFK;Hxf69L zsqR-V&eISd+7WS->=#}>f;&8ZQsSP2P95E!Sr}3aaoE}~o;v|JpL}|ahs#~4>i*FO z3!FJW$M;|UGL#l{wCshIm6DX4lpOPXx7w3KYe9#teXk4lXimw&AymbG?b2{s&|$Kl zKYch;Zhd}3kbZB*Io=u{iiK?fBy$=e``!nFHyQyWQ;&cub5qfqzLW#sU5ShB>)4O!Fm0{LJbBSccGlMoiXeEE)xiTronTP}a1f++M0@_wj#$_ffH?$=#kc3Hyz;{0UVj&X zvdrz+JvSf~K}B%j%=x)(S%{k_@1QVu>bVRk)nNg{fsa2ti6CfD9LGItLIkWdTC43CWyPCX!{I9C+cSi7mD86o76rq9opU?{rQ? zrRsP_(2bgW9v2l<6%CpbaB4QTa)fT=`<|zJY$AE_UO-jl@;fuMj_sp$Y%dqyJkI#D z4a(9gr;y!{3`c0qZoWsz;K9Tk_5@fwKgWyh$vjJ8R>J&8}bK%)|Za`$E@2aJj(Lqq-?s~S*BPAan|GAP!~2PjLU z?B?g@p19%vg&M%a)in;c7bqG9-+gr*w?ye)=^#)jNQk7AvKAzu0$5_Tbj(w>VNi-7 z^|+XU2FkJ|9G&4{QSkfqpV?cCtq0H?i`>6=k3&;aj5i}L5wpDCs|qm$M1*8Q&`^sk zNaUF!QKtMZs1n2a@q}R^@<*pboSa~6fUz2YguvL!eU|TZC|&UNA}6R3B=3$v4ezl7 zly0~Sh$9$dp+Bx7Sha~YeTj#UmaqXa#{NTI%@A}W%bL~az?9Np%g9y|uip%gCtufI gK%g1*|8qM28|h2{LvzXYbN~PV07*qoM6N<$g61{}Bme*a literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/engineersdecor/textures/block/sign/sign_firehazard_texture.png b/src/main/resources/assets/engineersdecor/textures/block/sign/sign_firehazard_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..29930fa10938b812b5bf0984052bc1dc1abc710a GIT binary patch literal 1268 zcmVr&Qn7}k0GBLGeXw_X55pk@0m zI(9vP$T|QpIA*e0DwQ&p#=|IRWK!rA1QLZQa`|zR*5Uxw{|JBp*1&-y{Q&&%=_RNr zG@wM#2>U=h2afEfyEhF$JTbu6@1LdIfC{Ej_C0;+Xg5{1?bw6~Ox5}?0tmfg#WQ^H z{@PYjeI9?dpSWn<8DSb>Kd`q8L{Pw^sKAb%)`nCtjj#try)rhDXC`;Mw&i1o`|4J~ zG{hbOl(F$S-hSsi0IEuNCSA7*rhfKO6+CxwfwT>nBnI$ql`}$0eJLaX3Z+B3P3~iA;aTnpId4fCrLRdGeWo8W`_A+36Cw*#hb-1o37<2b0+XGr1CHFO1ct!paJ$ z;+&%=(}oy>ApCY=f-56)G&d!Ac;7Z+R(NEnlZ`D&CbLCujpy;IWcu6Jq{3YRcm<1R z_)vef#VB5tk3PRhxl&>OP&t#W9fC z$k1RH#t6rb4)W06Eet=noz9MCPX2T~YEmMgtE;fQ0ve^;e8=-HivDuN<2A;m%hR;C zrP#Npv-)S{i*K(mI#J@~7YA`(tF;pDy{~OW7485~ah^aNPaPeMh?r=ia~^Bpr5F0h zi3B&!pP@MsTM8f<3z(jqq`jkq&B*|j0Phv&6k~+IT0{ir1#4_A$gBi3B^;rP zzFA`k>{7eK<88obHcOChBeqDf8UV4DSYevEku0Igf=JcKwZ>y5>WW*l literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/engineersdecor/textures/block/sign/sign_frost_texture.png b/src/main/resources/assets/engineersdecor/textures/block/sign/sign_frost_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..3a4b5c3ed1dae997b4079d6853d0a7a23bfbffcf GIT binary patch literal 1303 zcmV+y1?c*TP)Bfx6A)a==g&-nas^S_s)6W_q^wvxw5s?rQF2BaFdU} z1;DA`ZWaI$Xt`|_?W^uY_1MPx~QKXh4ae5%z(2w(MC)_nHC#O<^COfAk~O22?POvhOJsl5DEnx^e|3 zFtzBv2q5-~70?p=D)vE>YnI=Ym~bXnAeXh2xbboAiCIkm2&!G)KO_%zK|z z@K~m+5nmsxAjEX$1Ja=-vm(v;fnoeVQ34S`j3L*N;pbDs?Aw2lmQ0GLAI%Y(7;zEL zY|n9TZ!`P$U*!ByWl3IGv;-bVTV?aEKHmA@H~y%k>ov(X2V}D;5XhthngTFJc83r^q0&lSR9+SuVw9B9ZW}#6N6Pcasgi)9p{IED$~<3LD-BXV%O$& zdb*TzLsjnUO_NF)ejOO$tB+4m)rD0s3zJV)ZfRWy0F{XDZCoa z4SPl>6l(<$LA}zw=K5ZkR{;++iRYo6z4VmYuvU2c!wF8G86~qkPdqh7X?33dQzI;2 zmZGbD8U2G3_;{K)cI0!-y!w0rBf{Xo@S-ZruYiJjt#3TW;XozEnF+$+V%*?9WSLYX1;Tiyu^915}RVeHRcrr7~INz~M3O>5h1PZwKx9EJ0xKHRTjp)C+Sw;1!xJY}`@ej$$FXUBJ0n z<5_F)9?lPqaq!4Epgg`MM^|SHBC~Z?1rbG6P*u+SGLp=Nzj)!AL1Y4hwT5%2N0Wqs z!8?z!$#<&BCdi$#dqW22JW(a$?5Vl;1H`c>j*|0qb1?6Yr~??kQl+!lN7xkd<)P!K zcf_hSA6P;IVgsCWSObW~2;d!8V#TXNRWQ~NTB*mydoY$bjdIZd2xEh2*Rf;F~oGAjX@&=I@jnl*;N&W$@f-UbYfjuI5| zq^!AC0kM|UWSNOGqr@t+BGr6jjmJu|9j)=`j5wWz_&^dSY$VggAw0`C4xYIe~1q9N8`Tx8f{|RQ?EC?cgLwx`M N002ovPDHLkV1oO!W%d97 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/engineersdecor/textures/block/sign/sign_hotsurface_texture.png b/src/main/resources/assets/engineersdecor/textures/block/sign/sign_hotsurface_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f0f06753a01c76d9b573a4ddd9bcfcf9026d27 GIT binary patch literal 1281 zcmV+c1^)VpP)BrYWf_-Ynb+R} z;8pO;1waI9*LKp_c?TlP0Knk6HZnr7Sin-bja(&vih_bba`GyFOk5^qEgn$)j{pc@ z4eS`m1MvCb(@<2XfC*Pg_D%vj1~$;%l?9+G*~5|dPEx3V1ygDE9o^YDnks8r>oCrg zcK<~HQBbS|w)L+shmz87`|dndqD!s_Q%UwcTUz2e6d|CfKx@aUidZm}WDkl4MN5KD zhwR(cy<`?lMcE^OA}CS{ud1}?vP)*cEIs>}eH75?;9yE=-#@T4FPNodpWoCBK=2w@ z{G1?4YkU2YSg`A|wR;yGI6Kk8^&D2m| zmm*zX&96UQA^Z~zhzMc~9bFk-eB}gp-?fG<8(Y}B?>L(`G}Dw#^TPfUv^3Sy+*pe> zhFre!wpmydKmbx!dEn8W7>tQ6r>a;ZIBO7rLcy0Mm|ng8x!dx>;tZ(by{99WL5$(q zr?zwW$QgbLP|gmIVof|Frh8S}x=hT%0_TM}3>1C9iRYog zO{m7%19%^>1}MY1%h<8i%MMaa$f zg6RWC|KKK8x7J~d#B3^P2#kzQ;hYeKKq~1dTn|_)SZfFh31=xro^(wDR1srPRo;2+ zOQwo518iOifxQY<~+oXjs5$7yLwBO*Mp=N@XR6No@4 zP0il^9AA8Ndd{h7jt7i0SZg?cb|kJ-X9zxEtYOdKW)fAlB#Gjq5KCicl(f!J94~NT zyg(EMqGAjbTV-xfK&d1ZOQG zf)9cJ+TVw0uT{ImC@Z5 z%mVKme1VTn{eS_Dg%p5~PhH{NBcoKxML-yv9C~6Eq|+ag0F=}?FkOoPvRBU4A9Cj0 zH5v;k<$;6`PVAvtDPh(&<;~eUe1GW%P3xSFouk+c?>(bq6-1RAHyd2I_zNs!-&jaF zbM9I`rN89(Yti#^trAsOXOCD@fneb9>_0NW#7kRICwOmYrp(FHS8@erj!&|s(x25l z>kN!rH|P2Gi`kAU=-TAtmOH+8Ywmoq?mv0@3h$q&0WfoXl21STk-5eq!D5e!3Koo! z-RtLqu2uV@Gu}K}i*;AY>wotAEHlSzlm`lw2NDeUJvhw3GYQ@Yjvm^{;N}9Dad_%ELNI*l@xfTis+})ZI;!v(fR+y= z;(6=6eUXU9iQWgC!r(w5f3`MO&Rt&}EK#lWqfR3MBUhtSF6e4~A1rTzXdV$%HP1y= z#W}?}S&^1$8W3W+LZ+M{9lfBBI)76lOikC=F}yj-Xhy5$Ni%6(qKGJh#Iv-+$~nP@ zfSF~$Ap|3YwN-d52Q-Q7e*d)&fJ>C%1M1?rui&zh7(NZLG_K8K>3K3m(pJ1K^(U+5 zLJr{GVv}uSHHw8I-(0+o1y7nW5p@(5#3gv|aSDh-1qhzS)ClG=6Vxe1C;7O90P0B7 z6t`m+gT*4ZuU}1g9=HnUjR4ik{TR zdrp`kI-uvZ|5uGfS-&sEHZAH9*Kq=Ax b&)4za%IEdSZw&w<00000NkvXXu0mjfi7g)B literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/engineersdecor/textures/block/sign/sign_magichazard_texture.png b/src/main/resources/assets/engineersdecor/textures/block/sign/sign_magichazard_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..d6a2339c7811c2b329d05efe1511c85a60d8944a GIT binary patch literal 1340 zcmV-C1;hG@P)25Tiy3U_zh}QPFY<1tDC7 zp0=kgy`9VKy?mHMp`n)c7{y5@narL&d#&I4um7HrZ7uVa$9NbX^YM=Ya4NXR6@Uno zKe3ehrB5O97y>Xjh6V=6=W|$!mr+p6q|hq}B*xO*9qlD)Ee=rqj{*?D8rag&3c!hP zFF{_R2ogat*$3j;(y@Z3<#hnW6Kx#%@*KG$D41fiU(!++t)|Mt#wtu;3ZwsG0HIf` zcs6W*a$+edoG7V9`|Kn7slGA3{-K*YsWAqIa+pHen>uEvg zx35;avp) zRkf9v;PQ+p$aEhh9!MCacKJ$<{&bqSX<&FXOV0g?s*=q*#0V9ojU?j%@wg?QbL`(c zmojTO^<6hPo!%X%C!mUVj`4g*dN9LV9na9%P{l`|9N^u(`zc8VTg-ye3GkwH1P7)u^DN>E~_j5V9M+jES?v3w6bY)J%O&|^Fv>d%_@V#eQa2}nta|< zTV2B86GzD8#`*o+2)nkeVdsu4iG-!Hu9RDs`tZewP&L|eTUN{k;Khxjy#L-FZubl` zJ{~eWk|UdQWHNb5OJaAyl|tdcqPccY? zxo%ZEjq{gt{_<%SH?**BRXghD0g4M9&MQ)={Gw&G(^7ay19|6(8_%n|+o`BZVoWq~ zWF*GX8EhNIwU+sd7kOvT(`?_mjQY9b?Cz-N?Kk!@Jd)*XR}X{fY83DVa*9l= zg-Jf(6-q2@*xAD3=DO%{0p~oaR0Ww#$jE3OV=XJ&@`XBku3jqvgz-$CWHMk$Q>GvT zMO9E$u3t%W@|#N!`NBg!U;=}+hMQLhq8bGT?>xp16T>sN#sYBby5d5Qa~^9WkmYf( z#&Gj$1Un2pVLrM}mIPD!!bAYWnH=+)+epL{{CMaB>K&nKl!>t<42TVI&S4E879)Un zWJ1NOLsc-=kgzf_F5ZK&gkgwXu#}oaf*TjkQkIBK4j>r|80_z7PJKPq$pDoA?-l11 zV}!t3L5E2#QP5wTfH+0axw>-H8QJa3e0HP!XZ( zLbQ1?$;-U==H7c;%*#tk)BJd%abTEX&dl8J`JV6j-h1WB%rWBt59NT5e*_?!5DyA~ z2#h>>iX*4aB60u#l*nJrCS}>hF}RHUARmQfAds&wvC{g3x^qOp>^}k^fK#}%I19kn zpWlYkU;rlkAlZ9KTw0uG>dYhnwS0~*KKX&}04(UB*`J)5tVT2Ak>iI@uf6EM2p}ZG zNn+vZB5!5TMzVS52r^YH4_UH?{G7ytdbBT+K^W6IJPhNlTCLu)JPzIUc zI$%X&Wx2ygAAHMtQS#)K={>WsD*zEeR2do1dH>_@P_OugN1~C|OIj)7oigkk&832O z-~N*5WzSmJ5kLa!&bau(9C_{#uV|*I3f;91H=aAg^_S*ZjU~=0hq8=RbeR~h^VHS7 zv9L1(X2cjdIX%HpqefUSK@}?kuUtRNg@qHGKX;6`-nm3+kz_{c9IC?f?BPAJ@IU~` zz>!#Zeij4DGU93u5vYykjE~hZ>v@40on)v8quw*r$gn;7f<8F;YRa9Ne`te@ssvu4 zn`ksLVvM9{fRKq$#;O$!uw+b~+1(fPLAB3&wKqUia89t0h@AlKl1A={$w)vl!#l;h zYH5<9RaR}gv#`AnSjE7`jF+MjqcJ&}6P#k+F+800Use@{a*uYQ(eOB@J+FkvPEYLU z3->Wl#)Oy1f*`cpf#22&S|PAfl&rNny_vew$4(ug z+x302eiKv+3=vd>moJ|t6oF_kJe1+w<{wAJ0dV8B^Nf!Tk<3UjVaSeJkgXe&WYBQ1 zaBYSY)05Tf0x>24TCFa5?kS2uqv5I7GqA+!T9>TmDZ7D@k$h9MVweeL#+{#*_~x_Q zbnV_%(|sCHuQ;dt`g0Qi=am!_>Z)s2t1?|*=@3IA#)Na5M6N8gNj<AkGtG#3>*S6(B|0!AKS{6VxfWlYU%M0(FEC za1WniJkR;%*7pqO*}VYjnP>U#T@D{P!dTs7;z_AezpCJ!Lqv#4aO(OZbK)7wBOzAL zoc7vrOFWWD&hvY-iJzPx+rn5MfH+6CzRcR4Cc$Krq@He^CY)5=;57AIunGrDm zBr>-dR}qr+%3w>Zww6d+#OOC~s=p-!-Oe;p>hA+%j9V?EY9+D$ldbV+_t*;v)V=#L_t(o!+n?E&mKh;$3JIgo*%oV zbJfeVN+hBV-hDu(!j3nQ(Kt)=C8 zU!c$K^FBN0crmm4>^?;|+1=Th**Ry<_j`VfJpI^V8=(kBW5VDPK?KY|1cDQyrnW;c zz|4rMgSo*8(i`uV>)uLKsG}0JS+e_)FEbjA(HkESLcj?`)g;Jy8dX%mIYHHMPQbtb zH6sW(0TIVi6_MdMVu(0U!#iQQ|6xK1-2C8u!lF@b-TsKp0|(eyDzRB27-EJO5E`Ny zh=Ly@u|d2;aX3@dEbrP-15?8VKNuG$fMN(vmAn7B&F237ETa;FcWm0HxI1%pf930l z^vu;hWM#ggG26?At@dH75zBpMM)Q~75^jG&F&Ps8&@4wlM3M<}JBiD0k#&l!L|b1S zV>a7nV`EQJBJ;q^P%~5^gn%p?oD)HjZdZNbg5a`3^bgP%e&Ek`To8emFI?ix^Cu|EBEy%FZI#H17}oKrMIc!Kn2g6=U;(J}js+;o zg6}``9e(-xTL{7>JJ*r)rSq3K`@<8IWq}B6ZEtthOTyAE(mIGGxWE1ALEAI&1Pnd? zRh)NB#^c0N5vqEDK;9KpRRsc zz4neVa{G^Ovu8ZvlVyWLz~vA;olYpG1ope#zBedfD-JloE~ zpQ9{FZr!@gwd*%He(XyfH1uF-UBNr>K3P6shNAd>%ytgUI${;Yv=@F>v0yX`EEbFI z`_RFM0AsPUWH#Gkb8~+OgR!>0SXKbRiOXbIEnZBEflIPBj=;Tp^UlW+n9a5mL|K`E zP@v6q&XOw%kzi&hhT`z7g2j5s?Z?1*U2)-+%ZLb1JpMJxX#v3AjR)Dg@n85KmRIcPoEqJ2k_o=V`Mm0|Paa?c0<|EUrci7^kX$TiYzDdAuxtfkS`?ix zmqo$PUVLHT``$YQp)8B89_RyT!x{yX1iN4aafyT?wu;fc@G$_xz{CdZ4&HP0$l-2| ztyMyBKesgVt|Ot@8clmaLoBP5Gub=uUQK5Ajt~OVV%n>Gtyh*=rwrEn27(uYmo^fD zqJ#`ZYx?wWYZ=K(r3H>1JIZJ@LZdPnjfgSgy*0~HDTK@>68tI;l-s`Ff;;k zf4Pa8;hksS-i@Jun+`DhU8=SMNb*n7RG+P#X3Stb3OuxVfG`S7CSxAhwJXiB`(w5Bel*fK zq0a@wXw-;k=0MKX+88ctDM*L606WVi&N3Z`q9UKfy zBTdFk%rm;N#rDmR81De_sfN%<-56>SGf5?#mu_5C!Figd!3U41GCp)1nN0ZXZ+|9C zM}e)ociDg70DC5>4veap1XPU}(_u7tpT`96d`{tpmq0m*G%@vg=Lmi{9#PbXba*kx z&Do6bg?)^?L!N%@kOecG7!kKJ*IFgwox=-6HGEFDt-~~?n5C312qV85cOsp++XclG cwRAlHFNMUQF1*@bGXMYp07*qoM6N<$f@uIxH2?qr diff --git a/src/main/resources/assets/engineersdecor/textures/block/sign/sign_radioactive_texture.png b/src/main/resources/assets/engineersdecor/textures/block/sign/sign_radioactive_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..b02ece69282eb841585c46908a772d3a1f128d13 GIT binary patch literal 1243 zcmV<11SI>3P)1T8V4@*LqJSbX z1`-jJme;=Q&b`MEvpa1AeOse-lF8i6nVIvP=RVIl897{Br>x*%SmEOz0q`pLl>#6F ztv!R}2e%@!0ssu2d*kC&s}(Gb%g8nIQXCWnqKPr?Kl+m{Ue*{1PYvACC5&&PH zy9!l>2AFV-RPQ8k@WeLyhjIX9qcWd=aEVF-ESN^CA1LOMY^rSNZO1rMi~frM;-FXw z>>1gTrjpvZ|9FY4=&~JQ8mYd#V_o7y5dw+|^bT}1#DZz0dQdbdTHEk?%6-R*%Vxne zR6PPHf+Dr_s!D$$w`>+b<(rG841hW0S}7Ge0C;w!uw*SP3P3~yTJcg@Shy9d z;=N~}(1{oWp`Jo{?f4+;yZ@lM*|KX#9ux#2)Rb2!b@9!o*A|@-^8yG8mcX7PB`Q^q z@d57@QN@dJ;rrX1{p@<;k~r}6a2_M1wya8E-?1WJo&9OS8R6zHUco?dTQ_gM`z_up z);g@U0E`^yPS>jN&ig+Qd_YwR>JgOp-rCK1XBK3^%(wSZZSNJxW(~$VTqc78J_Iga z9%uB>23|SZ%XdGHAz~0?FxFy>BZ@5O;@$DdB2>_z>BQ^X*n+hd)ujD8=MZ4`&TgLB z(UoeY&YW|O4QpFaVAJN#1s(AifT|BT@x1uzc2q%(FnXwu;QbtNo;fv0vg5*;Q-!20 z*UAjR^YTl5$u_Dk=m_&9-v>?epbFjjRXo2tPqk7(RoOM%M%(HLYm+awwPqMDw-d)P zK91SDD@S)%bD{}^{-OD2gx#ELeS5a@S2