From 569bf5d7a159ce14cc8805afc4166f4be7a73636 Mon Sep 17 00:00:00 2001 From: Ethan Ballard Date: Tue, 24 Jan 2023 13:16:27 -0500 Subject: [PATCH] Final merge resolutions --- build.gradle | 5 +- .../blockstates/neptunium_alloy_ladder.json | 64 +++++ .../resources/assets/rankine/lang/en_us.json | 71 +++--- .../models/block/neptunium_alloy_ladder1.json | 3 + .../models/block/neptunium_alloy_ladder2.json | 3 + .../models/block/neptunium_alloy_ladder3.json | 3 + .../models/block/neptunium_alloy_ladder4.json | 3 + .../models/item/neptunium_alloy_ladder.json | 26 ++ .../models/item/neptunium_alloy_ladder2.json | 6 + .../models/item/neptunium_alloy_ladder3.json | 6 + .../models/item/neptunium_alloy_ladder4.json | 6 + .../data/minecraft/tags/blocks/climbable.json | 1 + .../tags/blocks/mineable/pickaxe.json | 1 + .../rankine_world/neptunium_alloy_ladder.json | 34 +++ .../story/craft_wooden_hammer.json | 2 +- .../advancements/story/crushing_heads.json | 89 +++++++ .../blocks/neptunium_alloy_ladder.json | 20 ++ .../recipes/neptunium_alloy_ladder.json | 18 ++ .../advancements/HasEnchantmentPredicate.java | 4 +- .../rankine/blocks/BlastingPowderBlock.java | 39 ++- .../blocks/sedimentfan/SedimentFanTile.java | 48 ++-- .../data/RankineAdvancementProvider.java | 38 ++- .../rankine/data/RankineLangProvider.java | 63 +++-- .../common/ItemAttributeModifierHandler.java | 6 + .../handlers/common/PlayerTickHandler.java | 225 +++++++----------- .../cannolicatfish/rankine/init/Config.java | 11 - .../rankine/init/RankineAttributes.java | 4 +- .../rankine/init/RankineBlocks.java | 1 + .../rankine/init/RankineItems.java | 1 + src/main/resources/META-INF/mods.toml | 2 +- ...g.mcmeta => sediment_fan_front.png.mcmeta} | 0 .../en_us/entries/constructs/batteries.json | 39 +++ .../entries/constructs/fusion_furnace.json | 22 -- .../en_us/entries/mechanics/alloying.json | 5 - .../en_us/entries/sediments/sedimentary.json | 1 + .../en_us/entries/tools/armor.json | 20 +- .../en_us/entries/tools/arrows.json | 10 +- .../en_us/entries/tools/building_tool.json | 16 -- .../en_us/entries/tools/element_indexer.json | 6 +- .../en_us/entries/tools/magnets.json | 2 +- .../en_us/entries/tools/utility_tools.json | 2 +- .../stonegen_sedimentary/chalk_generator.json | 2 +- .../chalk_generator2.json | 10 + .../honeystone_generator.json | 2 +- .../honeystone_generator2.json | 10 + .../limestone_generator.json | 2 +- .../limestone_generator2.json | 10 + 47 files changed, 624 insertions(+), 338 deletions(-) create mode 100644 src/generated/resources/assets/rankine/blockstates/neptunium_alloy_ladder.json create mode 100644 src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder1.json create mode 100644 src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder2.json create mode 100644 src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder3.json create mode 100644 src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder4.json create mode 100644 src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder.json create mode 100644 src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder2.json create mode 100644 src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder3.json create mode 100644 src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder4.json create mode 100644 src/generated/resources/data/rankine/advancements/recipes/rankine_world/neptunium_alloy_ladder.json create mode 100644 src/generated/resources/data/rankine/advancements/story/crushing_heads.json create mode 100644 src/generated/resources/data/rankine/loot_tables/blocks/neptunium_alloy_ladder.json create mode 100644 src/generated/resources/data/rankine/recipes/neptunium_alloy_ladder.json rename src/main/resources/assets/rankine/textures/block/{sediment_fan.png.mcmeta => sediment_fan_front.png.mcmeta} (100%) create mode 100644 src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/constructs/batteries.json delete mode 100644 src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/building_tool.json create mode 100644 src/main/resources/data/rankine/recipes/stonegen_sedimentary/chalk_generator2.json create mode 100644 src/main/resources/data/rankine/recipes/stonegen_sedimentary/honeystone_generator2.json create mode 100644 src/main/resources/data/rankine/recipes/stonegen_sedimentary/limestone_generator2.json diff --git a/build.gradle b/build.gradle index 347c29222d..aa8f3748ff 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ apply plugin: 'org.spongepowered.mixin' apply plugin: 'eclipse' apply plugin: 'maven-publish' apply from: 'https://raw.githubusercontent.com/SizableShrimp/Forge-Class-Remapper/main/classremapper.gradle' -version = '1.18.2-1.3.5' +version = '1.18.2-1.3.6' group = 'com.cannolicatfish' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'rankine' @@ -160,9 +160,6 @@ dependencies { compileOnly fg.deobf("mezz.jei:jei-${jei_version}:api") runtimeOnly fg.deobf("mezz.jei:jei-${jei_version}") - compileOnly fg.deobf("com.klikli_dev:modonomicon:${modonomicon_mc_version}-${modonomicon_version}:api") - runtimeOnly fg.deobf("com.klikli_dev:modonomicon:${modonomicon_mc_version}-${modonomicon_version}") - } // Example for how to get properties into the manifest for reading by the runtime.. diff --git a/src/generated/resources/assets/rankine/blockstates/neptunium_alloy_ladder.json b/src/generated/resources/assets/rankine/blockstates/neptunium_alloy_ladder.json new file mode 100644 index 0000000000..008774c1fd --- /dev/null +++ b/src/generated/resources/assets/rankine/blockstates/neptunium_alloy_ladder.json @@ -0,0 +1,64 @@ +{ + "variants": { + "facing=north,style=1": { + "model": "rankine:block/neptunium_alloy_ladder1" + }, + "facing=south,style=1": { + "model": "rankine:block/neptunium_alloy_ladder1", + "y": 180 + }, + "facing=west,style=1": { + "model": "rankine:block/neptunium_alloy_ladder1", + "y": 270 + }, + "facing=east,style=1": { + "model": "rankine:block/neptunium_alloy_ladder1", + "y": 90 + }, + "facing=north,style=2": { + "model": "rankine:block/neptunium_alloy_ladder2" + }, + "facing=south,style=2": { + "model": "rankine:block/neptunium_alloy_ladder2", + "y": 180 + }, + "facing=west,style=2": { + "model": "rankine:block/neptunium_alloy_ladder2", + "y": 270 + }, + "facing=east,style=2": { + "model": "rankine:block/neptunium_alloy_ladder2", + "y": 90 + }, + "facing=north,style=3": { + "model": "rankine:block/neptunium_alloy_ladder3" + }, + "facing=south,style=3": { + "model": "rankine:block/neptunium_alloy_ladder3", + "y": 180 + }, + "facing=west,style=3": { + "model": "rankine:block/neptunium_alloy_ladder3", + "y": 270 + }, + "facing=east,style=3": { + "model": "rankine:block/neptunium_alloy_ladder3", + "y": 90 + }, + "facing=north,style=4": { + "model": "rankine:block/neptunium_alloy_ladder4" + }, + "facing=south,style=4": { + "model": "rankine:block/neptunium_alloy_ladder4", + "y": 180 + }, + "facing=west,style=4": { + "model": "rankine:block/neptunium_alloy_ladder4", + "y": 270 + }, + "facing=east,style=4": { + "model": "rankine:block/neptunium_alloy_ladder4", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/rankine/lang/en_us.json b/src/generated/resources/assets/rankine/lang/en_us.json index 2c025cb1be..59ea64dec7 100644 --- a/src/generated/resources/assets/rankine/lang/en_us.json +++ b/src/generated/resources/assets/rankine/lang/en_us.json @@ -1745,6 +1745,7 @@ "block.rankine.nepheline_syenite_wall": "Nepheline Syenite Wall", "block.rankine.neptunium_alloy_bars": "Neptunium Alloy Bars", "block.rankine.neptunium_alloy_block": "Block of %1$s", + "block.rankine.neptunium_alloy_ladder": "Neptunium Alloy Ladder", "block.rankine.neptunium_alloy_pedestal": "Neptunium Alloy Pedestal", "block.rankine.neptunium_alloy_pole": "Neptunium Alloy Pole", "block.rankine.neptunium_alloy_sheetmetal": "Neptunium Alloy Sheetmetal", @@ -3006,20 +3007,6 @@ "block.rankine.zirconium_alloy_sheetmetal": "Zirconium Alloy Sheetmetal", "block.rankine.zirconium_block": "Block Of Zirconium", "block.rankine.zirconium_lantern": "Zirconium Lantern", - "book.rankine.rankine_research.alloying.basic_alloying.alloy_furnace.text": "Multiblock pages allow to preview multiblocks both in the book and in the world.", - "book.rankine.rankine_research.alloying.basic_alloying.alloy_furnace.title": "Alloy Furnace", - "book.rankine.rankine_research.alloying.basic_alloying.basic_alloying.text": "Multiblock pages allow to preview multiblocks both in the book and in the world.", - "book.rankine.rankine_research.alloying.basic_alloying.basic_alloying.title": "Basic Alloying", - "book.rankine.rankine_research.alloying.basic_alloying.description": "An entry showcasing a multiblock.", - "book.rankine.rankine_research.alloying.basic_alloying.name": "Multiblock Entry", - "book.rankine.rankine_research.alloying.multiblock.description": "An entry showcasing a multiblock.", - "book.rankine.rankine_research.alloying.multiblock.intro.text": "Multiblock pages allow to preview multiblocks both in the book and in the world.", - "book.rankine.rankine_research.alloying.multiblock.intro.title": "Multiblock Page", - "book.rankine.rankine_research.alloying.multiblock.multiblock.text": "A sample multiblock.", - "book.rankine.rankine_research.alloying.multiblock.name": "Multiblock Entry", - "book.rankine.rankine_research.alloying.name": "Elements and Alloying", - "book.rankine.rankine_research.name": "Rankine Research Notes", - "book.rankine.rankine_research.tooltip": "A book to assist in learning the world of Project Rankine.", "death.attack.cannonball": "%1$s was struck by a cannonball", "death.attack.cannonball.player": "%1$s was struck by a cannonball whilst trying to escape %2$s", "death.attack.columns": "%1$s was squished by a falling column", @@ -4320,8 +4307,6 @@ "rankine.advancements.story.craft_rope.title": "Knot Likely", "rankine.advancements.story.craft_saddle_tree.description": "Craft a saddle tree to make horse-related equipment", "rankine.advancements.story.craft_saddle_tree.title": "A Horse", - "rankine.advancements.story.craft_sediment_fan.description": "Make a Sediment Fan to generate Sedimentary Stones", - "rankine.advancements.story.craft_sediment_fan.title": "Spin Cycle", "rankine.advancements.story.craft_shulker_gas_vacuum.description": "Make a shulker gas vacuum to transport gases", "rankine.advancements.story.craft_shulker_gas_vacuum.title": "Vacuum Sealed", "rankine.advancements.story.craft_steel_gold_pan.description": "Make a Steel Gold Pan to sieve alluvium and black sand", @@ -4340,6 +4325,8 @@ "rankine.advancements.story.craft_wooden_gold_pan.title": "Forager", "rankine.advancements.story.craft_wooden_hammer.description": "Make a Wooden Mallet to start swinging in rhythm at rocks and other materials", "rankine.advancements.story.craft_wooden_hammer.title": "Time to Swing", + "rankine.advancements.story.crushing_heads.description": "Automatically crush blocks by pushing Crushing Heads with pistons", + "rankine.advancements.story.crushing_heads.title": "Pokey Pokey", "rankine.advancements.story.get_banded_iron_formation.description": "Find Banded Iron Formations near the world surface", "rankine.advancements.story.get_banded_iron_formation.title": "Iron Sandwhich", "rankine.advancements.story.get_bog_iron.description": "Find Bog Iron submerged in a swamp", @@ -4379,6 +4366,7 @@ "rankine.jei.alloying_enchantments": "Bonus Enchantments", "rankine.jei.battery": "Battery", "rankine.jei.beeoven": "Beehive Oven", + "rankine.jei.cauldron_drying": "Cauldron Drying", "rankine.jei.crucible": "Crucible", "rankine.jei.crucible_tooltip_additional": "Additional (Pick %s Unique Ingredients)", "rankine.jei.crushing": "Crushing", @@ -4431,7 +4419,7 @@ "rankine.jei.tooltip_total_ingredients": "%s total ingredients", "rankine.jei.tooltip_total_mixing_time": "Total Mixing Time: %s redstone power", "rankine.jei.tooltip_total_output": "%s total output", - "rankine.jei.treetapping": "Treetap", + "rankine.jei.treetapping": "Tree Tapping", "rankine.jei.volcanic": "Volcanic Rock Generator", "rankine.journal.cat_biota.crops.aloe": "", "rankine.journal.cat_biota.crops.asparagus": "", @@ -4508,6 +4496,13 @@ "rankine.journal.cat_biota.trees.western_hemlock.title": "Western Hemlock", "rankine.journal.cat_biota.trees.yellow_birch": "Native to forest biomes.", "rankine.journal.cat_biota.trees.yellow_birch.title": "Yellow Birch", + "rankine.journal.cat_constructs.batteries.name": "Batteries", + "rankine.journal.cat_constructs.batteries.text1": "Batteries are energy storage devices that fuel electric machines.", + "rankine.journal.cat_constructs.batteries.text2": "Batteries", + "rankine.journal.cat_constructs.batteries.text3": "", + "rankine.journal.cat_constructs.batteries.text4": "The battery charger increases the charge of batteries within its inventory every ~20 seconds. The amount of charge returned depends on the capacity of the battery charger, shown by the red bar in the gui. To increase the charge capacity, place a daylight sensor on top of the charger. Additional charge can be added when lightning strikes a lightning rod adjacent to the charger.", + "rankine.journal.cat_constructs.batteries.text5": "RTGs", + "rankine.journal.cat_constructs.batteries.text6": "RTGs are radioactively powered batteries with a much higher capacity. They cannot be recharged.", "rankine.journal.cat_constructs.beehive_oven.name": "Beehive Oven", "rankine.journal.cat_constructs.beehive_oven.text1": "The beehive oven is an in-world furnace that slowly smelts blocks placed inside it. While holding bricks in the offhand, right click with Building Tool on the Oven Pit to place blocks. Or you can place the blocks manually by matching the structure on the next page.", "rankine.journal.cat_constructs.beehive_oven.text2": "It will smelt blocks in a 3x2x3 area above it, minus the center column (16 blocks total). Once the structure is built, place your blocks in any of those smelting spaces and light the pit block with the conventional fire starting methods. The oven pit will un-light if an invalid structure is detected, or once the process is complete. Carbon Dioxide gas will be generated in any empty spaces inside the oven.", @@ -4526,11 +4521,7 @@ "rankine.journal.cat_constructs.evaporation_tower.name": "Evaporation Tower", "rankine.journal.cat_constructs.evaporation_tower.text1": "A method to remove heavy materials from water. When constructed, the tower will slowly and passively generate various resources (can only run when outpute is empty, use a hopper!!). The resource lootable depends on the location. By default, water can be evaporated in the following different locations: $(li)Oceans $(li)Deserts $(li)Rivers and Swamps $(li)Caves $(li)Elsewhere", "rankine.journal.cat_constructs.evaporation_tower.text2": "Construction notes: $(li)The inside is filled with the desired fluid. $(li)The walls are made from any #forge:sheetmetals. $(li)More layers of sheet metal and fluid can be added to decrease processing time by 4% each layer (max of 20). $(br2)By default, the sheetmetal in the tower will occasionally break, which will limit the max height to that broken layer. Configurable.", - "rankine.journal.cat_constructs.fusion_furnace.batteries": "Batteries are energy storage devices that fuel late game machines. Currently they are single use.", - "rankine.journal.cat_constructs.fusion_furnace.batteries_header": "Batteries", "rankine.journal.cat_constructs.fusion_furnace.name": "Fusion Furnace", - "rankine.journal.cat_constructs.fusion_furnace.rtg": "RTGs are radioactively powered batteries with a much higher capacity.", - "rankine.journal.cat_constructs.fusion_furnace.rtg_header": "RTGs", "rankine.journal.cat_constructs.fusion_furnace.text1": "The Fusion Furnace utilizes solids, liquids, and gases to make new outputs. Many recipes which involve gases will require Bottled Gases and Empty Bottles. You can acquire Bottled Gases using either the $(l:materials/gasses)Gas Bottler$() or the $(l:materials/gasses)Shulker Gas Vacuum$(). In order for a recipe to go through, you must have the required ingredients, fluid in the input fluid tank, and bottled gas in the slot adjacent to the tank.", "rankine.journal.cat_constructs.fusion_furnace.text2": " This machine does not use coal, and must use electrical energy from items such as Batteries or RTGs.", "rankine.journal.cat_constructs.gas_collection.name": "Gas Collection", @@ -4546,12 +4537,6 @@ "rankine.journal.cat_constructs.light_sources.text1": "A collection of the major light emitting blocks.", "rankine.journal.cat_constructs.light_sources.text2": "Lanterns", "rankine.journal.cat_constructs.light_sources.text3": "Most metals burn with a distinctive color. Right click a lantern or soul lantern with a metal nugget to change the flame color. Magnesium, Netherite, and Endositum lanterns produce particles.", - "rankine.journal.cat_constructs.magnets.alnico_magnet": "Default Range: 8 blocks", - "rankine.journal.cat_constructs.magnets.lodestone": "A weakly powered natural magnet. Lodestones will actively pull in items with a 2 block range. Obtained by crushing $(world/ores#magnetite_ore)Magnetite Ore$().", - "rankine.journal.cat_constructs.magnets.name": "Magnets", - "rankine.journal.cat_constructs.magnets.rare_earth_magnet": "Default Range: 12 blocks", - "rankine.journal.cat_constructs.magnets.simple_magnet": "Default Range: 4 blocks", - "rankine.journal.cat_constructs.magnets.text1": "Magnets can pull in surrounding items when right-clicked in hand. Config options exist for magnet ranges.", "rankine.journal.cat_constructs.metal_ladders.name": "Metal Ladders", "rankine.journal.cat_constructs.metal_ladders.text1": "Metal Ladders can be crafted from any alloy. Due to their sturdy nature, metal ladders can be placed up to 8 blocks above the last one attached to a wall. Right click with a ladder on a ladder to autoplace ladders vertically. These blocks have $(l:mechanics/building_modes)Building Modes$().", "rankine.journal.cat_constructs.metal_ladders.text2": "All metal ladder recipes follow this pattern.", @@ -4853,7 +4838,8 @@ "rankine.journal.cat_sediments.sedimentary.soul_sandstone": "Found in soul sand valley biomes", "rankine.journal.cat_sediments.sedimentary.text1": "Sedimentary stones are formed from compactions and cementing of sediments.", "rankine.journal.cat_sediments.sedimentary.text2": "Generation", - "rankine.journal.cat_sediments.sedimentary.text3": "AAAAAAAAAAA. See JEI for generator recipes.", + "rankine.journal.cat_sediments.sedimentary.text3": "Sediment blocks that despawn in water will sink to the bottom and become their stone counterpart. A more automatic method of generation involves the Sediment Fan.. See JEI for generator recipes.", + "rankine.journal.cat_sediments.sedimentary.text4": "The fan encourages particles of adjacent blocks to be pushed into water streams, where they will be compacted and converted into stones. Place a sediment block adjacent to the fan and a water source one block further out in a line. The stone will be generated on the third block out if it is also water.", "rankine.journal.cat_sediments.sedimentary.white_sandstone": "Found scarcely in sandy areas.", "rankine.journal.cat_sediments.silts.name": "Silt", "rankine.journal.cat_sediments.silts.silt": "A smaller particle size than sand. It is used in many similar applications. Found along rivers.", @@ -4886,15 +4872,30 @@ "rankine.journal.cat_sediments.volcanic.text1": "Volcanic stones are formed from quickly cooling lava, often during eruption events. ", "rankine.journal.cat_sediments.volcanic.text2": "Generation", "rankine.journal.cat_sediments.volcanic.text3": "Volcanic stones are found in lava rich locations. They can be generated using the vanilla obsidian generator, where water flows onto lava source blocks. A block adjacent to the generation site determines the generated stone. See JEI for generator recipes.", - "rankine.journal.cat_tools.building_tool.name": "Building Tool", - "rankine.journal.cat_tools.building_tool.text1": "A catch all tool for creating new blockstates from a given block. With the building tool in the offhand, shift-right click to change the mode from 0-7. Then place blocks to see if they have an affected build state.", - "rankine.journal.cat_tools.building_tool.text2": "Currently affects Stone Bricks, Polished Stones, Bricks, Planks, Columns, Asphalt, Concrete/Cement, Ornament and Metal Bars blocks.", + "rankine.journal.cat_tools.armor.alloy": "Like tools, alloy armor gets it's stats (armor, toughness, durability) depending on the composition of the alloy. Recipes for alloy armor can be added external using datapacks or mods. By default there are a few different recipes.", + "rankine.journal.cat_tools.armor.alloy_title": "Alloy Armor", + "rankine.journal.cat_tools.armor.brigandine": "Steel plated leather armor. Made by combining leather armor and a steel ingot in the smithing table.", + "rankine.journal.cat_tools.armor.brigandine_title": "Brigandine Armor", + "rankine.journal.cat_tools.armor.conduit_diving": "Upgraded diving armor. Provides the wearer with conduit power when in water.", + "rankine.journal.cat_tools.armor.conduit_diving_title": "Conduit Diving Armor", + "rankine.journal.cat_tools.armor.diving": "Armor made from brass. Allows the wearer to hold their breath for a longer period of time.", + "rankine.journal.cat_tools.armor.diving_title": "Diving Armor", + "rankine.journal.cat_tools.armor.name": "Armor", + "rankine.journal.cat_tools.armor.text1": "Various armor sets exist in the game.", + "rankine.journal.cat_tools.arrows.magnesium_arrow": "Blinds nearby enemies when on ground. Hit mobs will trigger nearby undead mobs to attack. Creepers explode on impact.", + "rankine.journal.cat_tools.arrows.name": "Arrows", + "rankine.journal.cat_tools.arrows.steel_arrow": "An upgraded standard arrow. Deals more damage.\"", + "rankine.journal.cat_tools.arrows.text1": "Alloy arrows gets their stats (damage) depending on the composition of the alloy. Recipes for alloy armor can be added external using datapacks or mods.", + "rankine.journal.cat_tools.arrows.thorium_arrow": "Summons lightning on impact.", "rankine.journal.cat_tools.common_tools.fire_extinguisher": "Right click to extinguish fires in a radius in front of you.", "rankine.journal.cat_tools.common_tools.glass_cutter": "A tool effective for breaking glass materials. Comes with silk touch by default. Right click glass blocks to convert them into glass panes.", "rankine.journal.cat_tools.common_tools.name": "Other Tools", "rankine.journal.cat_tools.common_tools.rock_drill": "Right click the ground to receive a sample report of all the stones located below.", "rankine.journal.cat_tools.common_tools.text1": "", "rankine.journal.cat_tools.desc": "Various implements use to manipulate the world.", + "rankine.journal.cat_tools.element_indexer.name": "Element Indexer", + "rankine.journal.cat_tools.element_indexer.text1": "Upon inspection most materials used in the alloying process have some inherent properties to them. For the end goal of making ingots, this doesn't matter much, but for tools there can be profound effects.", + "rankine.journal.cat_tools.element_indexer.text2": "To see the stats of an element, right click the element indexer and place the ingot in the top left slot. The stats will show below for each of the various categories. Additionally, when in the GUI, scrolling will change the percentage of the material you are looking at. See $(l:alloying/alloying)Notes About Alloying$() for details.", "rankine.journal.cat_tools.equipment.name": "Equipment", "rankine.journal.cat_tools.equipment.text1": "", "rankine.journal.cat_tools.equipment.text2": "Sandals are worn on the feet and provide increased movemet speed on sand. Combine boots of any type with sandals in an anvil to apply the $(l:mechanics/enchantments#dune_walker)Dune Walker$() enchantment.", @@ -4903,6 +4904,12 @@ "rankine.journal.cat_tools.equipment.text5": "Fins are worn on the feet and provide increased movemet speed in water. Combine boots of any type with fins in an anvil to apply the $(l:mechanics/enchantments#swift_swimmer)Swift Swimmer$() enchantment.", "rankine.journal.cat_tools.equipment.text6": "Goggles are worn on the head and provide better vision and movemet speed in water. Combine a helmet of any type with goggles in an anvil to apply the $(l:mechanics/enchantments#aqua_lense)Aqua Lense$() enchantment.", "rankine.journal.cat_tools.equipment.text7": "A Gas Mask are worn on the head and protects against suffocation in gas blocks. Combine helmet of any type with a gas mask in an anvil to apply the $(l:mechanics/enchantments#gas_protection)Gas Protection$() enchantment.", + "rankine.journal.cat_tools.magnets.alnico_magnet": "Default Range: 8 blocks", + "rankine.journal.cat_tools.magnets.lodestone": "A weakly powered natural magnet. Lodestones will actively pull in items with a 2 block range. Obtained by crushing $(world/ores#magnetite_ore)Magnetite Ore$().", + "rankine.journal.cat_tools.magnets.name": "Magnets", + "rankine.journal.cat_tools.magnets.rare_earth_magnet": "Default Range: 12 blocks", + "rankine.journal.cat_tools.magnets.simple_magnet": "Default Range: 4 blocks", + "rankine.journal.cat_tools.magnets.text1": "Magnets can pull in surrounding items when right-clicked in hand. Config options exist for magnet ranges.", "rankine.journal.cat_tools.name": "Tools", "rankine.journal.cat_tools.ore_detection.name": "Ore Detection", "rankine.journal.cat_tools.ore_detection.text1": "", @@ -4951,7 +4958,7 @@ "rankine.journal.cat_tools.utility_tools.name": "Utility Tools", "rankine.journal.cat_tools.utility_tools.photometer": "Displays the current light level.", "rankine.journal.cat_tools.utility_tools.speedometer": "Displays the current speed in blocks per second.", - "rankine.journal.cat_tools.utility_tools.text1": "", + "rankine.journal.cat_tools.utility_tools.text1": "Various utility tools have been added to display information. Tools will display on the status bar while in your main hand or off hand. Default is head position, sneak for position at feet.", "rankine.journal.cat_tools.utility_tools.thermometer": "Displays the current air temperature.", "rankine.journal.landing_text": "Project Rankine is about material acquisition and usage. Explore the variety of items and blocks and the new methods to obtain them. Follow the advancements for general progression.", "rankine.subtitle.penning_trap_absorb": "Penning Trap absorb", diff --git a/src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder1.json b/src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder1.json new file mode 100644 index 0000000000..90bb66b154 --- /dev/null +++ b/src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder1.json @@ -0,0 +1,3 @@ +{ + "parent": "rankine:block/template_metal_ladder1" +} \ No newline at end of file diff --git a/src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder2.json b/src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder2.json new file mode 100644 index 0000000000..9bf52ffe97 --- /dev/null +++ b/src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder2.json @@ -0,0 +1,3 @@ +{ + "parent": "rankine:block/template_metal_ladder2" +} \ No newline at end of file diff --git a/src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder3.json b/src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder3.json new file mode 100644 index 0000000000..d3e552a0f0 --- /dev/null +++ b/src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder3.json @@ -0,0 +1,3 @@ +{ + "parent": "rankine:block/template_metal_ladder3" +} \ No newline at end of file diff --git a/src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder4.json b/src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder4.json new file mode 100644 index 0000000000..fe812a243f --- /dev/null +++ b/src/generated/resources/assets/rankine/models/block/neptunium_alloy_ladder4.json @@ -0,0 +1,3 @@ +{ + "parent": "rankine:block/template_metal_ladder4" +} \ No newline at end of file diff --git a/src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder.json b/src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder.json new file mode 100644 index 0000000000..5d74ad2a4f --- /dev/null +++ b/src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder.json @@ -0,0 +1,26 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "rankine:block/metal_ladder1" + }, + "overrides": [ + { + "predicate": { + "rankine:building_mode": 2.0 + }, + "model": "rankine:item/neptunium_alloy_ladder2" + }, + { + "predicate": { + "rankine:building_mode": 3.0 + }, + "model": "rankine:item/neptunium_alloy_ladder3" + }, + { + "predicate": { + "rankine:building_mode": 4.0 + }, + "model": "rankine:item/neptunium_alloy_ladder4" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder2.json b/src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder2.json new file mode 100644 index 0000000000..1c22b9865a --- /dev/null +++ b/src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "rankine:block/metal_ladder2" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder3.json b/src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder3.json new file mode 100644 index 0000000000..7cf4928a77 --- /dev/null +++ b/src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder3.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "rankine:block/metal_ladder3" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder4.json b/src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder4.json new file mode 100644 index 0000000000..98aa7e0d67 --- /dev/null +++ b/src/generated/resources/assets/rankine/models/item/neptunium_alloy_ladder4.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "rankine:block/metal_ladder4" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/climbable.json b/src/generated/resources/data/minecraft/tags/blocks/climbable.json index 3e28c0db89..168e324ba5 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/climbable.json +++ b/src/generated/resources/data/minecraft/tags/blocks/climbable.json @@ -22,6 +22,7 @@ "rankine:galinstan_ladder", "rankine:osmiridium_ladder", "rankine:sodium_potassium_alloy_ladder", + "rankine:neptunium_alloy_ladder", "rankine:amalgam_ladder", "rankine:ender_amalgam_ladder", "rankine:rose_gold_ladder", diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json index a637277341..a3ff4e48c2 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -1533,6 +1533,7 @@ "rankine:galinstan_ladder", "rankine:osmiridium_ladder", "rankine:sodium_potassium_alloy_ladder", + "rankine:neptunium_alloy_ladder", "rankine:amalgam_ladder", "rankine:ender_amalgam_ladder", "rankine:rose_gold_ladder", diff --git a/src/generated/resources/data/rankine/advancements/recipes/rankine_world/neptunium_alloy_ladder.json b/src/generated/resources/data/rankine/advancements/recipes/rankine_world/neptunium_alloy_ladder.json new file mode 100644 index 0000000000..b60f9d2491 --- /dev/null +++ b/src/generated/resources/data/rankine/advancements/recipes/rankine_world/neptunium_alloy_ladder.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "rankine:neptunium_alloy_ladder" + ] + }, + "criteria": { + "has_ingredient": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "rankine:neptunium_alloy_ingot" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "rankine:neptunium_alloy_ladder" + } + } + }, + "requirements": [ + [ + "has_ingredient", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/rankine/advancements/story/craft_wooden_hammer.json b/src/generated/resources/data/rankine/advancements/story/craft_wooden_hammer.json index 79118d818e..2e49a6e479 100644 --- a/src/generated/resources/data/rankine/advancements/story/craft_wooden_hammer.json +++ b/src/generated/resources/data/rankine/advancements/story/craft_wooden_hammer.json @@ -13,7 +13,7 @@ }, "frame": "task", "show_toast": true, - "announce_to_chat": true, + "announce_to_chat": false, "hidden": false }, "criteria": { diff --git a/src/generated/resources/data/rankine/advancements/story/crushing_heads.json b/src/generated/resources/data/rankine/advancements/story/crushing_heads.json new file mode 100644 index 0000000000..165314f7c3 --- /dev/null +++ b/src/generated/resources/data/rankine/advancements/story/crushing_heads.json @@ -0,0 +1,89 @@ +{ + "parent": "rankine:story/craft_alloy_hammer", + "display": { + "icon": { + "item": "rankine:iron_tier_crushing_head" + }, + "title": { + "translate": "rankine.advancements.story.crushing_heads.title" + }, + "description": { + "translate": "rankine.advancements.story.crushing_heads.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "wood_tier_crushing_head": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "rankine:wood_tier_crushing_head" + ] + } + ] + } + }, + "stone_tier_crushing_head": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "rankine:stone_tier_crushing_head" + ] + } + ] + } + }, + "iron_tier_crushing_head": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "rankine:iron_tier_crushing_head" + ] + } + ] + } + }, + "diamond_tier_crushing_head": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "rankine:diamond_tier_crushing_head" + ] + } + ] + } + }, + "netherite_tier_crushing_head": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "rankine:netherite_tier_crushing_head" + ] + } + ] + } + } + }, + "requirements": [ + [ + "wood_tier_crushing_head", + "stone_tier_crushing_head", + "iron_tier_crushing_head", + "diamond_tier_crushing_head", + "netherite_tier_crushing_head" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/rankine/loot_tables/blocks/neptunium_alloy_ladder.json b/src/generated/resources/data/rankine/loot_tables/blocks/neptunium_alloy_ladder.json new file mode 100644 index 0000000000..2b1601a0d5 --- /dev/null +++ b/src/generated/resources/data/rankine/loot_tables/blocks/neptunium_alloy_ladder.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "rankine:neptunium_alloy_ladder" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/rankine/recipes/neptunium_alloy_ladder.json b/src/generated/resources/data/rankine/recipes/neptunium_alloy_ladder.json new file mode 100644 index 0000000000..65f1c42d6c --- /dev/null +++ b/src/generated/resources/data/rankine/recipes/neptunium_alloy_ladder.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "rankine:ladders", + "pattern": [ + "# #", + "###", + "# #" + ], + "key": { + "#": { + "item": "rankine:neptunium_alloy_ingot" + } + }, + "result": { + "item": "rankine:neptunium_alloy_ladder", + "count": 8 + } +} \ No newline at end of file diff --git a/src/main/java/com/cannolicatfish/rankine/advancements/HasEnchantmentPredicate.java b/src/main/java/com/cannolicatfish/rankine/advancements/HasEnchantmentPredicate.java index ada7f2c84f..df0a62fe3b 100644 --- a/src/main/java/com/cannolicatfish/rankine/advancements/HasEnchantmentPredicate.java +++ b/src/main/java/com/cannolicatfish/rankine/advancements/HasEnchantmentPredicate.java @@ -73,12 +73,14 @@ public boolean matches(ItemStack stack) { for (Enchantment enchant : this.enchantments) { if (EnchantmentHelper.getItemEnchantmentLevel(enchant, stack) <= 0) return false; } + return true; } else if (this.items != null && this.items.contains(stack.getItem())) { for (Enchantment enchant : this.enchantments) { if (EnchantmentHelper.getItemEnchantmentLevel(enchant, stack) <= 0) return false; } + return true; } - return true; + return false; } public static ItemPredicate fromJson(@Nullable JsonElement p_45052_) { diff --git a/src/main/java/com/cannolicatfish/rankine/blocks/BlastingPowderBlock.java b/src/main/java/com/cannolicatfish/rankine/blocks/BlastingPowderBlock.java index eea79c84eb..d625853ed7 100644 --- a/src/main/java/com/cannolicatfish/rankine/blocks/BlastingPowderBlock.java +++ b/src/main/java/com/cannolicatfish/rankine/blocks/BlastingPowderBlock.java @@ -1,9 +1,9 @@ package com.cannolicatfish.rankine.blocks; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.FallingBlock; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.FallingBlockEntity; @@ -13,21 +13,18 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.core.BlockPos; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.level.Explosion; import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Explosion; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.FallingBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; import javax.annotation.Nullable; import java.util.Random; -import net.minecraft.world.level.block.state.BlockBehaviour.Properties; - -import net.minecraft.core.Direction; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; - public class BlastingPowderBlock extends FallingBlock { public BlastingPowderBlock(Properties properties) { super(properties); @@ -35,28 +32,22 @@ public BlastingPowderBlock(Properties properties) { @Override public void onCaughtFire(BlockState state, Level world, BlockPos pos, @Nullable net.minecraft.core.Direction face, @Nullable LivingEntity igniter) { - world.explode(igniter, pos.getX(), pos.getY() + 16 * .0625D, pos.getZ(), 2.4F, Explosion.BlockInteraction.BREAK); world.removeBlock(pos, false); + world.explode(igniter, pos.getX(), pos.getY() + 16 * .0625D, pos.getZ(), 2.4F, Explosion.BlockInteraction.BREAK); } @Override public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, @Nullable LivingEntity placer, ItemStack stack) { Random random = new Random(); - if (random.nextFloat() <= 0.05f) - { - if (placer instanceof Player) - { - if (!((Player)placer).getAbilities().instabuild) - { + if (random.nextFloat() <= 0.05f) { + if (placer instanceof Player) { + if (!((Player)placer).getAbilities().instabuild) { onCaughtFire(state, worldIn, pos, null, null); } - } else - { + } else { onCaughtFire(state, worldIn, pos, null, null); } - - } } diff --git a/src/main/java/com/cannolicatfish/rankine/blocks/sedimentfan/SedimentFanTile.java b/src/main/java/com/cannolicatfish/rankine/blocks/sedimentfan/SedimentFanTile.java index 35851451de..9e5c6f3534 100644 --- a/src/main/java/com/cannolicatfish/rankine/blocks/sedimentfan/SedimentFanTile.java +++ b/src/main/java/com/cannolicatfish/rankine/blocks/sedimentfan/SedimentFanTile.java @@ -1,5 +1,6 @@ package com.cannolicatfish.rankine.blocks.sedimentfan; +import com.cannolicatfish.rankine.init.Config; import com.cannolicatfish.rankine.init.RankineBlocks; import com.cannolicatfish.rankine.init.RankineRecipeTypes; import com.cannolicatfish.rankine.init.RankineSoundEvents; @@ -11,19 +12,16 @@ import net.minecraft.core.particles.ParticleTypes; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; +import net.minecraft.tags.FluidTags; import net.minecraft.world.SimpleContainer; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import java.util.Arrays; -import java.util.List; import java.util.Random; import java.util.stream.Stream; @@ -37,30 +35,26 @@ public SedimentFanTile(BlockPos posIn, BlockState stateIn) { public static void tick(Level level, BlockPos pos, BlockState bs, SedimentFanTile tile) { if (!level.isAreaLoaded(tile.worldPosition, 1) || level.getGameTime() % 20 != 0) return; - List dir = Arrays.asList(Direction.NORTH,Direction.SOUTH,Direction.EAST,Direction.WEST); - List adjPos = Arrays.asList(level.getBlockState(pos.north()), level.getBlockState(pos.south()),level.getBlockState(pos.east()),level.getBlockState(pos.west())); - List waterPos = Arrays.asList(level.getFluidState(pos.relative(Direction.NORTH,2)), level.getFluidState(pos.relative(Direction.SOUTH,2)),level.getFluidState(pos.relative(Direction.EAST,2)),level.getFluidState(pos.relative(Direction.WEST,2))); - for (int i = 0; i < adjPos.size(); i++) { - BlockState adjState = adjPos.get(i); - FluidState adjWater = waterPos.get(i); - if (adjWater.is(Fluids.WATER) || adjWater.is(Fluids.FLOWING_WATER)) { - RockGeneratorRecipe recipe = level.getRecipeManager().getAllRecipesFor(RankineRecipeTypes.ROCK_GENERATOR).stream().flatMap((r) -> { - if (r.getGenType().equals(RockGeneratorUtils.RockGenType.SEDIMENTARY)) { - return DataFixUtils.orElseGet(RankineRecipeTypes.ROCK_GENERATOR.tryMatch(r, level, new SimpleContainer(adjState.getBlock().asItem().getDefaultInstance())).map(Stream::of),Stream::empty); - } - return null; - }).findFirst().orElse(null); - if (recipe != null) { - ItemStack output = recipe.getResultItem(); - if (!output.isEmpty() && output.getItem() instanceof BlockItem) { - level.setBlock(pos.relative(dir.get(i),2), ((BlockItem) output.getItem()).getBlock().defaultBlockState(), 19); - level.playSound(null,pos.relative(dir.get(i),2), RankineSoundEvents.SEDIMENT_FAN_GEN.get(), SoundSource.BLOCKS,1.0f,1.0f); - } - level.removeBlock(pos.relative(dir.get(i)),false); - } else { - level.setBlock(pos.relative(dir.get(i),2), RankineBlocks.BRECCIA.get().defaultBlockState(), 19); - level.playSound(null, pos.relative(dir.get(i),2), SoundEvents.SAND_HIT, SoundSource.BLOCKS, 1.0f, 1.0f); + for (Direction dir : Direction.values()) { + if (dir.getAxis().isVertical()) continue; + BlockState adjState = level.getBlockState(pos.relative(dir)); + if (!level.getFluidState(pos.relative(dir,2)).is(FluidTags.WATER) || !level.getFluidState(pos.relative(dir,3)).is(FluidTags.WATER)) continue; + RockGeneratorRecipe recipe = level.getRecipeManager().getAllRecipesFor(RankineRecipeTypes.ROCK_GENERATOR).stream().flatMap((r) -> { + if (r.getGenType().equals(RockGeneratorUtils.RockGenType.SEDIMENTARY)) { + return DataFixUtils.orElseGet(RankineRecipeTypes.ROCK_GENERATOR.tryMatch(r, level, new SimpleContainer(adjState.getBlock().asItem().getDefaultInstance())).map(Stream::of),Stream::empty); } + return null; + }).findFirst().orElse(null); + if (recipe != null) { + ItemStack output = recipe.getResultItem(); + if (!output.isEmpty() && output.getItem() instanceof BlockItem) { + level.setBlock(pos.relative(dir,3), ((BlockItem) output.getItem()).getBlock().defaultBlockState(), 19); + level.playSound(null,pos.relative(dir,3), RankineSoundEvents.SEDIMENT_FAN_GEN.get(), SoundSource.BLOCKS,1.0f,1.0f); + } + if (level.getRandom().nextFloat() < Config.GENERAL.ROCK_GENERATOR_REMOVAL_CHANCE.get()) level.removeBlock(pos.relative(dir),false); + } else if (level.getFluidState(pos.relative(dir)).is(FluidTags.WATER)) { + level.setBlock(pos.relative(dir,3), RankineBlocks.BRECCIA.get().defaultBlockState(), 19); + level.playSound(null, pos.relative(dir,3), SoundEvents.SAND_HIT, SoundSource.BLOCKS, 1.0f, 1.0f); } } } diff --git a/src/main/java/com/cannolicatfish/rankine/data/RankineAdvancementProvider.java b/src/main/java/com/cannolicatfish/rankine/data/RankineAdvancementProvider.java index ffeabc986d..1182fcbc09 100644 --- a/src/main/java/com/cannolicatfish/rankine/data/RankineAdvancementProvider.java +++ b/src/main/java/com/cannolicatfish/rankine/data/RankineAdvancementProvider.java @@ -62,14 +62,14 @@ protected void registerAdvancements(Consumer consumer, ExistingFile Advancement FLINT_AXE = Advancement.Builder.advancement().parent(ROPE).display(RankineItems.FLINT_AXE.get(), new TranslatableComponent("rankine.advancements.story.craft_flint_axe.title"), new TranslatableComponent("rankine.advancements.story.craft_flint_axe.description"),null, FrameType.TASK, true, false, false).addCriterion("flint_axe", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.FLINT_AXE.get())).addCriterion("stone_axe", InventoryChangeTrigger.TriggerInstance.hasItems(Items.STONE_AXE)).requirements(RequirementsStrategy.OR).save(consumer,"rankine:story/craft_flint_axe"); Advancement CHARCOAL_PIT = Advancement.Builder.advancement().parent(FLINT_AXE).display(RankineItems.CHARCOAL_PIT.get(), new TranslatableComponent("rankine.advancements.story.craft_charcoal_pit.title"), new TranslatableComponent("rankine.advancements.story.craft_charcoal_pit.description"),null, FrameType.TASK, true, true, false).addCriterion("charcoal_pit", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.CHARCOAL_PIT.get())).save(consumer,"rankine:story/craft_charcoal_pit"); Advancement FLINT_PICKAXE = Advancement.Builder.advancement().parent(ROPE).display(RankineItems.FLINT_PICKAXE.get(), new TranslatableComponent("rankine.advancements.story.craft_flint_pickaxe.title"), new TranslatableComponent("rankine.advancements.story.craft_flint_pickaxe.description"),null, FrameType.TASK, true, true, false).addCriterion("flint_pickaxe", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.FLINT_PICKAXE.get())).addCriterion("stone_pickaxe", InventoryChangeTrigger.TriggerInstance.hasItems(Items.STONE_PICKAXE)).requirements(RequirementsStrategy.OR).save(consumer,"rankine:story/craft_flint_pickaxe"); - andList(consumer, FLINT_PICKAXE, RankineBlocks.BLACK_DACITE.getStone(), "stone_collector", 400, RankineLists.RANKINE_STONES.stream().map(block -> (ItemLike) block.getStone()).collect(Collectors.toList())); + andListChallenge(consumer, FLINT_PICKAXE, RankineBlocks.BLACK_DACITE.getStone(), "stone_collector", 400, RankineLists.RANKINE_STONES.stream().map(block -> (ItemLike) block.getStone()).collect(Collectors.toList())); Advancement MIXING_BARREL = Advancement.Builder.advancement().parent(FLINT_PICKAXE).display(RankineItems.MIXING_BARREL.get(), new TranslatableComponent("rankine.advancements.story.craft_mixing_barrel.title"), new TranslatableComponent("rankine.advancements.story.craft_mixing_barrel.description"),null, FrameType.TASK, true, true, false).addCriterion("mixing_barrel", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.MIXING_BARREL.get())).save(consumer,"rankine:story/craft_mixing_barrel"); - Advancement SOILS = andList(consumer, MIXING_BARREL, RankineItems.HUMUS.get(), "soil_collector", 400, RankineLists.SOIL_BLOCKS.stream().map(block -> (ItemLike) block).collect(Collectors.toList())); + Advancement SOILS = andListChallenge(consumer, MIXING_BARREL, RankineItems.HUMUS.get(), "soil_collector", 400, RankineLists.SOIL_BLOCKS.stream().map(block -> (ItemLike) block).collect(Collectors.toList())); Advancement BLAST_FURNACE = Advancement.Builder.advancement().parent(MIXING_BARREL).display(Items.BLAST_FURNACE, new TranslatableComponent("rankine.advancements.story.craft_blast_furnace.title"), new TranslatableComponent("rankine.advancements.story.craft_blast_furnace.description"),null, FrameType.TASK, true, true, false).addCriterion("blast_furnace", InventoryChangeTrigger.TriggerInstance.hasItems(Items.BLAST_FURNACE)).save(consumer,"rankine:story/craft_blast_furnace"); Advancement REFRACTORY_BRICKS = Advancement.Builder.advancement().parent(MIXING_BARREL).display(RankineItems.REFRACTORY_BRICKS.get(), new TranslatableComponent("rankine.advancements.story.craft_refractory_bricks.title"), new TranslatableComponent("rankine.advancements.story.craft_refractory_bricks.description"),null, FrameType.TASK, true, true, false).addCriterion("refractory_bricks", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.REFRACTORY_BRICKS.get())).save(consumer,"rankine:story/craft_refractory_bricks"); Advancement ALLOY_FURNACE = Advancement.Builder.advancement().parent(REFRACTORY_BRICKS).display(RankineItems.ALLOY_FURNACE.get(), new TranslatableComponent("rankine.advancements.story.craft_alloy_furnace.title"), new TranslatableComponent("rankine.advancements.story.craft_alloy_furnace.description"),null, FrameType.GOAL, true, true, false).addCriterion("alloy_furnace", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.ALLOY_FURNACE.get())).save(consumer,"rankine:story/craft_alloy_furnace"); Advancement BATTERIES = Advancement.Builder.advancement().parent(ALLOY_FURNACE).display(RankineItems.SILVER_ZINC_BATTERY.get(), new TranslatableComponent("rankine.advancements.story.craft_battery.title"), new TranslatableComponent("rankine.advancements.story.craft_battery.description"),null, FrameType.TASK, true, true, false).addCriterion("battery1", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.SILVER_ZINC_BATTERY.get())).addCriterion("battery2", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.ZINC_BROMINE_BATTERY.get())).addCriterion("battery3", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.LEAD_ACID_BATTERY.get())).addCriterion("battery4", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.MAGNESIUM_BATTERY.get())).addCriterion("battery5", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.SODIUM_SULFUR_BATTERY.get())).addCriterion("battery6", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.VANADIUM_REDOX_BATTERY.get())).addCriterion("battery7", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.LITHIUM_ION_BATTERY.get())).requirements(RequirementsStrategy.OR).save(consumer,"rankine:story/craft_battery"); - Advancement RTGS = andList(consumer, BATTERIES, RankineItems.CURIUM_RTG.get(), "radioactive", 300, Stream.of(RankineItems.CURIUM_RTG.get(),RankineItems.STRONTIUM_RTG.get(),RankineItems.POLONIUM_RTG.get(),RankineItems.PLUTONIUM_RTG.get(),RankineItems.AMERICIUM_RTG.get()).map(block -> (ItemLike) block).collect(Collectors.toList())); + Advancement RTGS = andListChallenge(consumer, BATTERIES, RankineItems.CURIUM_RTG.get(), "radioactive", 300, Stream.of(RankineItems.CURIUM_RTG.get(),RankineItems.STRONTIUM_RTG.get(),RankineItems.POLONIUM_RTG.get(),RankineItems.PLUTONIUM_RTG.get(),RankineItems.AMERICIUM_RTG.get()).map(block -> (ItemLike) block).collect(Collectors.toList())); Advancement EVAP_TOWER = Advancement.Builder.advancement().parent(ALLOY_FURNACE).display(RankineItems.EVAPORATION_TOWER.get(), new TranslatableComponent("rankine.advancements.story.craft_evaporation_tower.title"), new TranslatableComponent("rankine.advancements.story.craft_evaporation_tower.description"),null, FrameType.TASK, true, false, false).addCriterion("evaporation_tower", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.EVAPORATION_TOWER.get())).save(consumer,"rankine:story/craft_evaporation_tower"); Advancement MAGNET = Advancement.Builder.advancement().parent(ALLOY_FURNACE).display(RankineItems.ALNICO_MAGNET.get(), new TranslatableComponent("rankine.advancements.story.craft_magnet.title"), new TranslatableComponent("rankine.advancements.story.craft_magnet.description"),null, FrameType.TASK, true, true, false).addCriterion("alnico_magnet", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.ALNICO_MAGNET.get())).addCriterion("rare_earth_magnet", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.RARE_EARTH_MAGNET.get())).addCriterion("simple_magnet", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.SIMPLE_MAGNET.get())).requirements(RequirementsStrategy.OR).save(consumer,"rankine:story/craft_magnet"); Advancement ELECTRO_MAGNET = Advancement.Builder.advancement().parent(BATTERIES).display(RankineItems.ALNICO_ELECTROMAGNET.get(), new TranslatableComponent("rankine.advancements.story.craft_electromagnet.title"), new TranslatableComponent("rankine.advancements.story.craft_electromagnet.description"),null, FrameType.TASK, true, false, false).addCriterion("alnico_electromagnet", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.ALNICO_ELECTROMAGNET.get())).addCriterion("rare_earth_electromagnet", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.RARE_EARTH_ELECTROMAGNET.get())).addCriterion("simple_electromagnet", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.SIMPLE_ELECTROMAGNET.get())).requirements(RequirementsStrategy.OR).save(consumer,"rankine:story/craft_electromagnet"); @@ -92,21 +92,21 @@ protected void registerAdvancements(Consumer consumer, ExistingFile Advancement GLOWSTONE = Advancement.Builder.advancement().parent(CRUCIBLE).display(Items.GLOWSTONE_DUST, new TranslatableComponent("rankine.advancements.story.make_glowstone.title"), new TranslatableComponent("rankine.advancements.story.make_glowstone.description"),null, FrameType.TASK, true, false, false).addCriterion("glowstone", InventoryChangeTrigger.TriggerInstance.hasItems(Items.GLOWSTONE_DUST)).save(consumer,"rankine:story/make_glowstone"); Advancement STEEL = Advancement.Builder.advancement().parent(CRUCIBLE).display(RankineItems.STEEL_INGOT.get(), new TranslatableComponent("rankine.advancements.story.make_steel.title"), new TranslatableComponent("rankine.advancements.story.make_steel.description"),null, FrameType.TASK, true, true, false).addCriterion("steel", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.STEEL_INGOT.get())).save(consumer,"rankine:story/make_steel"); Advancement INDUCTION_FURNACE = Advancement.Builder.advancement().parent(STEEL).display(RankineItems.INDUCTION_FURNACE.get(), new TranslatableComponent("rankine.advancements.story.craft_induction_furnace.title"), new TranslatableComponent("rankine.advancements.story.craft_induction_furnace.description"),null, FrameType.GOAL, true, true, false).addCriterion("induction_furnace", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.INDUCTION_FURNACE.get())).save(consumer,"rankine:story/craft_induction_furnace"); - Advancement ALLOYS = andList(consumer, INDUCTION_FURNACE, RankineItems.AMALGAM_INGOT.get(), "alloy_collector", 800, RankineLists.ALLOY_INGOTS.stream().map(block -> (ItemLike) block).collect(Collectors.toList())); + Advancement ALLOYS = andListChallenge(consumer, INDUCTION_FURNACE, RankineItems.AMALGAM_INGOT.get(), "alloy_collector", 800, RankineLists.ALLOY_INGOTS.stream().map(block -> (ItemLike) block).collect(Collectors.toList())); Advancement.Builder.advancement().parent(INDUCTION_FURNACE).rewards(AdvancementRewards.Builder.experience(200)).display(RankineItems.PURPLE_GOLD_HAMMER.get(), new TranslatableComponent("rankine.advancements.challenges.colored_gold_netherite.title"), new TranslatableComponent("rankine.advancements.challenges.colored_gold_netherite.description"), null, FrameType.CHALLENGE, true, true, false).addCriterion("netherite_gold", InventoryChangeTrigger.TriggerInstance.hasItems(IncludesCompositionPredicate.Builder.item().withComposition("Nr").of(RankineTags.Items.COLORED_GOLD_TOOLS).build())).save(consumer,"rankine:challenges/colored_gold_netherite"); - andList(consumer, ALLOYS, RankineItems.TOTEM_OF_HASTENING.get(), "totem_collector", 400, Stream.of(RankineItems.TOTEM_OF_HASTENING.get(),RankineItems.TOTEM_OF_BLAZING.get(),RankineItems.TOTEM_OF_PROMISING.get(),RankineItems.TOTEM_OF_COBBLING.get(),RankineItems.TOTEM_OF_ENDURING.get(),RankineItems.TOTEM_OF_INFUSING.get(),RankineItems.TOTEM_OF_INVIGORATING.get(),RankineItems.TOTEM_OF_LEVITATING.get(),RankineItems.TOTEM_OF_REPULSING.get(),RankineItems.TOTEM_OF_SOFTENING.get(),RankineItems.TOTEM_OF_TIMESAVING.get()).map(block -> (ItemLike) block).collect(Collectors.toList())); + andListChallenge(consumer, ALLOYS, RankineItems.TOTEM_OF_HASTENING.get(), "totem_collector", 400, Stream.of(RankineItems.TOTEM_OF_HASTENING.get(),RankineItems.TOTEM_OF_BLAZING.get(),RankineItems.TOTEM_OF_PROMISING.get(),RankineItems.TOTEM_OF_COBBLING.get(),RankineItems.TOTEM_OF_ENDURING.get(),RankineItems.TOTEM_OF_INFUSING.get(),RankineItems.TOTEM_OF_INVIGORATING.get(),RankineItems.TOTEM_OF_LEVITATING.get(),RankineItems.TOTEM_OF_REPULSING.get(),RankineItems.TOTEM_OF_SOFTENING.get(),RankineItems.TOTEM_OF_TIMESAVING.get()).map(block -> (ItemLike) block).collect(Collectors.toList())); Advancement FUSION_FURNACE = Advancement.Builder.advancement().parent(STEEL).display(RankineItems.FUSION_FURNACE.get(), new TranslatableComponent("rankine.advancements.story.craft_fusion_furnace.title"), new TranslatableComponent("rankine.advancements.story.craft_fusion_furnace.description"),null, FrameType.GOAL, true, true, false).addCriterion("fusion_furnace", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.FUSION_FURNACE.get())).save(consumer,"rankine:story/craft_fusion_furnace"); Advancement ELEMENT_INDEXER = Advancement.Builder.advancement().parent(FUSION_FURNACE).display(RankineItems.ELEMENT_INDEXER.get(), new TranslatableComponent("rankine.advancements.story.craft_element_indexer.title"), new TranslatableComponent("rankine.advancements.story.craft_element_indexer.description"),null, FrameType.TASK, true, true, false).addCriterion("element_indexer", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.ELEMENT_INDEXER.get())).save(consumer,"rankine:story/craft_element_indexer"); Advancement PENNING_TRAP = Advancement.Builder.advancement().parent(FUSION_FURNACE).display(RankineItems.PENNING_TRAP.get(), new TranslatableComponent("rankine.advancements.story.craft_penning_trap.title"), new TranslatableComponent("rankine.advancements.story.craft_penning_trap.description"),null, FrameType.TASK, true, true, false).addCriterion("penning_trap", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.PENNING_TRAP.get())).save(consumer,"rankine:story/craft_penning_trap"); Advancement SADDLE_TREE = Advancement.Builder.advancement().parent(STEEL).display(RankineItems.SADDLE_TREE.get(), new TranslatableComponent("rankine.advancements.story.craft_saddle_tree.title"), new TranslatableComponent("rankine.advancements.story.craft_saddle_tree.description"),null, FrameType.TASK, true, false, false).addCriterion("saddle_tree", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.SADDLE_TREE.get())).save(consumer,"rankine:story/craft_saddle_tree"); Advancement BRIGADINE_ARMOR = Advancement.Builder.advancement().parent(STEEL).display(RankineItems.BRIGADINE_CHESTPLATE.get(), new TranslatableComponent("rankine.advancements.story.craft_brigandine_armor.title"), new TranslatableComponent("rankine.advancements.story.craft_brigandine_armor.description"),null, FrameType.TASK, true, true, false).addCriterion("brigandine_armor", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.BRIGADINE_HELMET.get(),RankineItems.BRIGADINE_CHESTPLATE.get(),RankineItems.BRIGADINE_LEGGINGS.get(),RankineItems.BRIGADINE_BOOTS.get())).save(consumer,"rankine:story/craft_brigandine_armor"); - andList(consumer, PENNING_TRAP, RankineItems.ELEMENT.get(), "element_collector", 1000, Stream.concat(RankineLists.ELEMENT_INGOTS.stream(), Stream.of(Items.IRON_INGOT, Items.COPPER_INGOT, Items.GOLD_INGOT, Items.NETHERITE_INGOT)).map(block -> (ItemLike) block).collect(Collectors.toList())); + andListChallenge(consumer, PENNING_TRAP, RankineItems.ELEMENT.get(), "element_collector", 1000, Stream.concat(RankineLists.ELEMENT_INGOTS.stream(), Stream.of(Items.IRON_INGOT, Items.COPPER_INGOT, Items.GOLD_INGOT, Items.NETHERITE_INGOT)).map(block -> (ItemLike) block).collect(Collectors.toList())); Advancement GAS_MASK = Advancement.Builder.advancement().parent(ROOT).display(RankineItems.GAS_MASK.get(), new TranslatableComponent("rankine.advancements.story.craft_gas_mask.title"), new TranslatableComponent("rankine.advancements.story.craft_gas_mask.description"),null, FrameType.TASK, true, false, false).addCriterion("gas_mask", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.GAS_MASK.get())).save(consumer,"rankine:story/craft_gas_mask"); Advancement SHULKER_GAS_VACUUM = Advancement.Builder.advancement().parent(GAS_MASK).display(RankineItems.SHULKER_GAS_VACUUM.get(), new TranslatableComponent("rankine.advancements.story.craft_shulker_gas_vacuum.title"), new TranslatableComponent("rankine.advancements.story.craft_shulker_gas_vacuum.description"),null, FrameType.TASK, true, true, false).addCriterion("shulker_gas_vacuum", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.SHULKER_GAS_VACUUM.get())).save(consumer,"rankine:story/craft_shulker_gas_vacuum"); Advancement DISTILLATION_TOWER = Advancement.Builder.advancement().parent(SHULKER_GAS_VACUUM).display(RankineItems.DISTILLATION_TOWER.get(), new TranslatableComponent("rankine.advancements.story.craft_distillation_tower.title"), new TranslatableComponent("rankine.advancements.story.craft_distillation_tower.description"),null, FrameType.TASK, true, true, false).addCriterion("distillation_tower", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.DISTILLATION_TOWER.get())).save(consumer,"rankine:story/craft_distillation_tower"); - Advancement GASSES = andList(consumer, DISTILLATION_TOWER, RankineItems.HYDROGEN_SULFIDE_GAS_BOTTLE.get(), "gas_collector", 700, RankineLists.GAS_BOTTLES.stream().map(block -> (ItemLike) block).collect(Collectors.toList())); + Advancement GASSES = andListChallenge(consumer, DISTILLATION_TOWER, RankineItems.HYDROGEN_SULFIDE_GAS_BOTTLE.get(), "gas_collector", 700, RankineLists.GAS_BOTTLES.stream().map(block -> (ItemLike) block).collect(Collectors.toList())); Advancement PROSPECTING_STICK = Advancement.Builder.advancement().parent(FLINT_PICKAXE).display(RankineItems.PROSPECTING_STICK.get(), new TranslatableComponent("rankine.advancements.story.craft_prospecting_stick.title"), new TranslatableComponent("rankine.advancements.story.craft_prospecting_stick.description"),null, FrameType.TASK, true, true, false).addCriterion("prospecting_stick", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.PROSPECTING_STICK.get())).save(consumer,"rankine:story/craft_prospecting_stick"); Advancement ROCK_DRILL = Advancement.Builder.advancement().parent(PROSPECTING_STICK).display(RankineItems.ROCK_DRILL.get(), new TranslatableComponent("rankine.advancements.story.craft_rock_drill.title"), new TranslatableComponent("rankine.advancements.story.craft_rock_drill.description"),null, FrameType.TASK, true, false, false).addCriterion("rock_drill", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.ROCK_DRILL.get())).save(consumer,"rankine:story/craft_rock_drill"); @@ -115,21 +115,35 @@ protected void registerAdvancements(Consumer consumer, ExistingFile Advancement WOODEN_GOLD_PAN = Advancement.Builder.advancement().parent(ROOT).display(RankineItems.WOODEN_GOLD_PAN.get(), new TranslatableComponent("rankine.advancements.story.craft_wooden_gold_pan.title"), new TranslatableComponent("rankine.advancements.story.craft_wooden_gold_pan.description"),null, FrameType.TASK, true, false, false).addCriterion("wooden_gold_pan", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.WOODEN_GOLD_PAN.get())).save(consumer,"rankine:story/craft_wooden_gold_pan"); Advancement STEEL_GOLD_PAN = Advancement.Builder.advancement().parent(WOODEN_GOLD_PAN).display(RankineItems.STEEL_GOLD_PAN.get(), new TranslatableComponent("rankine.advancements.story.craft_steel_gold_pan.title"), new TranslatableComponent("rankine.advancements.story.craft_steel_gold_pan.description"),null, FrameType.TASK, true, false, false).addCriterion("steel_gold_pan", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.STEEL_GOLD_PAN.get())).save(consumer,"rankine:story/craft_steel_gold_pan"); - Advancement WOODEN_HAMMER = Advancement.Builder.advancement().parent(ROOT).display(RankineItems.WOODEN_HAMMER.get(), new TranslatableComponent("rankine.advancements.story.craft_wooden_hammer.title"), new TranslatableComponent("rankine.advancements.story.craft_wooden_hammer.description"),null, FrameType.TASK, true, true, false).addCriterion("wooden_hammer", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.WOODEN_HAMMER.get())).save(consumer,"rankine:story/craft_wooden_hammer"); + Advancement WOODEN_HAMMER = Advancement.Builder.advancement().parent(ROOT).display(RankineItems.WOODEN_HAMMER.get(), new TranslatableComponent("rankine.advancements.story.craft_wooden_hammer.title"), new TranslatableComponent("rankine.advancements.story.craft_wooden_hammer.description"),null, FrameType.TASK, true, false, false).addCriterion("wooden_hammer", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.WOODEN_HAMMER.get())).save(consumer,"rankine:story/craft_wooden_hammer"); Advancement COBBLESTONE = Advancement.Builder.advancement().parent(WOODEN_HAMMER).display(Items.COBBLESTONE, new TranslatableComponent("rankine.advancements.story.get_cobblestone.title"), new TranslatableComponent("rankine.advancements.story.get_cobblestone.description"),null, FrameType.TASK, true, false, false).addCriterion("cobblestone", InventoryChangeTrigger.TriggerInstance.hasItems(Items.COBBLESTONE)).save(consumer,"rankine:story/get_cobblestone"); Advancement STONE_HAMMER = Advancement.Builder.advancement().parent(WOODEN_HAMMER).display(RankineItems.STONE_HAMMER.get(), new TranslatableComponent("rankine.advancements.story.craft_stone_hammer.title"), new TranslatableComponent("rankine.advancements.story.craft_stone_hammer.description"),null, FrameType.TASK, true, false, false).addCriterion("stone_hammer", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.STONE_HAMMER.get())).save(consumer,"rankine:story/craft_stone_hammer"); Advancement BANDED_IRON = Advancement.Builder.advancement().parent(STONE_HAMMER).display(RankineItems.BANDED_IRON_FORMATION.get(), new TranslatableComponent("rankine.advancements.story.get_banded_iron_formation.title"), new TranslatableComponent("rankine.advancements.story.get_banded_iron_formation.description"),null, FrameType.TASK, true, false, false).addCriterion("banded_iron_formation", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.BANDED_IRON_FORMATION.get())).save(consumer,"rankine:story/get_banded_iron_formation"); Advancement BOG_IRON = Advancement.Builder.advancement().parent(STONE_HAMMER).display(RankineItems.BOG_IRON.get(), new TranslatableComponent("rankine.advancements.story.get_bog_iron.title"), new TranslatableComponent("rankine.advancements.story.get_bog_iron.description"),null, FrameType.TASK, true, false, false).addCriterion("bog_iron", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.BOG_IRON.get())).save(consumer,"rankine:story/get_bog_iron"); Advancement IRONSTONE = Advancement.Builder.advancement().parent(STONE_HAMMER).display(RankineItems.IRONSTONE.get(), new TranslatableComponent("rankine.advancements.story.get_ironstone.title"), new TranslatableComponent("rankine.advancements.story.get_ironstone.description"),null, FrameType.TASK, true, false, false).addCriterion("ironstone", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.IRONSTONE.get())).save(consumer,"rankine:story/get_ironstone"); Advancement LEVEL_2_HAMMER = Advancement.Builder.advancement().parent(STONE_HAMMER).display(RankineItems.ALLOY_HAMMER.get(), new TranslatableComponent("rankine.advancements.story.craft_alloy_hammer.title"), new TranslatableComponent("rankine.advancements.story.craft_alloy_hammer.description"),null, FrameType.GOAL, true, true, false).addCriterion("hammer", InventoryChangeTrigger.TriggerInstance.hasItems(HarvestLevelPredicate.Builder.item().withLevel(MinMaxBounds.Ints.atLeast(2)).of(RankineTags.Items.HAMMERS).build())).save(consumer,"rankine:story/craft_alloy_hammer"); - andList(consumer, LEVEL_2_HAMMER, RankineItems.TOURMALINE_GEODE.get(), "geode_collector", 300, RankineLists.GEODES.stream().map(block -> (ItemLike) block).collect(Collectors.toList())); + andListChallenge(consumer, LEVEL_2_HAMMER, RankineItems.TOURMALINE_GEODE.get(), "geode_collector", 300, RankineLists.GEODES.stream().map(block -> (ItemLike) block).collect(Collectors.toList())); + orList(consumer, LEVEL_2_HAMMER, RankineItems.IRON_TIER_CRUSHING_HEAD.get(), "crushing_heads", RankineLists.CRUSHING_HEADS.stream().map(block -> (ItemLike) block).collect(Collectors.toList())); Advancement METEORIC_IRON = Advancement.Builder.advancement().parent(LEVEL_2_HAMMER).display(RankineItems.METEORIC_IRON.get(), new TranslatableComponent("rankine.advancements.story.get_meteoric_iron.title"), new TranslatableComponent("rankine.advancements.story.get_meteoric_iron.description"),null, FrameType.TASK, true, true, false).addCriterion("meteoric_iron", InventoryChangeTrigger.TriggerInstance.hasItems(RankineItems.METEORIC_IRON.get())).save(consumer,"rankine:story/get_meteoric_iron"); - Advancement METEORIC = andList(consumer, METEORIC_IRON, RankineItems.LONSDALEITE_DIAMOND.get(), "meteoric_materials", 300, Stream.of(RankineItems.KAMACITE.get(),RankineItems.ANTITAENITE.get(),RankineItems.TAENITE.get(),RankineItems.TETRATAENITE.get(),RankineItems.LONSDALEITE_ORE.get()).map(block -> (ItemLike) block).collect(Collectors.toList())); + Advancement METEORIC = andListChallenge(consumer, METEORIC_IRON, RankineItems.LONSDALEITE_DIAMOND.get(), "meteoric_materials", 300, Stream.of(RankineItems.KAMACITE.get(),RankineItems.ANTITAENITE.get(),RankineItems.TAENITE.get(),RankineItems.TETRATAENITE.get(),RankineItems.LONSDALEITE_ORE.get()).map(block -> (ItemLike) block).collect(Collectors.toList())); } - - private Advancement andList(Consumer consumer, Advancement parent, ItemLike displayItem, String text, int XP, List itemList) { + private Advancement orList(Consumer consumer, Advancement parent, ItemLike displayItem, String text, List itemList) { + Advancement.Builder temp = Advancement.Builder.advancement().parent(parent).display(displayItem, new TranslatableComponent("rankine.advancements.story."+text+".title"), new TranslatableComponent("rankine.advancements.story."+text+".description"),null, FrameType.TASK, true, true, false); + for (ItemLike item : itemList) { + temp.addCriterion(item.asItem().getRegistryName().getPath(), InventoryChangeTrigger.TriggerInstance.hasItems(item)); + } + return temp.requirements(RequirementsStrategy.OR).save(consumer,"rankine:story/"+text); + } + private Advancement andList(Consumer consumer, Advancement parent, ItemLike displayItem, String text, List itemList) { + Advancement.Builder temp = Advancement.Builder.advancement().parent(parent).display(displayItem, new TranslatableComponent("rankine.advancements.story."+text+".title"), new TranslatableComponent("rankine.advancements.story."+text+".description"),null, FrameType.TASK, true, true, false); + for (ItemLike item : itemList) { + temp.addCriterion(item.asItem().getRegistryName().getPath(), InventoryChangeTrigger.TriggerInstance.hasItems(item)); + } + return temp.requirements(RequirementsStrategy.AND).save(consumer,"rankine:story/"+text); + } + private Advancement andListChallenge(Consumer consumer, Advancement parent, ItemLike displayItem, String text, int XP, List itemList) { Advancement.Builder temp = Advancement.Builder.advancement().parent(parent).display(displayItem, new TranslatableComponent("rankine.advancements.challenges."+text+".title"), new TranslatableComponent("rankine.advancements.challenges."+text+".description"),null, FrameType.CHALLENGE, true, true, false); for (ItemLike item : itemList) { temp.addCriterion(item.asItem().getRegistryName().getPath(), InventoryChangeTrigger.TriggerInstance.hasItems(item)); diff --git a/src/main/java/com/cannolicatfish/rankine/data/RankineLangProvider.java b/src/main/java/com/cannolicatfish/rankine/data/RankineLangProvider.java index 0c9a74a5a0..7af73b30c6 100644 --- a/src/main/java/com/cannolicatfish/rankine/data/RankineLangProvider.java +++ b/src/main/java/com/cannolicatfish/rankine/data/RankineLangProvider.java @@ -806,8 +806,9 @@ protected void addTranslations() { add("rankine.jei.metamorphic", "Metamorphic Rock Generator"); add("rankine.jei.volcanic", "Volcanic Rock Generator"); add("rankine.jei.air_distillation", "Air Distillation"); - add("rankine.jei.treetapping", "Treetap"); + add("rankine.jei.treetapping", "Tree Tapping"); add("rankine.jei.stripping", "Axe Stripping"); + add("rankine.jei.cauldron_drying", "Cauldron Drying"); add("itemGroup.rankine_world", "Project Rankine Building"); add("itemGroup.rankine_metallurgy", "Project Rankine Metallurgy"); add("itemGroup.rankine_elements", "Project Rankine: Elements"); @@ -925,6 +926,8 @@ protected void addTranslations() { add("rankine.advancements.story.craft_stone_hammer.description", "Constructing a stronger mallet drops more resources from crushed blocks"); add("rankine.advancements.story.craft_alloy_hammer.title", "Dust to Dust Again"); add("rankine.advancements.story.craft_alloy_hammer.description", "Make a hammer with a harvest level of 2 or greater (alloys required) to crack open those tougher materials"); + add("rankine.advancements.story.crushing_heads.title", "Pokey Pokey"); + add("rankine.advancements.story.crushing_heads.description", "Automatically crush blocks by pushing Crushing Heads with pistons"); add("rankine.advancements.story.get_cobblestone.title", "Cobble Cobble"); add("rankine.advancements.story.get_cobblestone.description", "Obtain cobblestone from crushing stones using a hammer"); add("rankine.advancements.story.craft_mixing_barrel.title", "Mix it Up"); @@ -997,8 +1000,6 @@ protected void addTranslations() { add("rankine.advancements.story.craft_distillation_tower.description", "Construct a Distillation Tower to obtain gases from the air"); add("rankine.advancements.story.craft_induction_furnace.title", "Heating Up"); add("rankine.advancements.story.craft_induction_furnace.description", "Make an Induction Furnace for more advanced alloys"); - add("rankine.advancements.story.craft_sediment_fan.title", "Spin Cycle"); - add("rankine.advancements.story.craft_sediment_fan.description", "Make a Sediment Fan to generate Sedimentary Stones"); add("rankine.advancements.story.craft_magnet.title", "Attraction"); add("rankine.advancements.story.craft_magnet.description", "Make a handheld magnet to bring items closer to you"); add("rankine.advancements.story.craft_tree_tap.title", "Flowing Phloem"); @@ -1246,10 +1247,14 @@ protected void addTranslations() { add("rankine.journal.cat_constructs.fusion_furnace.name", "Fusion Furnace"); add("rankine.journal.cat_constructs.fusion_furnace.text1", "The Fusion Furnace utilizes solids, liquids, and gases to make new outputs. Many recipes which involve gases will require Bottled Gases and Empty Bottles. You can acquire Bottled Gases using either the $(l:materials/gasses)Gas Bottler$() or the $(l:materials/gasses)Shulker Gas Vacuum$(). In order for a recipe to go through, you must have the required ingredients, fluid in the input fluid tank, and bottled gas in the slot adjacent to the tank."); add("rankine.journal.cat_constructs.fusion_furnace.text2", " This machine does not use coal, and must use electrical energy from items such as Batteries or RTGs."); - add("rankine.journal.cat_constructs.fusion_furnace.batteries_header", "Batteries"); - add("rankine.journal.cat_constructs.fusion_furnace.batteries", "Batteries are energy storage devices that fuel late game machines. Currently they are single use."); - add("rankine.journal.cat_constructs.fusion_furnace.rtg_header", "RTGs"); - add("rankine.journal.cat_constructs.fusion_furnace.rtg", "RTGs are radioactively powered batteries with a much higher capacity."); + + add("rankine.journal.cat_constructs.batteries.name", "Batteries"); + add("rankine.journal.cat_constructs.batteries.text1", "Batteries are energy storage devices that fuel electric machines."); + add("rankine.journal.cat_constructs.batteries.text2", "Batteries"); + add("rankine.journal.cat_constructs.batteries.text3", ""); + add("rankine.journal.cat_constructs.batteries.text4", "The battery charger increases the charge of batteries within its inventory every ~20 seconds. The amount of charge returned depends on the capacity of the battery charger, shown by the red bar in the gui. To increase the charge capacity, place a daylight sensor on top of the charger. Additional charge can be added when lightning strikes a lightning rod adjacent to the charger."); + add("rankine.journal.cat_constructs.batteries.text5", "RTGs"); + add("rankine.journal.cat_constructs.batteries.text6", "RTGs are radioactively powered batteries with a much higher capacity. They cannot be recharged."); add("rankine.journal.cat_constructs.beehive_oven.name", "Beehive Oven"); add("rankine.journal.cat_constructs.beehive_oven.text1", "The beehive oven is an in-world furnace that slowly smelts blocks placed inside it. While holding bricks in the offhand, right click with Building Tool on the Oven Pit to place blocks. Or you can place the blocks manually by matching the structure on the next page."); @@ -1467,7 +1472,8 @@ protected void addTranslations() { add("rankine.journal.cat_sediments.sedimentary.name", "Sedimentary Stones"); add("rankine.journal.cat_sediments.sedimentary.text1", "Sedimentary stones are formed from compactions and cementing of sediments."); add("rankine.journal.cat_sediments.sedimentary.text2", "Generation"); - add("rankine.journal.cat_sediments.sedimentary.text3", "AAAAAAAAAAA. See JEI for generator recipes."); + add("rankine.journal.cat_sediments.sedimentary.text3", "Sediment blocks that despawn in water will sink to the bottom and become their stone counterpart. A more automatic method of generation involves the Sediment Fan.. See JEI for generator recipes."); + add("rankine.journal.cat_sediments.sedimentary.text4", "The fan encourages particles of adjacent blocks to be pushed into water streams, where they will be compacted and converted into stones. Place a sediment block adjacent to the fan and a water source one block further out in a line. The stone will be generated on the third block out if it is also water."); add("rankine.journal.cat_sediments.sedimentary.sandstone", "Found in river, ocean and beach biomes"); add("rankine.journal.cat_sediments.sedimentary.red_sandstone", "Not found in nature."); add("rankine.journal.cat_sediments.sedimentary.soul_sandstone", "Found in soul sand valley biomes"); @@ -1595,7 +1601,6 @@ protected void addTranslations() { add("rankine.journal.cat_tools.name", "Tools"); add("rankine.journal.cat_tools.desc", "Various implements use to manipulate the world."); - add("rankine.journal.cat_tools.totems.name", "Totems"); add("rankine.journal.cat_tools.totems.text1", "Totems are relics derived from the natural magics of the world. While in the offhand, they provide various effects."); add("rankine.journal.cat_tools.totems.totem_of_blazing", "When on fire, deal 1.5x damage and lay fire at your feet. When health is less than 25% or you fall in lava, this totem disappears and provides Fire Resistance and a small amount of Regeneration."); @@ -1609,18 +1614,28 @@ protected void addTranslations() { add("rankine.journal.cat_tools.totems.totem_of_softening", "The delicacy of an open hand allows you to collect blocks that naturally require silk touch."); add("rankine.journal.cat_tools.totems.totem_of_timesaving", "Provides additional movement speed across all solid terrain."); - add("rankine.journal.cat_tools.building_tool.name", "Building Tool"); - add("rankine.journal.cat_tools.building_tool.text1", "A catch all tool for creating new blockstates from a given block. With the building tool in the offhand, shift-right click to change the mode from 0-7. Then place blocks to see if they have an affected build state."); - add("rankine.journal.cat_tools.building_tool.text2", "Currently affects Stone Bricks, Polished Stones, Bricks, Planks, Columns, Asphalt, Concrete/Cement, Ornament and Metal Bars blocks."); - - add("rankine.journal.cat_tools.common_tools.name", "Other Tools"); add("rankine.journal.cat_tools.common_tools.text1", ""); add("rankine.journal.cat_tools.common_tools.glass_cutter", "A tool effective for breaking glass materials. Comes with silk touch by default. Right click glass blocks to convert them into glass panes."); add("rankine.journal.cat_tools.common_tools.rock_drill", "Right click the ground to receive a sample report of all the stones located below."); add("rankine.journal.cat_tools.common_tools.fire_extinguisher", "Right click to extinguish fires in a radius in front of you."); - + add("rankine.journal.cat_tools.armor.name", "Armor"); + add("rankine.journal.cat_tools.armor.text1", "Various armor sets exist in the game."); + add("rankine.journal.cat_tools.armor.brigandine_title", "Brigandine Armor"); + add("rankine.journal.cat_tools.armor.brigandine", "Steel plated leather armor. Made by combining leather armor and a steel ingot in the smithing table."); + add("rankine.journal.cat_tools.armor.diving_title", "Diving Armor"); + add("rankine.journal.cat_tools.armor.diving", "Armor made from brass. Allows the wearer to hold their breath for a longer period of time."); + add("rankine.journal.cat_tools.armor.conduit_diving_title", "Conduit Diving Armor"); + add("rankine.journal.cat_tools.armor.conduit_diving", "Upgraded diving armor. Provides the wearer with conduit power when in water."); + add("rankine.journal.cat_tools.armor.alloy_title", "Alloy Armor"); + add("rankine.journal.cat_tools.armor.alloy", "Like tools, alloy armor gets it's stats (armor, toughness, durability) depending on the composition of the alloy. Recipes for alloy armor can be added external using datapacks or mods. By default there are a few different recipes."); + + add("rankine.journal.cat_tools.arrows.name", "Arrows"); + add("rankine.journal.cat_tools.arrows.text1", "Alloy arrows gets their stats (damage) depending on the composition of the alloy. Recipes for alloy armor can be added external using datapacks or mods."); + add("rankine.journal.cat_tools.arrows.steel_arrow", "An upgraded standard arrow. Deals more damage.\""); + add("rankine.journal.cat_tools.arrows.thorium_arrow", "Summons lightning on impact."); + add("rankine.journal.cat_tools.arrows.magnesium_arrow", "Blinds nearby enemies when on ground. Hit mobs will trigger nearby undead mobs to attack. Creepers explode on impact."); add("rankine.journal.cat_tools.ore_detection.name", "Ore Detection"); add("rankine.journal.cat_tools.ore_detection.text1", ""); @@ -1639,8 +1654,12 @@ protected void addTranslations() { add("rankine.journal.cat_tools.equipment.text6", "Goggles are worn on the head and provide better vision and movemet speed in water. Combine a helmet of any type with goggles in an anvil to apply the $(l:mechanics/enchantments#aqua_lense)Aqua Lense$() enchantment."); add("rankine.journal.cat_tools.equipment.text7", "A Gas Mask are worn on the head and protects against suffocation in gas blocks. Combine helmet of any type with a gas mask in an anvil to apply the $(l:mechanics/enchantments#gas_protection)Gas Protection$() enchantment."); + add("rankine.journal.cat_tools.element_indexer.name", "Element Indexer"); + add("rankine.journal.cat_tools.element_indexer.text1", "Upon inspection most materials used in the alloying process have some inherent properties to them. For the end goal of making ingots, this doesn't matter much, but for tools there can be profound effects."); + add("rankine.journal.cat_tools.element_indexer.text2", "To see the stats of an element, right click the element indexer and place the ingot in the top left slot. The stats will show below for each of the various categories. Additionally, when in the GUI, scrolling will change the percentage of the material you are looking at. See $(l:alloying/alloying)Notes About Alloying$() for details."); + add("rankine.journal.cat_tools.utility_tools.name", "Utility Tools"); - add("rankine.journal.cat_tools.utility_tools.text1", ""); + add("rankine.journal.cat_tools.utility_tools.text1", "Various utility tools have been added to display information. Tools will display on the status bar while in your main hand or off hand. Default is head position, sneak for position at feet."); add("rankine.journal.cat_tools.utility_tools.altimeter", "Displays the current Y value."); add("rankine.journal.cat_tools.utility_tools.photometer", "Displays the current light level."); add("rankine.journal.cat_tools.utility_tools.compass", "Displays the current X and Z coordinates."); @@ -1649,12 +1668,12 @@ protected void addTranslations() { add("rankine.journal.cat_tools.utility_tools.biometer", "Displays the current biome."); add("rankine.journal.cat_tools.utility_tools.magnetometer", "Displays the current magnetic field strength. Field strength is dependent on nearby blocks."); - add("rankine.journal.cat_constructs.magnets.name", "Magnets"); - add("rankine.journal.cat_constructs.magnets.text1", "Magnets can pull in surrounding items when right-clicked in hand. Config options exist for magnet ranges."); - add("rankine.journal.cat_constructs.magnets.lodestone", "A weakly powered natural magnet. Lodestones will actively pull in items with a 2 block range. Obtained by crushing $(world/ores#magnetite_ore)Magnetite Ore$()."); - add("rankine.journal.cat_constructs.magnets.simple_magnet", "Default Range: 4 blocks"); - add("rankine.journal.cat_constructs.magnets.alnico_magnet", "Default Range: 8 blocks"); - add("rankine.journal.cat_constructs.magnets.rare_earth_magnet", "Default Range: 12 blocks"); + add("rankine.journal.cat_tools.magnets.name", "Magnets"); + add("rankine.journal.cat_tools.magnets.text1", "Magnets can pull in surrounding items when right-clicked in hand. Config options exist for magnet ranges."); + add("rankine.journal.cat_tools.magnets.lodestone", "A weakly powered natural magnet. Lodestones will actively pull in items with a 2 block range. Obtained by crushing $(world/ores#magnetite_ore)Magnetite Ore$()."); + add("rankine.journal.cat_tools.magnets.simple_magnet", "Default Range: 4 blocks"); + add("rankine.journal.cat_tools.magnets.alnico_magnet", "Default Range: 8 blocks"); + add("rankine.journal.cat_tools.magnets.rare_earth_magnet", "Default Range: 12 blocks"); add("rankine.journal.cat_tools.standard_tools.name", "Standard Tools"); add("rankine.journal.cat_tools.standard_tools.text1", ""); diff --git a/src/main/java/com/cannolicatfish/rankine/events/handlers/common/ItemAttributeModifierHandler.java b/src/main/java/com/cannolicatfish/rankine/events/handlers/common/ItemAttributeModifierHandler.java index a2fc5e2629..afdeb19de7 100644 --- a/src/main/java/com/cannolicatfish/rankine/events/handlers/common/ItemAttributeModifierHandler.java +++ b/src/main/java/com/cannolicatfish/rankine/events/handlers/common/ItemAttributeModifierHandler.java @@ -93,5 +93,11 @@ public static void onItemAttributeModification(ItemAttributeModifierEvent event) 2, AttributeModifier.Operation.ADDITION)); } + /* + if ((EnchantmentHelper.getItemEnchantmentLevel(RankineEnchantments.DUNE_WALKER.get(), stack) > 0 || stack.is(RankineItems.SANDALS.get())) && event.getSlotType() == EquipmentSlot.FEET) { + event.addModifier(RankineAttributes.STEP_HEIGHT, RankineAttributes.STEP); + } + + */ } } diff --git a/src/main/java/com/cannolicatfish/rankine/events/handlers/common/PlayerTickHandler.java b/src/main/java/com/cannolicatfish/rankine/events/handlers/common/PlayerTickHandler.java index d5613eea2f..454cf5b219 100644 --- a/src/main/java/com/cannolicatfish/rankine/events/handlers/common/PlayerTickHandler.java +++ b/src/main/java/com/cannolicatfish/rankine/events/handlers/common/PlayerTickHandler.java @@ -11,6 +11,7 @@ import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.tags.FluidTags; +import net.minecraft.tags.TagKey; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; @@ -193,156 +194,108 @@ public static void onPlayerTick(TickEvent.PlayerTickEvent event) { } public static void movementModifier(TickEvent.PlayerTickEvent event) { - Player player = event.player; - Level world = event.player.level; - BlockPos pos; - if (player.getY() % 1 < 0.5) { - pos = player.blockPosition().below(); - } else { - pos = player.blockPosition(); - } - Block ground = world.getBlockState(pos).getBlock(); + Player playerIn = event.player; + AttributeInstance movementSpeed = playerIn.getAttribute(Attributes.MOVEMENT_SPEED); + AttributeInstance swimSpeed = playerIn.getAttribute(ForgeMod.SWIM_SPEED.get()); + AttributeInstance stepHeight = playerIn.getAttribute(RankineAttributes.STEP_HEIGHT); - Item feetEquipment = player.getItemBySlot(EquipmentSlot.FEET).getItem(); - Item headEquipment = player.getItemBySlot(EquipmentSlot.HEAD).getItem(); - if (player.isEyeInFluid(FluidTags.WATER) && (headEquipment == RankineItems.GOGGLES.get() || RankineEnchantmentHelper.hasAquaLense(player))) { - player.addEffect(new MobEffectInstance(MobEffects.NIGHT_VISION,400,0,false,false)); + if (playerIn.isCreative() || playerIn.isFallFlying()) { + List mods = Arrays.asList(RankineAttributes.SNOW_DRIFTER, RankineAttributes.SWIFT_SWIMMER, RankineAttributes.AQUA_LENSE, RankineAttributes.SPEED_SKATER, RankineAttributes.SNOW_DRIFTER, RankineAttributes.DUNE_WALKER, RankineAttributes.CONCRETE_MS, RankineAttributes.GRASS_PATH_MS, RankineAttributes.ROMAN_CONCRETE_MS, RankineAttributes.DIRT_MS, RankineAttributes.MUD_MS, RankineAttributes.POLISHED_STONE_MS, RankineAttributes.SAND_MS, RankineAttributes.SNOW_MS, RankineAttributes.WOODEN_MS); + for (AttributeModifier m : mods) { + movementSpeed.removeModifier(m); + } + return; } - AttributeInstance movementSpeed = player.getAttribute(Attributes.MOVEMENT_SPEED); - AttributeInstance swimSpeed = player.getAttribute(ForgeMod.SWIM_SPEED.get()); - ITagManager blockITagManager = ForgeRegistries.BLOCKS.tags(); + Level levelIn = event.player.level; + Item feetEquipment = playerIn.getItemBySlot(EquipmentSlot.FEET).getItem(); + Item headEquipment = playerIn.getItemBySlot(EquipmentSlot.HEAD).getItem(); + BlockPos groundPos = playerIn.getY() % 1 < 0.5 ? playerIn.blockPosition().below() : playerIn.blockPosition(); + Block groundBlock = levelIn.getBlockState(groundPos).getBlock(); - if (Config.GENERAL.MOVEMENT_MODIFIERS.get() && blockITagManager != null) { - List mods = Arrays.asList(RankineAttributes.BRICKS_MS, RankineAttributes.CONCRETE_MS, RankineAttributes.GRASS_PATH_MS, RankineAttributes.ROMAN_CONCRETE_MS, RankineAttributes.DIRT_MS, RankineAttributes.MUD_MS, RankineAttributes.POLISHED_STONE_MS, RankineAttributes.SAND_MS, RankineAttributes.SNOW_MS, RankineAttributes.WOODEN_MS); - if (player.isCreative() || player.isFallFlying()) { - for (AttributeModifier m : mods) { - movementSpeed.removeModifier(m); - } - } else if (blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_PATHS).contains(ground) && !movementSpeed.hasModifier(RankineAttributes.GRASS_PATH_MS)) { - if (!player.isCreative() && !player.isFallFlying()) { - movementSpeed.addTransientModifier(RankineAttributes.GRASS_PATH_MS); - } - } else if (!blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_PATHS).contains(ground) && movementSpeed.hasModifier(RankineAttributes.GRASS_PATH_MS)) { - movementSpeed.removeModifier(RankineAttributes.GRASS_PATH_MS); - } else if (blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_SAND).contains(ground) && !movementSpeed.hasModifier(RankineAttributes.SAND_MS)) { - if (!player.isCreative() && !player.isFallFlying()) { - movementSpeed.addTransientModifier(RankineAttributes.SAND_MS); - } - } else if (!blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_SAND).contains(ground) && movementSpeed.hasModifier(RankineAttributes.SAND_MS) && ground != Blocks.AIR) { - movementSpeed.removeModifier(RankineAttributes.SAND_MS); - } else if (blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_MUD).contains(ground) && !movementSpeed.hasModifier(RankineAttributes.MUD_MS)) { - if (!player.isCreative() && !player.isFallFlying()) { - movementSpeed.addTransientModifier(RankineAttributes.MUD_MS); - } - } else if (!blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_MUD).contains(ground) && movementSpeed.hasModifier(RankineAttributes.MUD_MS) && ground != Blocks.AIR) { - movementSpeed.removeModifier(RankineAttributes.MUD_MS); - } else if ((blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_SNOW).contains(world.getBlockState(player.blockPosition()).getBlock()) || blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_SNOW).contains(world.getBlockState(player.blockPosition().below()).getBlock())) && !movementSpeed.hasModifier(RankineAttributes.SNOW_MS)) { - if (!player.isCreative() && !player.isFallFlying()) { - movementSpeed.addTransientModifier(RankineAttributes.SNOW_MS); - } - } else if ((!blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_SNOW).contains(world.getBlockState(player.blockPosition()).getBlock()) || !blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_SNOW).contains(world.getBlockState(player.blockPosition().below()).getBlock())) && movementSpeed.hasModifier(RankineAttributes.SNOW_MS) && ground != Blocks.AIR) { - movementSpeed.removeModifier(RankineAttributes.SNOW_MS); - } else if (blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_DIRT).contains(ground) && !movementSpeed.hasModifier(RankineAttributes.DIRT_MS)) { - if (!player.isCreative() && !player.isFallFlying()) { - movementSpeed.addTransientModifier(RankineAttributes.DIRT_MS); - } - } else if (!blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_DIRT).contains(ground) && movementSpeed.hasModifier(RankineAttributes.DIRT_MS) && ground != Blocks.AIR) { - movementSpeed.removeModifier(RankineAttributes.DIRT_MS); - } else if (blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_WOOD).contains(ground) && !movementSpeed.hasModifier(RankineAttributes.WOODEN_MS)) { - if (!player.isCreative() && !player.isFallFlying()) { - movementSpeed.addTransientModifier(RankineAttributes.WOODEN_MS); - } - } else if (!blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_WOOD).contains(ground) && movementSpeed.hasModifier(RankineAttributes.WOODEN_MS) && ground != Blocks.AIR) { - movementSpeed.removeModifier(RankineAttributes.WOODEN_MS); - } else if (blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_POLISHED).contains(ground) && !movementSpeed.hasModifier(RankineAttributes.POLISHED_STONE_MS)) { - if (!player.isCreative() && !player.isFallFlying()) { - movementSpeed.addTransientModifier(RankineAttributes.POLISHED_STONE_MS); - } - } else if (!blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_POLISHED).contains(ground) && movementSpeed.hasModifier(RankineAttributes.POLISHED_STONE_MS) && ground != Blocks.AIR) { - movementSpeed.removeModifier(RankineAttributes.POLISHED_STONE_MS); - } else if (blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_BRICKS).contains(ground) && !movementSpeed.hasModifier(RankineAttributes.BRICKS_MS)) { - if (!player.isCreative() && !player.isFallFlying()) { - movementSpeed.addTransientModifier(RankineAttributes.BRICKS_MS); - } - } else if (!blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_BRICKS).contains(ground) && movementSpeed.hasModifier(RankineAttributes.BRICKS_MS) && ground != Blocks.AIR) { - movementSpeed.removeModifier(RankineAttributes.BRICKS_MS); - } else if (blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_ROMAN).contains(ground) && !movementSpeed.hasModifier(RankineAttributes.ROMAN_CONCRETE_MS)) { - if (!player.isCreative() && !player.isFallFlying()) { - movementSpeed.addTransientModifier(RankineAttributes.ROMAN_CONCRETE_MS); - } - } else if (!blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_ROMAN).contains(ground) && movementSpeed.hasModifier(RankineAttributes.ROMAN_CONCRETE_MS) && ground != Blocks.AIR) { - movementSpeed.removeModifier(RankineAttributes.ROMAN_CONCRETE_MS); - } else if (blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_CONCRETE).contains(ground) && !movementSpeed.hasModifier(RankineAttributes.CONCRETE_MS)) { - if (!player.isCreative() && !player.isFallFlying()) { - movementSpeed.addTransientModifier(RankineAttributes.CONCRETE_MS); - } - } else if (!blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_CONCRETE).contains(ground) && movementSpeed.hasModifier(RankineAttributes.CONCRETE_MS) && ground != Blocks.AIR) { - movementSpeed.removeModifier(RankineAttributes.CONCRETE_MS); - } + if (playerIn.isEyeInFluid(FluidTags.WATER) && (headEquipment == RankineItems.GOGGLES.get() || RankineEnchantmentHelper.hasAquaLense(playerIn))) { + playerIn.addEffect(new MobEffectInstance(MobEffects.NIGHT_VISION,400,0,false,false)); } - if (ground == Blocks.ICE) { - if (world.random.nextFloat() < Config.GENERAL.ICE_BREAK.get() && !(RankineEnchantmentHelper.hasSpeedSkater(player))) { - for (BlockPos B : BlockPos.betweenClosed(pos.offset(-2, -1, -2), pos.offset(2, -1, 2))) { - if (world.getBlockState(B).getBlock() == Blocks.ICE) { - world.setBlockAndUpdate(B, Blocks.FROSTED_ICE.defaultBlockState().setValue(FrostedIceBlock.AGE, 2)); + + if (ForgeRegistries.BLOCKS.tags().getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_ICE).contains(groundBlock)) { + if (levelIn.random.nextFloat() < Config.GENERAL.ICE_BREAK.get() && !RankineEnchantmentHelper.hasSpeedSkater(playerIn) && feetEquipment != RankineItems.ICE_SKATES.get()) { + for (BlockPos B : BlockPos.betweenClosed(groundPos.offset(-2, -1, -2), groundPos.offset(2, -1, 2))) { + if (levelIn.getBlockState(B).getBlock() == Blocks.ICE) { + levelIn.setBlockAndUpdate(B, Blocks.FROSTED_ICE.defaultBlockState().setValue(FrostedIceBlock.AGE, 2)); } } } } - if (RankineEnchantmentHelper.hasDuneWalker(player) || feetEquipment == RankineItems.SANDALS.get()) { - if (blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_SAND).contains(ground) && !movementSpeed.hasModifier(RankineAttributes.DUNE_WALKER)) { - movementSpeed.addTransientModifier(RankineAttributes.DUNE_WALKER); - player.maxUpStep = 1.0f; - } - } else if (!RankineEnchantmentHelper.hasDuneWalker(player) && feetEquipment != RankineItems.SANDALS.get() && movementSpeed.hasModifier(RankineAttributes.DUNE_WALKER)) { - movementSpeed.removeModifier(RankineAttributes.DUNE_WALKER); - player.maxUpStep = 0.5f; - } - if (!blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_SAND).contains(ground) && ground != Blocks.AIR && movementSpeed.hasModifier(RankineAttributes.DUNE_WALKER)) { - movementSpeed.removeModifier(RankineAttributes.DUNE_WALKER); - player.maxUpStep = 0.5f; - } - if (RankineEnchantmentHelper.hasSnowDrifter(player) || feetEquipment == RankineItems.SNOWSHOES.get()) { - if ((blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_SNOW).contains(world.getBlockState(player.blockPosition()).getBlock()) || blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_SNOW).contains(world.getBlockState(player.blockPosition().below()).getBlock())) && !movementSpeed.hasModifier(RankineAttributes.SNOW_DRIFTER)) { - movementSpeed.addTransientModifier(RankineAttributes.SNOW_DRIFTER); - player.maxUpStep = 1.0f; - } - } else if (!RankineEnchantmentHelper.hasSnowDrifter(player) && feetEquipment != RankineItems.SNOWSHOES.get() && movementSpeed.hasModifier(RankineAttributes.SNOW_DRIFTER)) { - movementSpeed.removeModifier(RankineAttributes.SNOW_DRIFTER); - player.maxUpStep = 0.5f; - } - if ((!blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_SNOW).contains(world.getBlockState(player.blockPosition()).getBlock()) && !blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_SNOW).contains(world.getBlockState(player.blockPosition().below()).getBlock())) && ground != Blocks.AIR && movementSpeed.hasModifier(RankineAttributes.SNOW_DRIFTER)) { - movementSpeed.removeModifier(RankineAttributes.SNOW_DRIFTER); - player.maxUpStep = 0.5f; + + handleEquipmentModifier(stepHeight, movementSpeed, RankineAttributes.DUNE_WALKER, groundBlock, RankineTags.Blocks.MOVEMENT_MODIFIERS_SAND, RankineEnchantmentHelper.hasDuneWalker(playerIn) || feetEquipment == RankineItems.SANDALS.get(), true); + handleEquipmentModifier(stepHeight, movementSpeed, RankineAttributes.SNOW_DRIFTER, levelIn.getBlockState(playerIn.blockPosition()).getBlock(),levelIn.getBlockState(playerIn.blockPosition().below()).getBlock(), RankineTags.Blocks.MOVEMENT_MODIFIERS_SNOW, RankineEnchantmentHelper.hasSnowDrifter(playerIn) || feetEquipment == RankineItems.SNOWSHOES.get(), true); + handleEquipmentModifier(stepHeight, movementSpeed, RankineAttributes.SPEED_SKATER, groundBlock, RankineTags.Blocks.MOVEMENT_MODIFIERS_ICE, RankineEnchantmentHelper.hasSpeedSkater(playerIn) || feetEquipment == RankineItems.ICE_SKATES.get(), true); + handleEquipmentModifier(stepHeight, swimSpeed, RankineAttributes.SWIFT_SWIMMER,(RankineEnchantmentHelper.hasSwiftSwimmer(playerIn) || feetEquipment == RankineItems.FINS.get()) && playerIn.isSwimming(), false); + handleEquipmentModifier(stepHeight, swimSpeed, RankineAttributes.AQUA_LENSE,(RankineEnchantmentHelper.hasAquaLense(playerIn) || headEquipment == RankineItems.GOGGLES.get()) && playerIn.isSwimming(), false); + + if (Config.GENERAL.MOVEMENT_MODIFIERS.get()) { + if (handleMovementModifier(movementSpeed,RankineAttributes.GRASS_PATH_MS,groundBlock,RankineTags.Blocks.MOVEMENT_MODIFIERS_PATHS)) return; + if (handleMovementModifier(movementSpeed,RankineAttributes.SAND_MS,groundBlock,RankineTags.Blocks.MOVEMENT_MODIFIERS_SAND)) return; + if (handleMovementModifier(movementSpeed,RankineAttributes.MUD_MS,groundBlock,RankineTags.Blocks.MOVEMENT_MODIFIERS_MUD)) return; + if (handleMovementModifierDouble(movementSpeed,RankineAttributes.SNOW_MS, levelIn.getBlockState(playerIn.blockPosition()).getBlock(),levelIn.getBlockState(playerIn.blockPosition().below()).getBlock(), RankineTags.Blocks.MOVEMENT_MODIFIERS_SNOW)) return; + if (handleMovementModifier(movementSpeed,RankineAttributes.DIRT_MS,groundBlock,RankineTags.Blocks.MOVEMENT_MODIFIERS_DIRT)) return; + if (handleMovementModifier(movementSpeed,RankineAttributes.WOODEN_MS,groundBlock,RankineTags.Blocks.MOVEMENT_MODIFIERS_WOOD)) return; + if (handleMovementModifier(movementSpeed,RankineAttributes.POLISHED_STONE_MS,groundBlock,RankineTags.Blocks.MOVEMENT_MODIFIERS_POLISHED)) return; + if (handleMovementModifier(movementSpeed,RankineAttributes.BRICKS_MS,groundBlock,RankineTags.Blocks.MOVEMENT_MODIFIERS_BRICKS)) return; + if (handleMovementModifier(movementSpeed,RankineAttributes.ROMAN_CONCRETE_MS,groundBlock,RankineTags.Blocks.MOVEMENT_MODIFIERS_ROMAN)) return; + if (handleMovementModifier(movementSpeed,RankineAttributes.CONCRETE_MS,groundBlock,RankineTags.Blocks.MOVEMENT_MODIFIERS_CONCRETE)) return; } - if (RankineEnchantmentHelper.hasSpeedSkater(player) || feetEquipment == RankineItems.ICE_SKATES.get()) { - if ((blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_ICE).contains(world.getBlockState(player.blockPosition()).getBlock()) || blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_ICE).contains(world.getBlockState(player.blockPosition().below()).getBlock())) && !movementSpeed.hasModifier(RankineAttributes.SPEED_SKATER)) { - movementSpeed.addTransientModifier(RankineAttributes.SPEED_SKATER); - player.maxUpStep = 1.0f; - } - } else if (!RankineEnchantmentHelper.hasSpeedSkater(player) && feetEquipment != RankineItems.ICE_SKATES.get() && movementSpeed.hasModifier(RankineAttributes.SPEED_SKATER)) { - movementSpeed.removeModifier(RankineAttributes.SPEED_SKATER); - player.maxUpStep = 0.5f; + } + + private static void handleEquipmentModifier(AttributeInstance stepHeight, AttributeInstance attribute, AttributeModifier modifier, boolean isEquiped, boolean autoStep) { + if (!isEquiped) { + if (attribute.hasModifier(modifier)) attribute.removeModifier(modifier); + if (stepHeight.hasModifier(RankineAttributes.STEP)) stepHeight.removeModifier(RankineAttributes.STEP); + return; } - if ((!blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_ICE).contains(world.getBlockState(player.blockPosition()).getBlock()) && !blockITagManager.getTag(RankineTags.Blocks.MOVEMENT_MODIFIERS_ICE).contains(world.getBlockState(player.blockPosition().below()).getBlock())) && ground != Blocks.AIR && movementSpeed.hasModifier(RankineAttributes.SPEED_SKATER)) { - movementSpeed.removeModifier(RankineAttributes.SPEED_SKATER); - player.maxUpStep = 0.5f; + if (!attribute.hasModifier(modifier)) attribute.addTransientModifier(modifier); + if (autoStep && !stepHeight.hasModifier(RankineAttributes.STEP)) stepHeight.addTransientModifier(RankineAttributes.STEP); + } + private static void handleEquipmentModifier(AttributeInstance stepHeight, AttributeInstance attribute, AttributeModifier modifier, Block groundBlock, TagKey tagIn, boolean isEquiped, boolean autoStep) { + if (groundBlock == Blocks.AIR) return; + ITagManager blockITagManager = ForgeRegistries.BLOCKS.tags(); + if (!isEquiped || !blockITagManager.getTag(tagIn).contains(groundBlock)) { + if (attribute.hasModifier(modifier)) attribute.removeModifier(modifier); + if (stepHeight.hasModifier(RankineAttributes.STEP)) stepHeight.removeModifier(RankineAttributes.STEP); + return; } - if (RankineEnchantmentHelper.hasSwiftSwimmer(player) || feetEquipment == RankineItems.FINS.get()) { - if (player.isSwimming() && !swimSpeed.hasModifier(RankineAttributes.SWIFT_SWIMMER)) { - swimSpeed.addTransientModifier(RankineAttributes.SWIFT_SWIMMER); - } - } else if (!RankineEnchantmentHelper.hasSwiftSwimmer(player) && feetEquipment != RankineItems.FINS.get() && swimSpeed.hasModifier(RankineAttributes.SWIFT_SWIMMER)) { - swimSpeed.removeModifier(RankineAttributes.SWIFT_SWIMMER); + if (!attribute.hasModifier(modifier)) attribute.addTransientModifier(modifier); + if (autoStep && !stepHeight.hasModifier(RankineAttributes.STEP)) stepHeight.addTransientModifier(RankineAttributes.STEP); + } + private static void handleEquipmentModifier(AttributeInstance stepHeight, AttributeInstance attribute, AttributeModifier modifier, Block groundBlock, Block groundBlock2, TagKey tagIn, boolean isEquiped, boolean autoStep) { + if (groundBlock == Blocks.AIR && groundBlock2 == Blocks.AIR) return; + ITagManager blockITagManager = ForgeRegistries.BLOCKS.tags(); + if (!isEquiped || (!blockITagManager.getTag(tagIn).contains(groundBlock) && !blockITagManager.getTag(tagIn).contains(groundBlock2))) { + if (attribute.hasModifier(modifier)) attribute.removeModifier(modifier); + if (stepHeight.hasModifier(RankineAttributes.STEP)) stepHeight.removeModifier(RankineAttributes.STEP); + return; } - if (!player.isSwimming() && swimSpeed.hasModifier(RankineAttributes.SWIFT_SWIMMER)) { - swimSpeed.removeModifier(RankineAttributes.SWIFT_SWIMMER); + if (!attribute.hasModifier(modifier)) attribute.addTransientModifier(modifier); + if (autoStep && !stepHeight.hasModifier(RankineAttributes.STEP)) stepHeight.addTransientModifier(RankineAttributes.STEP); + } + private static boolean handleMovementModifier(AttributeInstance attribute, AttributeModifier modifier, Block groundBlock, TagKey tagIn) { + if (groundBlock == Blocks.AIR) return true; + ITagManager blockITagManager = ForgeRegistries.BLOCKS.tags(); + if (!blockITagManager.getTag(tagIn).contains(groundBlock)) { + if (attribute.hasModifier(modifier)) attribute.removeModifier(modifier); + return false; } - if ((headEquipment == RankineItems.GOGGLES.get() || RankineEnchantmentHelper.hasAquaLense(player)) && player.isEyeInFluid(FluidTags.WATER) && !swimSpeed.hasModifier(RankineAttributes.WATER_VISION)) { - swimSpeed.addTransientModifier(RankineAttributes.WATER_VISION); - } else if (((headEquipment != RankineItems.GOGGLES.get() && !RankineEnchantmentHelper.hasAquaLense(player)) || !player.isEyeInFluid(FluidTags.WATER)) && swimSpeed.hasModifier(RankineAttributes.WATER_VISION)) { - swimSpeed.removeModifier(RankineAttributes.WATER_VISION); + if (!attribute.hasModifier(modifier)) attribute.addTransientModifier(modifier); + return true; + } + private static boolean handleMovementModifierDouble(AttributeInstance attribute, AttributeModifier modifier, Block groundBlock, Block feetblock, TagKey tagIn) { + if (groundBlock == Blocks.AIR && feetblock == Blocks.AIR) return true; + ITagManager blockITagManager = ForgeRegistries.BLOCKS.tags(); + if (!blockITagManager.getTag(tagIn).contains(groundBlock) && !blockITagManager.getTag(tagIn).contains(feetblock)) { + if (attribute.hasModifier(modifier)) attribute.removeModifier(modifier); + return false; } + if (!attribute.hasModifier(modifier)) attribute.addTransientModifier(modifier); + return true; } } diff --git a/src/main/java/com/cannolicatfish/rankine/init/Config.java b/src/main/java/com/cannolicatfish/rankine/init/Config.java index 3f443ce68b..dc7ca3eb5e 100644 --- a/src/main/java/com/cannolicatfish/rankine/init/Config.java +++ b/src/main/java/com/cannolicatfish/rankine/init/Config.java @@ -619,7 +619,6 @@ public Worldgen(ForgeConfigSpec.Builder b) { b.comment("Here are miscellaneous worldgen options.").push("worldgen"); BEDROCK_LAYERS = b.comment("The number of flat bedrock layers to generate. Set to 0 to disable.") .defineInRange("flatBedrockLayers", 0, 0, 5); - SOIL_NOISE_SCALE = b.comment("This determines how mixed the two types of soil are per biome. Larger numbers mean larger patches.") .defineInRange("soilNoiseScale", 60, 1, Integer.MAX_VALUE); ANTIMATTER_GEN = b.comment("Generate antimatter in the End.") @@ -861,15 +860,6 @@ public BiomeGen(ForgeConfigSpec.Builder b) { "minecraft:air", "minecraft:air", "minecraft:air")); - biomeSettings.add(List.of(Biome.BiomeCategory.MESA.getName(), - List.of("rankine:silty_loam_grass_block","rankine:silty_loam","rankine:silty_clay_loam","rankine:silty_loam_grass_block","rankine:silty_loam","rankine:silty_clay_loam"), - List.of("minecraft:air|30|minecraft:air|0.0","rankine:kimberlite|10|rankine:kimberlitic_diamond_ore|0.03","rankine:red_porphyry|20|rankine:porphyry_copper|0.05","rankine:red_porphyry|10|rankine:native_gold_ore|0.04","rankine:red_porphyry|3|rankine:molybdenum_ore|0.03","rankine:pegmatite|2|rankine:baddeleyite_ore|0.03","rankine:pegmatite|1|rankine:coltan_ore|0.03","rankine:pegmatite|1|rankine:beryl_ore|0.03","rankine:pegmatite|1|rankine:uraninite_ore|0.03","rankine:pegmatite|5|rankine:petalite_ore|0.04"), - List.of("rankine:bridgmanham","rankine:phonolite","rankine:red_dacite","rankine:rhyolite","rankine:quartzite","rankine:siltstone","rankine:arkose"), - List.of("rankine:short_grass|70","rankine:yellow_clover|10","rankine:stinging_nettle|1"), - "rankine:light_gravel", - "rankine:desert_sand", - "rankine:desert_sandstone", - "rankine:pointed_gypsic_dripstone")); biomeSettings.add(List.of(Biome.BiomeCategory.DESERT.getName(), List.of("rankine:loamy_sand_grass_block","rankine:loamy_sand","rankine:loamy_sand","rankine:loamy_sand_grass_block","rankine:loamy_sand","rankine:loamy_sand"), List.of("minecraft:air|30|minecraft:air|0.0","rankine:kimberlite|10|rankine:kimberlitic_diamond_ore|0.03","rankine:red_porphyry|20|rankine:porphyry_copper|0.05","rankine:red_porphyry|10|rankine:native_gold_ore|0.04","rankine:red_porphyry|3|rankine:molybdenum_ore|0.03","rankine:pegmatite|2|rankine:baddeleyite_ore|0.03","rankine:pegmatite|1|rankine:coltan_ore|0.03","rankine:pegmatite|1|rankine:beryl_ore|0.03","rankine:pegmatite|1|rankine:uraninite_ore|0.03","rankine:pegmatite|5|rankine:petalite_ore|0.04"), @@ -953,7 +943,6 @@ public BiomeGen(ForgeConfigSpec.Builder b) { "rankine:pointed_feric_dripstone")); - b.comment("Biome Feature Settings").push("biomeGen"); BIOME_SETTINGS = b.comment("Custom generations per biome or biome category. The defaults are created with biome categories for the overworld. Specific biomes can be used and should be put first in the list.", "Syntax: [[List1], [List2], [List3], ...]", diff --git a/src/main/java/com/cannolicatfish/rankine/init/RankineAttributes.java b/src/main/java/com/cannolicatfish/rankine/init/RankineAttributes.java index ab7e88d7bd..c300505b7a 100644 --- a/src/main/java/com/cannolicatfish/rankine/init/RankineAttributes.java +++ b/src/main/java/com/cannolicatfish/rankine/init/RankineAttributes.java @@ -24,7 +24,8 @@ public class RankineAttributes { public static final AttributeModifier ENDURING_TOTEM = new AttributeModifier(UUID.fromString("3c4a1c57-ed5a-482e-946e-eb0b00fe5fb3"), "rankine:health_pendant_ms", 10.0, AttributeModifier.Operation.ADDITION); public static final AttributeModifier MUD_MS = new AttributeModifier(UUID.fromString("3c4a1c57-ed5a-482e-946e-eb0b00fe5fb4"), "rankine:mud_ms", Config.GENERAL.MOVEMENT_MUD.get(), AttributeModifier.Operation.ADDITION); public static final AttributeModifier SWIFT_SWIMMER = new AttributeModifier(UUID.fromString("3c4a1c57-ed5a-482e-946e-eb0b00fe5fb5"), "rankine:swift_swimmer", 2.5, AttributeModifier.Operation.ADDITION); - public static final AttributeModifier WATER_VISION = new AttributeModifier(UUID.fromString("3c4a1c57-ed5a-482e-946e-eb0b00fe5fb6"), "rankine:water_vision", 1.0, AttributeModifier.Operation.ADDITION); + public static final AttributeModifier AQUA_LENSE = new AttributeModifier(UUID.fromString("3c4a1c57-ed5a-482e-946e-eb0b00fe5fb6"), "rankine:aqua_lense", 1.0, AttributeModifier.Operation.ADDITION); + public static final AttributeModifier STEP = new AttributeModifier(UUID.fromString("3c4a1c57-ed5a-482e-946e-eb0b00fe5fb8"), "rankine:step_boost", 1.0D, AttributeModifier.Operation.ADDITION); //public static final AttributeModifier BLOCK_MS = new AttributeModifier(UUID.fromString("3c4a1c57-ed5a-482e-946e-eb0b00fe5fb5"), "rankine:block_ms", Config.GENERAL.MOVEMENT_MUD.get(), AttributeModifier.Operation.ADDITION); @@ -42,6 +43,7 @@ public class RankineAttributes { public static final Attribute REACH_DISTANCE = ForgeMod.REACH_DISTANCE.get(); public static final Attribute ATTACK_RANGE = ForgeMod.ATTACK_RANGE.get(); + public static final Attribute STEP_HEIGHT = ForgeMod.STEP_HEIGHT_ADDITION.get(); public static final Attribute GRAVITY = ForgeMod.ENTITY_GRAVITY.get(); } diff --git a/src/main/java/com/cannolicatfish/rankine/init/RankineBlocks.java b/src/main/java/com/cannolicatfish/rankine/init/RankineBlocks.java index 18bd066c5a..1f6d727296 100644 --- a/src/main/java/com/cannolicatfish/rankine/init/RankineBlocks.java +++ b/src/main/java/com/cannolicatfish/rankine/init/RankineBlocks.java @@ -1104,6 +1104,7 @@ public class RankineBlocks { public static final RegistryObject GALINSTAN_LADDER = BLOCKS.register("galinstan_ladder", () -> new MetalLadderBlock(12564673)); public static final RegistryObject OSMIRIDIUM_LADDER = BLOCKS.register("osmiridium_ladder", () -> new MetalLadderBlock(13212593)); public static final RegistryObject SODIUM_POTASSIUM_ALLOY_LADDER = BLOCKS.register("sodium_potassium_alloy_ladder", () -> new MetalLadderBlock(9403777)); + public static final RegistryObject NEPTUNIUM_ALLOY_LADDER = BLOCKS.register("neptunium_alloy_ladder", () -> new MetalLadderBlock(5805717)); public static final RegistryObject AMALGAM_LADDER = BLOCKS.register("amalgam_ladder", () -> new MetalLadderBlock(13881539)); public static final RegistryObject ENDER_AMALGAM_LADDER = BLOCKS.register("ender_amalgam_ladder", () -> new MetalLadderBlock(492385)); diff --git a/src/main/java/com/cannolicatfish/rankine/init/RankineItems.java b/src/main/java/com/cannolicatfish/rankine/init/RankineItems.java index bd196fa1b7..4b534ac350 100644 --- a/src/main/java/com/cannolicatfish/rankine/init/RankineItems.java +++ b/src/main/java/com/cannolicatfish/rankine/init/RankineItems.java @@ -666,6 +666,7 @@ public class RankineItems { public static final RegistryObject GALINSTAN_LADDER = ITEMS.register("galinstan_ladder", () -> new BuildingModeBlockItem(RankineBlocks.GALINSTAN_LADDER.get(),new Item.Properties().stacksTo(64).tab(ProjectRankine.setup.rankineWorld))); public static final RegistryObject OSMIRIDIUM_LADDER = ITEMS.register("osmiridium_ladder", () -> new BuildingModeBlockItem(RankineBlocks.OSMIRIDIUM_LADDER.get(),new Item.Properties().stacksTo(64).tab(ProjectRankine.setup.rankineWorld))); public static final RegistryObject SODIUM_POTASSIUM_ALLOY_LADDER = ITEMS.register("sodium_potassium_alloy_ladder", () -> new BuildingModeBlockItem(RankineBlocks.SODIUM_POTASSIUM_ALLOY_LADDER.get(),new Item.Properties().stacksTo(64).tab(ProjectRankine.setup.rankineWorld))); + public static final RegistryObject NEPTUNIUM_ALLOY_LADDER = ITEMS.register("neptunium_alloy_ladder", () -> new BuildingModeBlockItem(RankineBlocks.NEPTUNIUM_ALLOY_LADDER.get(),new Item.Properties().stacksTo(64).tab(ProjectRankine.setup.rankineWorld))); public static final RegistryObject AMALGAM_LADDER = ITEMS.register("amalgam_ladder", () -> new BuildingModeBlockItem(RankineBlocks.AMALGAM_LADDER.get(),new Item.Properties().stacksTo(64).tab(ProjectRankine.setup.rankineWorld))); public static final RegistryObject ENDER_AMALGAM_LADDER = ITEMS.register("ender_amalgam_ladder", () -> new BuildingModeBlockItem(RankineBlocks.ENDER_AMALGAM_LADDER.get(),new Item.Properties().stacksTo(64).tab(ProjectRankine.setup.rankineWorld))); diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 3534d5e65d..c6daa38142 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -16,7 +16,7 @@ issueTrackerURL="http://my.issue.tracker/" #optional # The modid of the mod modId="rankine" #mandatory # The version number of the mod - there's a few well known ${} variables useable here or just hardcode it -version="1.3.5" #mandatory +version="1.3.6" #mandatory # A display name for the mod displayName="Project Rankine" #mandatory # A URL to query for updates for this mod. See the JSON update specification diff --git a/src/main/resources/assets/rankine/textures/block/sediment_fan.png.mcmeta b/src/main/resources/assets/rankine/textures/block/sediment_fan_front.png.mcmeta similarity index 100% rename from src/main/resources/assets/rankine/textures/block/sediment_fan.png.mcmeta rename to src/main/resources/assets/rankine/textures/block/sediment_fan_front.png.mcmeta diff --git a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/constructs/batteries.json b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/constructs/batteries.json new file mode 100644 index 0000000000..22fad411e7 --- /dev/null +++ b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/constructs/batteries.json @@ -0,0 +1,39 @@ +{ + "name": "rankine.journal.cat_constructs.batteries.name", + "icon": "rankine:lithium_ion_battery", + "category": "rankine:constructs", + "pages": [ + { + "type": "text", + "text": "rankine.journal.cat_constructs.batteries.text1" + }, + { + "type": "rankine:item7", + "heading": "rankine.journal.cat_constructs.batteries.text2", + "text": "rankine.journal.cat_constructs.batteries.text3", + "item1": "rankine:silver_zinc_battery", + "item2": "rankine:magnesium_battery", + "item3": "rankine:lead_acid_battery", + "item4": "rankine:vanadium_redox_battery", + "item5": "rankine:zinc_bromine_battery", + "item6": "rankine:sodium_sulfur_battery", + "item7": "rankine:lithium_ion_battery" + }, + { + "type": "spotlight", + "item": "rankine:battery_charger", + "link_recipe": true, + "text": "rankine.journal.cat_constructs.batteries.text4" + }, + { + "type": "rankine:item5", + "heading": "rankine.journal.cat_constructs.batteries.text5", + "text": "rankine.journal.cat_constructs.batteries.text6", + "item1": "rankine:strontium_rtg", + "item2": "rankine:polonium_rtg", + "item3": "rankine:plutonium_rtg", + "item4": "rankine:americium_rtg", + "item5": "rankine:curium_rtg" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/constructs/fusion_furnace.json b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/constructs/fusion_furnace.json index 03420c1756..b389e3c0bd 100644 --- a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/constructs/fusion_furnace.json +++ b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/constructs/fusion_furnace.json @@ -12,28 +12,6 @@ "item": "rankine:fusion_furnace", "link_recipe": true, "text": "rankine.journal.cat_constructs.fusion_furnace.text2" - }, - { - "type": "rankine:item7", - "heading": "rankine.journal.cat_constructs.fusion_furnace.batteries_header", - "text": "rankine.journal.cat_constructs.fusion_furnace.batteries", - "item1": "rankine:silver_zinc_battery", - "item2": "rankine:magnesium_battery", - "item3": "rankine:lead_acid_battery", - "item4": "rankine:vanadium_redox_battery", - "item5": "rankine:zinc_bromine_battery", - "item6": "rankine:sodium_sulfur_battery", - "item7": "rankine:lithium_ion_battery" - }, - { - "type": "rankine:item5", - "heading": "rankine.journal.cat_constructs.fusion_furnace.rtg_header", - "text": "rankine.journal.cat_constructs.fusion_furnace.rtg", - "item1": "rankine:strontium_rtg", - "item2": "rankine:polonium_rtg", - "item3": "rankine:plutonium_rtg", - "item4": "rankine:americium_rtg", - "item5": "rankine:curium_rtg" } ] } \ No newline at end of file diff --git a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/mechanics/alloying.json b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/mechanics/alloying.json index 2ca88160e1..277ed5d428 100644 --- a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/mechanics/alloying.json +++ b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/mechanics/alloying.json @@ -68,11 +68,6 @@ "title": "Toughness", "text": "Toughness acts like built in unbreaking. It is the chance to not consume a durability on use. It ranges from -100% to 100%, where 0% means it acts like normal and where negatives means a chance to consume two durability." }, - { - "type": "text", - "title": "Electrical Potential", - "text": "Something to do with electricity..." - }, { "type": "text", "title": "Tool Efficiency", diff --git a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/sediments/sedimentary.json b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/sediments/sedimentary.json index 0ad1ba1b1c..358cbe19c0 100644 --- a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/sediments/sedimentary.json +++ b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/sediments/sedimentary.json @@ -15,6 +15,7 @@ { "type": "spotlight", "item": "rankine:sediment_fan", + "text": "rankine.journal.cat_sediments.sedimentary.text4", "link_recipe": true }, { diff --git a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/armor.json b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/armor.json index d546bc3951..80ad344b7f 100644 --- a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/armor.json +++ b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/armor.json @@ -1,39 +1,39 @@ { - "name": "Armor", + "name": "rankine.journal.cat_tools.armor.name", "icon": "rankine:brigandine_chestplate", "category": "rankine:tools", "pages": [ { "type": "text", - "text": "Various armor sets exist in the game." + "text": "rankine.journal.cat_tools.armor.text1" }, { "type": "spotlight", "item": "rankine:brigandine_chestplate", "link_recipe": true, - "title": "Brigandine Armor", - "text": "Steel plated leather armor. Made by combining leather armor and a steel ingot in the smithing table." + "title": "rankine.journal.cat_tools.armor.brigandine_title", + "text": "rankine.journal.cat_tools.armor.brigandine" }, { "type": "spotlight", "item": "rankine:diving_chestplate", "link_recipe": true, - "title": "Diving Armor", - "text": "Armor made from brass. Allows the wearer to hold their breath for a longer period of time." + "title": "rankine.journal.cat_tools.armor.diving_title", + "text": "rankine.journal.cat_tools.armor.diving" }, { "type": "spotlight", "item": "rankine:conduit_diving_chestplate", "link_recipe": true, - "title": "C-P Diving Armor", - "text": "Upgraded diving armor. Provides the wearer with conduit power when in water." + "title": "rankine.journal.cat_tools.armor.conduit_diving_title", + "text": "rankine.journal.cat_tools.armor.conduit_diving" }, { "type": "spotlight", "item": "rankine:alloy_chestplate", "link_recipe": true, - "title": "Alloy Armor", - "text": "Like tools, alloy armor gets it's stats (armor, toughness, durability) depending on the composition of the alloy. Recipes for alloy armor can be added external using datapacks or mods. By default there are a few different recipes." + "title": "rankine.journal.cat_tools.armor.alloy_title", + "text": "rankine.journal.cat_tools.armor.alloy" } ] } \ No newline at end of file diff --git a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/arrows.json b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/arrows.json index 57ae2bab66..90a84b8579 100644 --- a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/arrows.json +++ b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/arrows.json @@ -1,26 +1,26 @@ { - "name": "Arrows", + "name": "rankine.journal.cat_tools.arrows.name", "icon": "rankine:alloy_arrow", "category": "rankine:tools", "pages": [ { "type": "text", - "text": "Like tools, alloy arrows gets it's stats (damage) depending on the composition of the alloy. Recipes for alloy armor can be added external using datapacks or mods." + "text": "rankine.journal.cat_tools.arrows.text1" }, { "type": "crafting", "recipe": "rankine:steel_arrow", - "text": "" + "text": "rankine.journal.cat_tools.arrows.steel_arrow" }, { "type": "crafting", "recipe": "rankine:thorium_arrow", - "text": "Summons lightning on impact." + "text": "rankine.journal.cat_tools.arrows.thorium_arrow" }, { "type": "crafting", "recipe": "rankine:magnesium_arrow", - "text": "Blinds nearby enemies when on ground. Hit mobs will trigger nearby undead mobs to attack. Creepers explode on impact." + "text": "rankine.journal.cat_tools.arrows.magnesium_arrow" } ] } \ No newline at end of file diff --git a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/building_tool.json b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/building_tool.json deleted file mode 100644 index a27918f59e..0000000000 --- a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/building_tool.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "rankine.journal.cat_tools.building_tool.name", - "icon": "rankine:building_tool", - "category": "rankine:tools", - "pages": [ - { - "type": "text", - "text": "rankine.journal.cat_tools.building_tool.text1" - }, - { - "type": "crafting", - "recipe": "rankine:building_tool", - "text": "rankine.journal.cat_tools.building_tool.text2" - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/element_indexer.json b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/element_indexer.json index 9af0556172..95e441d20e 100644 --- a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/element_indexer.json +++ b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/element_indexer.json @@ -1,15 +1,15 @@ { - "name": "Element Indexer", + "name": "rankine.journal.cat_tools.element_indexer.name", "icon": "rankine:element_indexer", "category": "rankine:tools", "pages": [ { "type": "text", - "text": "Upon inspection most materials used in the alloying process have some inherent properties to them. For the end goal of making ingots, this doesn't matter much, but for tools there can be profound effects." + "text": "rankine.journal.cat_tools.element_indexer.text1" }, { "type": "text", - "text": "To see the stats of an element, right click the element indexer and place the ingot in the top left slot. The stats will show below for each of the various categories. Additionally, when in the GUI, scrolling will change the percentage of the material you are looking at. See $(l:alloying/alloying)Notes About Alloying$() for details. " + "text": "rankine.journal.cat_tools.element_indexer.text1" }, { "type": "crafting", diff --git a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/magnets.json b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/magnets.json index aca157e904..aedd25662d 100644 --- a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/magnets.json +++ b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/magnets.json @@ -1,5 +1,5 @@ { - "name": "rankine.journal.cat_tools.equipment.name", + "name": "rankine.journal.cat_tools.magnets.name", "icon": "rankine:rare_earth_magnet", "category": "rankine:tools", "pages": [ diff --git a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/utility_tools.json b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/utility_tools.json index dba485140e..fdb25f1aa3 100644 --- a/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/utility_tools.json +++ b/src/main/resources/data/rankine/patchouli_books/rankine_journal/en_us/entries/tools/utility_tools.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "Various utility tools have been added to display information. Tools will display on the status bar while in your main hand or off hand. Default is head position, sneak for position at feet." + "text": "rankine.journal.cat_tools.utility_tools.text1" }, { "type": "crafting", diff --git a/src/main/resources/data/rankine/recipes/stonegen_sedimentary/chalk_generator.json b/src/main/resources/data/rankine/recipes/stonegen_sedimentary/chalk_generator.json index d77a900e8e..6e11413f0e 100644 --- a/src/main/resources/data/rankine/recipes/stonegen_sedimentary/chalk_generator.json +++ b/src/main/resources/data/rankine/recipes/stonegen_sedimentary/chalk_generator.json @@ -2,7 +2,7 @@ "type": "rankine:rock_generator", "genType": "sedimentary", "input1": { - "item": "rankine:pearl" + "item": "rankine:pearl_block" }, "result": { "block": "rankine:chalk" diff --git a/src/main/resources/data/rankine/recipes/stonegen_sedimentary/chalk_generator2.json b/src/main/resources/data/rankine/recipes/stonegen_sedimentary/chalk_generator2.json new file mode 100644 index 0000000000..d77a900e8e --- /dev/null +++ b/src/main/resources/data/rankine/recipes/stonegen_sedimentary/chalk_generator2.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:rock_generator", + "genType": "sedimentary", + "input1": { + "item": "rankine:pearl" + }, + "result": { + "block": "rankine:chalk" + } +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/stonegen_sedimentary/honeystone_generator.json b/src/main/resources/data/rankine/recipes/stonegen_sedimentary/honeystone_generator.json index 4738f3b184..608c446662 100644 --- a/src/main/resources/data/rankine/recipes/stonegen_sedimentary/honeystone_generator.json +++ b/src/main/resources/data/rankine/recipes/stonegen_sedimentary/honeystone_generator.json @@ -2,7 +2,7 @@ "type": "rankine:rock_generator", "genType": "sedimentary", "input1": { - "item": "rankine:mellite" + "item": "rankine:mellite_block" }, "result": { "block": "rankine:honeystone" diff --git a/src/main/resources/data/rankine/recipes/stonegen_sedimentary/honeystone_generator2.json b/src/main/resources/data/rankine/recipes/stonegen_sedimentary/honeystone_generator2.json new file mode 100644 index 0000000000..4738f3b184 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/stonegen_sedimentary/honeystone_generator2.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:rock_generator", + "genType": "sedimentary", + "input1": { + "item": "rankine:mellite" + }, + "result": { + "block": "rankine:honeystone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/stonegen_sedimentary/limestone_generator.json b/src/main/resources/data/rankine/recipes/stonegen_sedimentary/limestone_generator.json index 1691f49fcf..b071b79395 100644 --- a/src/main/resources/data/rankine/recipes/stonegen_sedimentary/limestone_generator.json +++ b/src/main/resources/data/rankine/recipes/stonegen_sedimentary/limestone_generator.json @@ -2,7 +2,7 @@ "type": "rankine:rock_generator", "genType": "sedimentary", "input1": { - "item": "rankine:calcite" + "item": "rankine:calcite_block" }, "result": { "block": "rankine:limestone" diff --git a/src/main/resources/data/rankine/recipes/stonegen_sedimentary/limestone_generator2.json b/src/main/resources/data/rankine/recipes/stonegen_sedimentary/limestone_generator2.json new file mode 100644 index 0000000000..1691f49fcf --- /dev/null +++ b/src/main/resources/data/rankine/recipes/stonegen_sedimentary/limestone_generator2.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:rock_generator", + "genType": "sedimentary", + "input1": { + "item": "rankine:calcite" + }, + "result": { + "block": "rankine:limestone" + } +} \ No newline at end of file