From 2e8f562270600c20d4913ee21a191cb90fec5129 Mon Sep 17 00:00:00 2001 From: Motschen Date: Sun, 30 May 2021 13:07:44 +0200 Subject: [PATCH] This Rocks 1.4.0 - 1.17 and QOL - Update to 1.17-pre1 and Java 16 - Make starfish items contain variations - Fix bugs --- .gitignore | 4 +- LICENSE | 0 README.md | 0 build.gradle | 61 ++++++----- build/loom-cache/midnight-hats-2.0.1.jar | Bin 49881 -> 0 bytes gradle.properties | 12 +-- gradle/wrapper/gradle-wrapper.jar | Bin 55616 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 35 +++---- gradlew.bat | 25 ++--- settings.gradle | 0 .../motschen/rocks/RocksClient.java | 14 +++ .../motschen/rocks/RocksMain.java | 1 - .../motschen/rocks/block/NetherGeyser.java | 28 +++-- .../motschen/rocks/block/OverworldGeyser.java | 26 +++-- .../motschen/rocks/block/Pinecone.java | 4 +- .../motschen/rocks/block/Rock.java | 8 +- .../motschen/rocks/block/Seashell.java | 8 +- .../motschen/rocks/block/Starfish.java | 27 ++++- .../motschen/rocks/block/Stick.java | 8 +- .../block/blockentity/BlockEntityInit.java | 5 +- .../blockentity/NetherGeyserBlockEntity.java | 28 ++--- .../OverworldGeyserBlockEntity.java | 36 +++---- .../rocks/blockstates/RockVariation.java | 0 .../rocks/blockstates/SeashellVariation.java | 0 .../rocks/blockstates/StarfishVariation.java | 0 .../rocks/blockstates/StickVariation.java | 0 .../motschen/rocks/item/StarfishItem.java | 13 +++ .../GenerationSettingsAccessorMixin.java | 0 .../mixin/MixinModelElementDeserializer.java | 0 .../motschen/rocks/world/FeatureInjector.java | 0 .../motschen/rocks/world/FeatureRegistry.java | 22 ++-- .../motschen/rocks/world/RocksDecorators.java | 12 +++ .../configured_feature/MiscFeatures.java | 25 +++-- .../configured_feature/NetherFeatures.java | 46 ++++---- .../configured_feature/RockFeatures.java | 99 +++++++++--------- .../configured_feature/StickFeatures.java | 65 ++++++------ .../rocks/world/feature/SnowFeature.java | 7 +- .../world/feature/UnderwaterFeature.java | 7 +- .../rocks/blockstates/acacia_stick.json | 0 .../rocks/blockstates/andesite_rock.json | 0 .../assets/rocks/blockstates/birch_stick.json | 0 .../rocks/blockstates/dark_oak_stick.json | 0 .../rocks/blockstates/diorite_rock.json | 0 .../rocks/blockstates/end_stone_rock.json | 0 .../assets/rocks/blockstates/geyser.json | 0 .../rocks/blockstates/granite_rock.json | 0 .../assets/rocks/blockstates/gravel_rock.json | 0 .../rocks/blockstates/jungle_stick.json | 0 .../rocks/blockstates/nether_geyser.json | 0 .../rocks/blockstates/netherrack_rock.json | 0 .../assets/rocks/blockstates/oak_stick.json | 0 .../assets/rocks/blockstates/pinecone.json | 0 .../rocks/blockstates/red_sand_rock.json | 0 .../assets/rocks/blockstates/rock.json | 0 .../assets/rocks/blockstates/sand_rock.json | 0 .../assets/rocks/blockstates/seashell.json | 0 .../rocks/blockstates/soul_soil_rock.json | 0 .../rocks/blockstates/spruce_stick.json | 0 .../assets/rocks/blockstates/starfish.json | 0 src/main/resources/assets/rocks/icon.png | Bin .../resources/assets/rocks/lang/de_de.json | 0 .../resources/assets/rocks/lang/en_us.json | 0 .../resources/assets/rocks/lang/pl_pl.json | 0 .../resources/assets/rocks/lang/ru_ru.json | 0 .../resources/assets/rocks/lang/zh_cn.json | 0 .../rocks/materialmaps/block/geyser.json | 0 .../materialmaps/block/nether_geyser.json | 0 .../assets/rocks/models/block/geyser_off.json | 0 .../assets/rocks/models/block/geyser_on.json | 0 .../models/block/large_acacia_stick.json | 0 .../models/block/large_andesite_rock.json | 0 .../rocks/models/block/large_birch_stick.json | 0 .../models/block/large_dark_oak_stick.json | 0 .../models/block/large_diorite_rock.json | 0 .../models/block/large_end_stone_rock.json | 0 .../models/block/large_granite_rock.json | 0 .../rocks/models/block/large_gravel_rock.json | 0 .../models/block/large_jungle_stick.json | 0 .../models/block/large_netherrack_rock.json | 0 .../rocks/models/block/large_oak_stick.json | 0 .../models/block/large_red_sand_rock.json | 0 .../assets/rocks/models/block/large_rock.json | 0 .../rocks/models/block/large_sand_rock.json | 0 .../models/block/large_soul_soil_rock.json | 0 .../models/block/large_spruce_stick.json | 0 .../models/block/medium_acacia_stick.json | 0 .../models/block/medium_andesite_rock.json | 0 .../models/block/medium_birch_stick.json | 0 .../models/block/medium_dark_oak_stick.json | 0 .../models/block/medium_diorite_rock.json | 0 .../models/block/medium_end_stone_rock.json | 0 .../models/block/medium_granite_rock.json | 0 .../models/block/medium_gravel_rock.json | 0 .../models/block/medium_jungle_stick.json | 0 .../models/block/medium_netherrack_rock.json | 0 .../rocks/models/block/medium_oak_stick.json | 0 .../models/block/medium_red_sand_rock.json | 0 .../rocks/models/block/medium_rock.json | 0 .../rocks/models/block/medium_sand_rock.json | 0 .../models/block/medium_soul_soil_rock.json | 0 .../models/block/medium_spruce_stick.json | 0 .../rocks/models/block/nether_geyser_off.json | 0 .../rocks/models/block/nether_geyser_on.json | 0 .../assets/rocks/models/block/pinecone.json | 0 .../rocks/models/block/seashell_pink.json | 0 .../rocks/models/block/seashell_white.json | 0 .../rocks/models/block/seashell_yellow.json | 0 .../models/block/small_acacia_stick.json | 0 .../models/block/small_andesite_rock.json | 0 .../rocks/models/block/small_birch_stick.json | 0 .../models/block/small_dark_oak_stick.json | 0 .../models/block/small_diorite_rock.json | 0 .../models/block/small_end_stone_rock.json | 0 .../models/block/small_granite_rock.json | 0 .../rocks/models/block/small_gravel_rock.json | 0 .../models/block/small_jungle_stick.json | 0 .../models/block/small_netherrack_rock.json | 0 .../rocks/models/block/small_oak_stick.json | 0 .../models/block/small_red_sand_rock.json | 0 .../assets/rocks/models/block/small_rock.json | 0 .../rocks/models/block/small_sand_rock.json | 0 .../models/block/small_soul_soil_rock.json | 0 .../models/block/small_spruce_stick.json | 0 .../rocks/models/block/snowy_geyser_off.json | 0 .../rocks/models/block/snowy_geyser_on.json | 0 .../rocks/models/block/starfish_orange.json | 42 +++++++- .../rocks/models/block/starfish_pink.json | 42 +++++++- .../rocks/models/block/starfish_red.json | 42 +++++++- .../models/block/tiny_andesite_rock.json | 0 .../rocks/models/block/tiny_diorite_rock.json | 0 .../models/block/tiny_end_stone_rock.json | 0 .../rocks/models/block/tiny_granite_rock.json | 0 .../rocks/models/block/tiny_gravel_rock.json | 0 .../models/block/tiny_netherrack_rock.json | 0 .../models/block/tiny_red_sand_rock.json | 0 .../assets/rocks/models/block/tiny_rock.json | 0 .../rocks/models/block/tiny_sand_rock.json | 0 .../models/block/tiny_soul_soil_rock.json | 0 .../rocks/models/item/acacia_stick.json | 0 .../rocks/models/item/andesite_rock.json | 0 .../rocks/models/item/andesite_splitter.json | 0 .../assets/rocks/models/item/birch_stick.json | 0 .../models/item/cobblestone_splitter.json | 0 .../rocks/models/item/dark_oak_stick.json | 0 .../rocks/models/item/diorite_rock.json | 0 .../rocks/models/item/diorite_splitter.json | 0 .../rocks/models/item/end_stone_rock.json | 0 .../rocks/models/item/end_stone_splitter.json | 0 .../assets/rocks/models/item/geyser.json | 0 .../rocks/models/item/granite_rock.json | 0 .../rocks/models/item/granite_splitter.json | 0 .../assets/rocks/models/item/gravel_rock.json | 0 .../rocks/models/item/jungle_stick.json | 0 .../rocks/models/item/nether_geyser.json | 0 .../rocks/models/item/netherrack_rock.json | 0 .../models/item/netherrack_splitter.json | 0 .../assets/rocks/models/item/oak_stick.json | 0 .../assets/rocks/models/item/pinecone.json | 0 .../rocks/models/item/red_sand_rock.json | 0 .../models/item/red_sandstone_splitter.json | 0 .../assets/rocks/models/item/rock.json | 0 .../assets/rocks/models/item/sand_rock.json | 0 .../rocks/models/item/sandstone_splitter.json | 0 .../assets/rocks/models/item/seashell.json | 0 .../rocks/models/item/soul_soil_rock.json | 0 .../rocks/models/item/soul_soil_splitter.json | 0 .../rocks/models/item/spruce_stick.json | 0 .../assets/rocks/models/item/starfish.json | 27 ++++- .../assets/rocks/textures/block/seashell.png | Bin .../rocks/textures/block/starfish_orange.png | Bin .../rocks/textures/block/starfish_pink.png | Bin .../rocks/textures/block/starfish_red.png | Bin .../assets/rocks/textures/item/starfish.png | Bin .../loot_tables/blocks/acacia_stick.json | 0 .../loot_tables/blocks/andesite_rock.json | 0 .../rocks/loot_tables/blocks/birch_stick.json | 0 .../loot_tables/blocks/dark_oak_stick.json | 0 .../loot_tables/blocks/diorite_rock.json | 0 .../loot_tables/blocks/end_stone_rock.json | 0 .../loot_tables/blocks/granite_rock.json | 0 .../rocks/loot_tables/blocks/gravel_rock.json | 0 .../loot_tables/blocks/jungle_stick.json | 0 .../loot_tables/blocks/netherrack_rock.json | 0 .../rocks/loot_tables/blocks/oak_stick.json | 0 .../rocks/loot_tables/blocks/pinecone.json | 0 .../loot_tables/blocks/red_sand_rock.json | 0 .../data/rocks/loot_tables/blocks/rock.json | 0 .../rocks/loot_tables/blocks/sand_rock.json | 0 .../rocks/loot_tables/blocks/seashell.json | 0 .../loot_tables/blocks/soul_soil_rock.json | 0 .../loot_tables/blocks/spruce_stick.json | 0 .../rocks/loot_tables/blocks/starfish.json | 55 +++++++++- .../rocks/recipes/andesite_from_splitter.json | 0 .../recipes/cobblestone_from_splitter.json | 0 .../rocks/recipes/diorite_from_splitter.json | 0 .../recipes/end_stone_from_splitter.json | 0 .../rocks/recipes/granite_from_splitter.json | 0 .../recipes/netherrack_from_splitter.json | 0 .../recipes/red_sandstone_from_splitter.json | 0 .../recipes/sandstone_from_splitter.json | 0 .../recipes/soul_soil_from_splitter.json | 0 src/main/resources/fabric.mod.json | 4 + src/main/resources/rocks.mixins.json | 0 src/main/resources/thisrocks.accesswidener | 2 + 205 files changed, 561 insertions(+), 281 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 build.gradle delete mode 100644 build/loom-cache/midnight-hats-2.0.1.jar mode change 100644 => 100755 gradle.properties mode change 100644 => 100755 gradle/wrapper/gradle-wrapper.jar mode change 100644 => 100755 gradle/wrapper/gradle-wrapper.properties mode change 100644 => 100755 gradlew mode change 100644 => 100755 gradlew.bat mode change 100644 => 100755 settings.gradle create mode 100755 src/main/java/eu/midnightdust/motschen/rocks/RocksClient.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/RocksMain.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/block/NetherGeyser.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/block/OverworldGeyser.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/block/Pinecone.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/block/Rock.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/block/Seashell.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/block/Starfish.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/block/Stick.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/BlockEntityInit.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/NetherGeyserBlockEntity.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/OverworldGeyserBlockEntity.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/blockstates/RockVariation.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/blockstates/SeashellVariation.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/blockstates/StarfishVariation.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/blockstates/StickVariation.java create mode 100755 src/main/java/eu/midnightdust/motschen/rocks/item/StarfishItem.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/mixin/GenerationSettingsAccessorMixin.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/mixin/MixinModelElementDeserializer.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/world/FeatureInjector.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/world/FeatureRegistry.java create mode 100755 src/main/java/eu/midnightdust/motschen/rocks/world/RocksDecorators.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/MiscFeatures.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/NetherFeatures.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/RockFeatures.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/StickFeatures.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/world/feature/SnowFeature.java mode change 100644 => 100755 src/main/java/eu/midnightdust/motschen/rocks/world/feature/UnderwaterFeature.java mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/acacia_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/andesite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/birch_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/dark_oak_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/diorite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/end_stone_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/geyser.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/granite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/gravel_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/jungle_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/nether_geyser.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/netherrack_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/oak_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/pinecone.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/red_sand_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/sand_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/seashell.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/soul_soil_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/spruce_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/blockstates/starfish.json mode change 100644 => 100755 src/main/resources/assets/rocks/icon.png mode change 100644 => 100755 src/main/resources/assets/rocks/lang/de_de.json mode change 100644 => 100755 src/main/resources/assets/rocks/lang/en_us.json mode change 100644 => 100755 src/main/resources/assets/rocks/lang/pl_pl.json mode change 100644 => 100755 src/main/resources/assets/rocks/lang/ru_ru.json mode change 100644 => 100755 src/main/resources/assets/rocks/lang/zh_cn.json mode change 100644 => 100755 src/main/resources/assets/rocks/materialmaps/block/geyser.json mode change 100644 => 100755 src/main/resources/assets/rocks/materialmaps/block/nether_geyser.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/geyser_off.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/geyser_on.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_acacia_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_andesite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_birch_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_dark_oak_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_diorite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_end_stone_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_granite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_gravel_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_jungle_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_netherrack_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_oak_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_red_sand_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_sand_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_soul_soil_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/large_spruce_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_acacia_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_andesite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_birch_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_dark_oak_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_diorite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_end_stone_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_granite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_gravel_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_jungle_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_netherrack_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_oak_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_red_sand_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_sand_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_soul_soil_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/medium_spruce_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/nether_geyser_off.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/nether_geyser_on.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/pinecone.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/seashell_pink.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/seashell_white.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/seashell_yellow.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_acacia_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_andesite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_birch_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_dark_oak_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_diorite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_end_stone_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_granite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_gravel_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_jungle_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_netherrack_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_oak_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_red_sand_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_sand_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_soul_soil_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/small_spruce_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/snowy_geyser_off.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/snowy_geyser_on.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/starfish_orange.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/starfish_pink.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/starfish_red.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/tiny_andesite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/tiny_diorite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/tiny_end_stone_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/tiny_granite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/tiny_gravel_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/tiny_netherrack_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/tiny_red_sand_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/tiny_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/tiny_sand_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/block/tiny_soul_soil_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/acacia_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/andesite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/andesite_splitter.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/birch_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/cobblestone_splitter.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/dark_oak_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/diorite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/diorite_splitter.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/end_stone_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/end_stone_splitter.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/geyser.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/granite_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/granite_splitter.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/gravel_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/jungle_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/nether_geyser.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/netherrack_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/netherrack_splitter.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/oak_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/pinecone.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/red_sand_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/red_sandstone_splitter.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/sand_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/sandstone_splitter.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/seashell.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/soul_soil_rock.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/soul_soil_splitter.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/spruce_stick.json mode change 100644 => 100755 src/main/resources/assets/rocks/models/item/starfish.json mode change 100644 => 100755 src/main/resources/assets/rocks/textures/block/seashell.png mode change 100644 => 100755 src/main/resources/assets/rocks/textures/block/starfish_orange.png mode change 100644 => 100755 src/main/resources/assets/rocks/textures/block/starfish_pink.png mode change 100644 => 100755 src/main/resources/assets/rocks/textures/block/starfish_red.png mode change 100644 => 100755 src/main/resources/assets/rocks/textures/item/starfish.png mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/acacia_stick.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/andesite_rock.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/birch_stick.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/dark_oak_stick.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/diorite_rock.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/end_stone_rock.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/granite_rock.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/gravel_rock.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/jungle_stick.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/netherrack_rock.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/oak_stick.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/pinecone.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/red_sand_rock.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/rock.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/sand_rock.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/seashell.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/soul_soil_rock.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/spruce_stick.json mode change 100644 => 100755 src/main/resources/data/rocks/loot_tables/blocks/starfish.json mode change 100644 => 100755 src/main/resources/data/rocks/recipes/andesite_from_splitter.json mode change 100644 => 100755 src/main/resources/data/rocks/recipes/cobblestone_from_splitter.json mode change 100644 => 100755 src/main/resources/data/rocks/recipes/diorite_from_splitter.json mode change 100644 => 100755 src/main/resources/data/rocks/recipes/end_stone_from_splitter.json mode change 100644 => 100755 src/main/resources/data/rocks/recipes/granite_from_splitter.json mode change 100644 => 100755 src/main/resources/data/rocks/recipes/netherrack_from_splitter.json mode change 100644 => 100755 src/main/resources/data/rocks/recipes/red_sandstone_from_splitter.json mode change 100644 => 100755 src/main/resources/data/rocks/recipes/sandstone_from_splitter.json mode change 100644 => 100755 src/main/resources/data/rocks/recipes/soul_soil_from_splitter.json mode change 100644 => 100755 src/main/resources/fabric.mod.json mode change 100644 => 100755 src/main/resources/rocks.mixins.json create mode 100755 src/main/resources/thisrocks.accesswidener diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index d6cf9c1..05a47ee --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ # gradle - +build/ .gradle/ out/ classes/ @@ -21,4 +21,4 @@ bin/ # fabric -run/ \ No newline at end of file +run/ diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/build.gradle b/build.gradle old mode 100644 new mode 100755 index 5220bc6..ea2bff4 --- a/build.gradle +++ b/build.gradle @@ -1,66 +1,67 @@ plugins { - id 'fabric-loom' version '0.4-SNAPSHOT' + id 'fabric-loom' version '0.8-SNAPSHOT' id 'maven-publish' } -sourceCompatibility = JavaVersion.VERSION_1_8 -targetCompatibility = JavaVersion.VERSION_1_8 +sourceCompatibility = JavaVersion.VERSION_16 +targetCompatibility = JavaVersion.VERSION_16 archivesBaseName = project.archives_base_name version = project.mod_version group = project.maven_group minecraft { + accessWidener = file("src/main/resources/thisrocks.accesswidener") } repositories { + maven { url "https://maven.terraformersmc.com/releases" } maven { url "https://jitpack.io" } - maven { url "https://maven.blamejared.com" } } dependencies { //to change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - modCompile "net.fabricmc:fabric-loader:${project.loader_version}" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" // Fabric API. This is technically optional, but you probably want it anyway. - modCompile "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - modImplementation "eu.midnightdust:midnight-hats:${midnighthats_version}" - include "eu.midnightdust:midnight-hats:${midnighthats_version}" + modImplementation "com.github.TeamMidnightDust:MidnightLib:${midnightlib_version}" + include "com.github.TeamMidnightDust:MidnightLib:${midnightlib_version}" } processResources { inputs.property "version", project.version - from(sourceSets.main.resources.srcDirs) { - include "fabric.mod.json" + filesMatching("fabric.mod.json") { expand "version": project.version } - - from(sourceSets.main.resources.srcDirs) { - exclude "fabric.mod.json" - } } -// ensure that the encoding is set to UTF-8, no matter what the system default is -// this fixes some edge cases with special characters not displaying correctly -// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html -tasks.withType(JavaCompile) { - options.encoding = "UTF-8" +tasks.withType(JavaCompile).configureEach { + // ensure that the encoding is set to UTF-8, no matter what the system default is + // this fixes some edge cases with special characters not displaying correctly + // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html + // If Javadoc is generated, this must be specified in that task too. + it.options.encoding = "UTF-8" + + // Minecraft 1.17 (21w19a) upwards uses Java 16. + it.options.release = 16 } -// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task -// if it is present. -// If you remove this task, sources will not be generated. -task sourcesJar(type: Jar, dependsOn: classes) { - classifier = "sources" - from sourceSets.main.allSource +java { + // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task + // if it is present. + // If you remove this line, sources will not be generated. + withSourcesJar() } jar { - from "LICENSE" + from("LICENSE") { + rename { "${it}_${project.archivesBaseName}"} + } } // configure the maven publication @@ -77,9 +78,11 @@ publishing { } } - // select the repositories you want to publish to + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. repositories { - // uncomment to publish to the local maven - // mavenLocal() + // Add repositories to publish to here. + // Notice: This block does NOT have the same function as the block in the top level. + // The repositories here will be used for publishing your artifact, not for + // retrieving dependencies. } } diff --git a/build/loom-cache/midnight-hats-2.0.1.jar b/build/loom-cache/midnight-hats-2.0.1.jar deleted file mode 100644 index d712a553c9619e9b1fa5da7dda0b1506694d44f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49881 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 D?#yah diff --git a/gradle.properties b/gradle.properties old mode 100644 new mode 100755 index 3785ab0..057f32a --- a/gradle.properties +++ b/gradle.properties @@ -3,16 +3,16 @@ org.gradle.jvmargs=-Xmx2G # Fabric Properties # check these on https://fabricmc.net/use - minecraft_version=1.16.4 - yarn_mappings=1.16.4+build.7 - loader_version=0.10.8 + minecraft_version=1.17-pre1 + yarn_mappings=1.17-pre1+build.9 + loader_version=0.11.3 # Mod Properties - mod_version = 1.3.1 + mod_version = 1.4.0 maven_group = eu.midnightdust.motschen archives_base_name = rocks # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api - fabric_version=0.17.2+build.396-1.16 - midnighthats_version=2.0.1 + fabric_version=0.34.8+1.17 + midnightlib_version=v0.2.2 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar old mode 100644 new mode 100755 index 5c2d1cf016b3885f6930543d57b744ea8c220a1a..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch delta 23334 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 WDWbsF$p{Gi@ZUasP|4|kdH)CXgbPdn delta 19998 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties old mode 100644 new mode 100755 index 4b7e1f3..e5338d3 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 index 8e25e6c..4f906e0 --- a/gradlew +++ b/gradlew @@ -82,6 +82,7 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -125,10 +126,11 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath @@ -154,19 +156,19 @@ if $cygwin ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi @@ -175,14 +177,9 @@ save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } -APP_ARGS=$(save "$@") +APP_ARGS=`save "$@"` # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat old mode 100644 new mode 100755 index 9618d8d..107acd3 --- a/gradlew.bat +++ b/gradlew.bat @@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @@ -37,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -51,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -61,28 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/settings.gradle b/settings.gradle old mode 100644 new mode 100755 diff --git a/src/main/java/eu/midnightdust/motschen/rocks/RocksClient.java b/src/main/java/eu/midnightdust/motschen/rocks/RocksClient.java new file mode 100755 index 0000000..081b87d --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/RocksClient.java @@ -0,0 +1,14 @@ +package eu.midnightdust.motschen.rocks; + +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry; +import net.minecraft.util.Identifier; + +public class RocksClient implements ClientModInitializer { + @Override + public void onInitializeClient() { + FabricModelPredicateProviderRegistry.register(RocksMain.Starfish.asItem(), new Identifier("red"), (stack, world, entity, seed) -> (stack.getTag() != null && stack.getTag().getString("variation").equals("red")) ? 1 : 0); + FabricModelPredicateProviderRegistry.register(RocksMain.Starfish.asItem(), new Identifier("pink"), (stack, world, entity, seed) -> (stack.getTag() != null && stack.getTag().getString("variation").equals("pink")) ? 1 : 0); + FabricModelPredicateProviderRegistry.register(RocksMain.Starfish.asItem(), new Identifier("orange"), (stack, world, entity, seed) -> (stack.getTag() != null && stack.getTag().getString("variation").equals("orange")) ? 1 : 0); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/RocksMain.java b/src/main/java/eu/midnightdust/motschen/rocks/RocksMain.java old mode 100644 new mode 100755 index a616630..23e6665 --- a/src/main/java/eu/midnightdust/motschen/rocks/RocksMain.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/RocksMain.java @@ -126,7 +126,6 @@ public class RocksMain implements ModInitializer { StickFeatures.init(); MiscFeatures.init(); NetherFeatures.init(); - FeatureInjector.init(); BlockEntityInit.init(); } diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/NetherGeyser.java b/src/main/java/eu/midnightdust/motschen/rocks/block/NetherGeyser.java old mode 100644 new mode 100755 index 6dd8e47..68d12eb --- a/src/main/java/eu/midnightdust/motschen/rocks/block/NetherGeyser.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/NetherGeyser.java @@ -1,9 +1,12 @@ package eu.midnightdust.motschen.rocks.block; +import eu.midnightdust.motschen.rocks.block.blockentity.BlockEntityInit; import eu.midnightdust.motschen.rocks.block.blockentity.NetherGeyserBlockEntity; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityTicker; +import net.minecraft.block.entity.BlockEntityType; import net.minecraft.item.ItemPlacementContext; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.state.StateManager; @@ -12,9 +15,13 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.shape.VoxelShape; import net.minecraft.world.BlockView; +import net.minecraft.world.World; import net.minecraft.world.WorldView; +import org.jetbrains.annotations.Nullable; -public class NetherGeyser extends Block implements BlockEntityProvider { +import java.util.Objects; + +public class NetherGeyser extends BlockWithEntity implements BlockEntityProvider { private static final VoxelShape SHAPE; public static final BooleanProperty ACTIVE = BooleanProperty.of("active"); @@ -24,13 +31,20 @@ public class NetherGeyser extends Block implements BlockEntityProvider { this.setDefaultState(this.stateManager.getDefaultState().with(ACTIVE, false)); } @Override - public BlockEntity createBlockEntity(BlockView view) { - return new NetherGeyserBlockEntity(); + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.MODEL; + } + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { + return new NetherGeyserBlockEntity(pos, state); + } + @Nullable + public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type) { + return checkType(type, BlockEntityInit.NETHER_GEYSER_BE, NetherGeyserBlockEntity::tick); } - @Override public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { - return super.getPlacementState(itemPlacementContext) + return Objects.requireNonNull(super.getPlacementState(itemPlacementContext)) .with(ACTIVE, false); } @@ -43,9 +57,7 @@ public class NetherGeyser extends Block implements BlockEntityProvider { return SHAPE; } static { - VoxelShape shape = createCuboidShape(5, 0, 5, 11, 1, 11); - - SHAPE = shape; + SHAPE = createCuboidShape(5, 0, 5, 11, 1, 11); } public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/OverworldGeyser.java b/src/main/java/eu/midnightdust/motschen/rocks/block/OverworldGeyser.java old mode 100644 new mode 100755 index d4f4051..418273e --- a/src/main/java/eu/midnightdust/motschen/rocks/block/OverworldGeyser.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/OverworldGeyser.java @@ -1,9 +1,12 @@ package eu.midnightdust.motschen.rocks.block; +import eu.midnightdust.motschen.rocks.block.blockentity.BlockEntityInit; import eu.midnightdust.motschen.rocks.block.blockentity.OverworldGeyserBlockEntity; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityTicker; +import net.minecraft.block.entity.BlockEntityType; import net.minecraft.item.ItemPlacementContext; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.state.StateManager; @@ -14,9 +17,13 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; +import net.minecraft.world.World; import net.minecraft.world.WorldView; +import org.jetbrains.annotations.Nullable; -public class OverworldGeyser extends Block implements BlockEntityProvider { +import java.util.Objects; + +public class OverworldGeyser extends BlockWithEntity implements BlockEntityProvider { private static final VoxelShape SHAPE; private static final VoxelShape SNOWY_SHAPE; @@ -28,13 +35,20 @@ public class OverworldGeyser extends Block implements BlockEntityProvider { this.setDefaultState(this.stateManager.getDefaultState().with(ACTIVE, false).with(SNOWY, false)); } @Override - public BlockEntity createBlockEntity(BlockView view) { - return new OverworldGeyserBlockEntity(); + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.MODEL; + } + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { + return new OverworldGeyserBlockEntity(pos, state); + } + @Nullable + public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type) { + return checkType(type, BlockEntityInit.OVERWORLD_GEYSER_BE, OverworldGeyserBlockEntity::tick); } - @Override public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { - return super.getPlacementState(itemPlacementContext) + return Objects.requireNonNull(super.getPlacementState(itemPlacementContext)) .with(ACTIVE, false).with(SNOWY, false); } @@ -44,7 +58,7 @@ public class OverworldGeyser extends Block implements BlockEntityProvider { } @Override public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { - if (state.get(SNOWY) == true) {return SNOWY_SHAPE;} + if (state.get(SNOWY)) {return SNOWY_SHAPE;} else return SHAPE; } static { diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/Pinecone.java b/src/main/java/eu/midnightdust/motschen/rocks/block/Pinecone.java old mode 100644 new mode 100755 index 325d58d..ea8c489 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/Pinecone.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/Pinecone.java @@ -24,9 +24,7 @@ public class Pinecone extends Block { return SHAPE; } static { - VoxelShape shape = createCuboidShape(0, 0, 0, 16, 3, 16); - - SHAPE = shape; + SHAPE = createCuboidShape(0, 0, 0, 16, 3, 16); } public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/Rock.java b/src/main/java/eu/midnightdust/motschen/rocks/block/Rock.java old mode 100644 new mode 100755 index d1acc80..323c428 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/Rock.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/Rock.java @@ -20,6 +20,8 @@ import net.minecraft.world.World; import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldView; +import java.util.Objects; + public class Rock extends Block { private static final VoxelShape SHAPE; @@ -32,7 +34,7 @@ public class Rock extends Block { @Override public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { - return super.getPlacementState(itemPlacementContext) + return Objects.requireNonNull(super.getPlacementState(itemPlacementContext)) .with(ROCK_VARIATION, RockVariation.TINY); } public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { @@ -63,9 +65,7 @@ public class Rock extends Block { return SHAPE; } static { - VoxelShape shape = createCuboidShape(0, 0, 0, 16, 3, 16); - - SHAPE = shape; + SHAPE = createCuboidShape(0, 0, 0, 16, 3, 16); } public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/Seashell.java b/src/main/java/eu/midnightdust/motschen/rocks/block/Seashell.java old mode 100644 new mode 100755 index e4dacbd..a0d1b53 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/Seashell.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/Seashell.java @@ -24,6 +24,8 @@ import net.minecraft.world.World; import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldView; +import java.util.Objects; + public class Seashell extends Block implements Waterloggable { private static final VoxelShape SHAPE; @@ -43,7 +45,7 @@ public class Seashell extends Block implements Waterloggable { @Override public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { FluidState fluidState = itemPlacementContext.getWorld().getFluidState(itemPlacementContext.getBlockPos()); - return super.getPlacementState(itemPlacementContext) + return Objects.requireNonNull(super.getPlacementState(itemPlacementContext)) .with(SEASHELL_VARIATION, SeashellVariation.PINK).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); } @@ -72,9 +74,7 @@ public class Seashell extends Block implements Waterloggable { return SHAPE; } static { - VoxelShape shape = createCuboidShape(0, 0, 0, 16, 3, 16); - - SHAPE = shape; + SHAPE = createCuboidShape(0, 0, 0, 16, 3, 16); } public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/Starfish.java b/src/main/java/eu/midnightdust/motschen/rocks/block/Starfish.java old mode 100644 new mode 100755 index da9bd77..f69b318 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/Starfish.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/Starfish.java @@ -8,6 +8,10 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.fluid.FluidState; import net.minecraft.fluid.Fluids; import net.minecraft.item.ItemPlacementContext; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.NbtElement; +import net.minecraft.nbt.NbtString; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; @@ -24,6 +28,8 @@ import net.minecraft.world.World; import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldView; +import java.util.Objects; + public class Starfish extends Block implements Waterloggable { private static final VoxelShape SHAPE; @@ -42,9 +48,22 @@ public class Starfish extends Block implements Waterloggable { @Override public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { + ItemStack stack = itemPlacementContext.getStack(); + StarfishVariation variation = StarfishVariation.RED; + if (stack.getTag() != null) { + var optionalVariation = STARFISH_VARIATION.parse(stack.getTag().getString("variation")); + if (optionalVariation.isPresent()) variation = optionalVariation.get(); + } FluidState fluidState = itemPlacementContext.getWorld().getFluidState(itemPlacementContext.getBlockPos()); - return super.getPlacementState(itemPlacementContext) - .with(STARFISH_VARIATION, StarfishVariation.RED).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return Objects.requireNonNull(super.getPlacementState(itemPlacementContext)) + .with(STARFISH_VARIATION, variation).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + } + @Override + public ItemStack getPickStack(BlockView world, BlockPos pos, BlockState state) { + ItemStack stack = new ItemStack(this); + stack.getOrCreateTag().putString("variation", state.get(STARFISH_VARIATION).asString()); + LOGGER.info(state.get(STARFISH_VARIATION).asString()); + return stack; } public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { @@ -72,9 +91,7 @@ public class Starfish extends Block implements Waterloggable { return SHAPE; } static { - VoxelShape shape = createCuboidShape(0, 0, 0, 16, 1, 16); - - SHAPE = shape; + SHAPE = createCuboidShape(0, 0, 0, 16, 1, 16); } public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/Stick.java b/src/main/java/eu/midnightdust/motschen/rocks/block/Stick.java old mode 100644 new mode 100755 index b72ea4f..d556c61 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/Stick.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/Stick.java @@ -20,6 +20,8 @@ import net.minecraft.world.World; import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldView; +import java.util.Objects; + public class Stick extends Block { private static final VoxelShape SHAPE; @@ -32,7 +34,7 @@ public class Stick extends Block { @Override public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { - return super.getPlacementState(itemPlacementContext) + return Objects.requireNonNull(super.getPlacementState(itemPlacementContext)) .with(STICK_VARIATION, StickVariation.SMALL); } public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { @@ -60,9 +62,7 @@ public class Stick extends Block { return SHAPE; } static { - VoxelShape shape = createCuboidShape(0, 0, 0, 16, 1, 16); - - SHAPE = shape; + SHAPE = createCuboidShape(0, 0, 0, 16, 1, 16); } public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/BlockEntityInit.java b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/BlockEntityInit.java old mode 100644 new mode 100755 index b398cf7..760fea3 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/BlockEntityInit.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/BlockEntityInit.java @@ -1,6 +1,7 @@ package eu.midnightdust.motschen.rocks.block.blockentity; import eu.midnightdust.motschen.rocks.RocksMain; +import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; @@ -10,7 +11,7 @@ public class BlockEntityInit { public static BlockEntityType NETHER_GEYSER_BE; public static void init() { - OVERWORLD_GEYSER_BE = Registry.register(Registry.BLOCK_ENTITY_TYPE, new Identifier(RocksMain.MOD_ID,"overworld_geyser_blockentity"), BlockEntityType.Builder.create(OverworldGeyserBlockEntity::new, RocksMain.Geyser).build(null)); - NETHER_GEYSER_BE = Registry.register(Registry.BLOCK_ENTITY_TYPE, new Identifier(RocksMain.MOD_ID,"nether_geyser_blockentity"), BlockEntityType.Builder.create(NetherGeyserBlockEntity::new, RocksMain.NetherGeyser).build(null)); + OVERWORLD_GEYSER_BE = Registry.register(Registry.BLOCK_ENTITY_TYPE, new Identifier(RocksMain.MOD_ID,"overworld_geyser_blockentity"), FabricBlockEntityTypeBuilder.create(OverworldGeyserBlockEntity::new, RocksMain.Geyser).build(null)); + NETHER_GEYSER_BE = Registry.register(Registry.BLOCK_ENTITY_TYPE, new Identifier(RocksMain.MOD_ID,"nether_geyser_blockentity"), FabricBlockEntityTypeBuilder.create(NetherGeyserBlockEntity::new, RocksMain.NetherGeyser).build(null)); } } diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/NetherGeyserBlockEntity.java b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/NetherGeyserBlockEntity.java old mode 100644 new mode 100755 index 2c557a2..63f3947 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/NetherGeyserBlockEntity.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/NetherGeyserBlockEntity.java @@ -7,22 +7,22 @@ import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.particle.ParticleTypes; -import net.minecraft.util.Tickable; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; -public class NetherGeyserBlockEntity extends BlockEntity implements Tickable { +public class NetherGeyserBlockEntity extends BlockEntity { private int countdown = 0; - public NetherGeyserBlockEntity() { - super(BlockEntityInit.NETHER_GEYSER_BE); + public NetherGeyserBlockEntity(BlockPos pos, BlockState state) { + super(BlockEntityInit.NETHER_GEYSER_BE, pos, state); } - @Override - public void tick() { + public static void tick(World world, BlockPos pos, BlockState state, NetherGeyserBlockEntity blockEntity) { + assert world != null; if (world.getBlockState(pos).getBlock() == RocksMain.NetherGeyser) { - PlayerEntity player = this.world.getClosestPlayer(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 3, true); - PlayerEntity player2 = this.world.getClosestPlayer(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 1, true); - BlockState state = this.getCachedState(); + PlayerEntity player = world.getClosestPlayer(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 3, true); + PlayerEntity player2 = world.getClosestPlayer(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 1, true); + if (player != null) { world.setBlockState(pos, state.with(NetherGeyser.ACTIVE, true)); @@ -31,17 +31,17 @@ public class NetherGeyserBlockEntity extends BlockEntity implements Tickable { if (player2 != null) { player2.damage(DamageSource.ON_FIRE, 4); } - countdown = 1000; + blockEntity.countdown = 1000; } else { - if (countdown > 0) { - countdown = countdown - 1; + if (blockEntity.countdown > 0) { + blockEntity.countdown = blockEntity.countdown - 1; } - if (countdown == 0) { + if (blockEntity.countdown == 0) { world.setBlockState(pos, state.with(NetherGeyser.ACTIVE, false)); } } - if (Boolean.TRUE.equals(state.get(NetherGeyser.ACTIVE))) { + if (state.get(NetherGeyser.ACTIVE)) { world.addParticle(ParticleTypes.LAVA, pos.getX() + 0.5, pos.getY() + 0.1, pos.getZ() + 0.5, 1, 1.5, 1); world.addParticle(ParticleTypes.LAVA, pos.getX() + 0.5, pos.getY() + 1.0, pos.getZ() + 0.5, 1, 1.5, 1); world.addParticle(ParticleTypes.SMOKE, pos.getX() + 0.5, pos.getY() + 0.1, pos.getZ() + 0.5, 0, 0.3, 0); diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/OverworldGeyserBlockEntity.java b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/OverworldGeyserBlockEntity.java old mode 100644 new mode 100755 index 1907c4f..ba45cc2 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/OverworldGeyserBlockEntity.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/OverworldGeyserBlockEntity.java @@ -8,45 +8,39 @@ import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffects; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.particle.ParticleTypes; -import net.minecraft.util.Tickable; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; -public class OverworldGeyserBlockEntity extends BlockEntity implements Tickable { - private int countdown = 0; +public class OverworldGeyserBlockEntity extends BlockEntity { + public int countdown = 0; - public OverworldGeyserBlockEntity() { - super(BlockEntityInit.OVERWORLD_GEYSER_BE); + public OverworldGeyserBlockEntity(BlockPos pos, BlockState state) { + super(BlockEntityInit.OVERWORLD_GEYSER_BE, pos, state); } - @Override - public void tick() { + public static void tick(World world, BlockPos pos, BlockState state, OverworldGeyserBlockEntity blockEntity) { + assert world != null; if (world.getBlockState(pos).getBlock() == RocksMain.Geyser) { - PlayerEntity player = this.world.getClosestPlayer(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 3, true); - PlayerEntity player2 = this.world.getClosestPlayer(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 8, true); - PlayerEntity player3 = null; + PlayerEntity player = world.getClosestPlayer(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 3, true); + PlayerEntity player2 = world.getClosestPlayer(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 8, true); if (player2 != null && player2.getY() >= pos.getY() && (pos.getX() <= player2.getX() && pos.getX() + 1 >= player2.getX()) && (pos.getZ() <= player2.getZ() && pos.getZ() + 1 >= player2.getZ())) { - player3 = player2; + player2.addStatusEffect(new StatusEffectInstance(StatusEffects.LEVITATION, 2, 10, true, false, false)); } - BlockState state = this.getCachedState(); if (player != null) { world.setBlockState(pos, state.with(OverworldGeyser.ACTIVE, true)); - - if (player3 != null) { - player3.addStatusEffect(new StatusEffectInstance(StatusEffects.LEVITATION, 2, 12, true, false, false)); - } - countdown = 1000; + blockEntity.countdown = 1000; } else { - if (countdown > 0) { - countdown = countdown - 1; + if (blockEntity.countdown > 0) { + blockEntity.countdown = blockEntity.countdown - 1; } - if (countdown == 0) { + if (blockEntity.countdown == 0) { world.setBlockState(pos, state.with(OverworldGeyser.ACTIVE, false)); } } - if (world != null && state.get(OverworldGeyser.ACTIVE) == true) { + if (state.get(OverworldGeyser.ACTIVE)) { world.addParticle(ParticleTypes.SPIT, pos.getX() + 0.5, pos.getY() + 0.1, pos.getZ() + 0.5, 0, 1.0, 0); world.addParticle(ParticleTypes.SPIT, pos.getX() + 0.5, pos.getY() + 0.3, pos.getZ() + 0.5, 0, 1.0, 0); world.addParticle(ParticleTypes.SPLASH, pos.getX() + 0.5, pos.getY() + 1.0, pos.getZ() + 0.5, -0.01, 1.5, -0.01); diff --git a/src/main/java/eu/midnightdust/motschen/rocks/blockstates/RockVariation.java b/src/main/java/eu/midnightdust/motschen/rocks/blockstates/RockVariation.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/midnightdust/motschen/rocks/blockstates/SeashellVariation.java b/src/main/java/eu/midnightdust/motschen/rocks/blockstates/SeashellVariation.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/midnightdust/motschen/rocks/blockstates/StarfishVariation.java b/src/main/java/eu/midnightdust/motschen/rocks/blockstates/StarfishVariation.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/midnightdust/motschen/rocks/blockstates/StickVariation.java b/src/main/java/eu/midnightdust/motschen/rocks/blockstates/StickVariation.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/midnightdust/motschen/rocks/item/StarfishItem.java b/src/main/java/eu/midnightdust/motschen/rocks/item/StarfishItem.java new file mode 100755 index 0000000..f0ff848 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/item/StarfishItem.java @@ -0,0 +1,13 @@ +package eu.midnightdust.motschen.rocks.item; + +import eu.midnightdust.motschen.rocks.blockstates.StarfishVariation; +import net.minecraft.item.Item; + +public class StarfishItem extends Item { + public final StarfishVariation variation; + + public StarfishItem(Settings settings, StarfishVariation variation) { + super(settings); + this.variation = variation; + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/mixin/GenerationSettingsAccessorMixin.java b/src/main/java/eu/midnightdust/motschen/rocks/mixin/GenerationSettingsAccessorMixin.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/midnightdust/motschen/rocks/mixin/MixinModelElementDeserializer.java b/src/main/java/eu/midnightdust/motschen/rocks/mixin/MixinModelElementDeserializer.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureInjector.java b/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureInjector.java old mode 100644 new mode 100755 diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureRegistry.java b/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureRegistry.java old mode 100644 new mode 100755 index a88021b..d2f9af0 --- a/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureRegistry.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureRegistry.java @@ -5,7 +5,9 @@ import eu.midnightdust.motschen.rocks.blockstates.SeashellVariation; import eu.midnightdust.motschen.rocks.blockstates.StarfishVariation; import eu.midnightdust.motschen.rocks.world.feature.SnowFeature; import eu.midnightdust.motschen.rocks.world.feature.UnderwaterFeature; +import net.minecraft.block.BlockState; import net.minecraft.state.property.Properties; +import net.minecraft.util.collection.DataPool; import net.minecraft.util.registry.Registry; import net.minecraft.world.gen.ProbabilityConfig; import net.minecraft.world.gen.feature.Feature; @@ -22,18 +24,18 @@ public class FeatureRegistry { return Registry.register(Registry.FEATURE, name, feature); } - private static final WeightedBlockStateProvider StarfishStates = new WeightedBlockStateProvider() - .addState(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION, StarfishVariation.RED).with(Properties.WATERLOGGED, true), 6) - .addState(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.PINK).with(Properties.WATERLOGGED, true), 7) - .addState(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.ORANGE).with(Properties.WATERLOGGED, true), 2); + private static final WeightedBlockStateProvider StarfishStates = new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION, StarfishVariation.RED).with(Properties.WATERLOGGED, true), 6) + .add(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.PINK).with(Properties.WATERLOGGED, true), 7) + .add(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.ORANGE).with(Properties.WATERLOGGED, true), 2).build()); - private static final WeightedBlockStateProvider SeashellStates = new WeightedBlockStateProvider() - .addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION, SeashellVariation.YELLOW).with(Properties.WATERLOGGED, true), 7) - .addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.PINK).with(Properties.WATERLOGGED, true), 2) - .addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.WHITE).with(Properties.WATERLOGGED, true), 6); + private static final WeightedBlockStateProvider SeashellStates = new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION, SeashellVariation.YELLOW).with(Properties.WATERLOGGED, true), 7) + .add(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.PINK).with(Properties.WATERLOGGED, true), 2) + .add(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.WHITE).with(Properties.WATERLOGGED, true), 6).build()); - private static final WeightedBlockStateProvider GeyserStates = new WeightedBlockStateProvider() - .addState(RocksMain.Geyser.getDefaultState().with(Properties.SNOWY, true), 1); + private static final WeightedBlockStateProvider GeyserStates = new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.Geyser.getDefaultState().with(Properties.SNOWY, true), 1).build()); static { UNDERWATER_STARFISH_FEATURE = register("underwater_starfish", new UnderwaterFeature(ProbabilityConfig.CODEC, StarfishStates)); diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/RocksDecorators.java b/src/main/java/eu/midnightdust/motschen/rocks/world/RocksDecorators.java new file mode 100755 index 0000000..c9d1d8e --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/RocksDecorators.java @@ -0,0 +1,12 @@ +package eu.midnightdust.motschen.rocks.world; + +import net.minecraft.world.gen.YOffset; +import net.minecraft.world.gen.decorator.ConfiguredDecorator; +import net.minecraft.world.gen.decorator.Decorator; +import net.minecraft.world.gen.decorator.RangeDecoratorConfig; +import net.minecraft.world.gen.heightprovider.UniformHeightProvider; + +public class RocksDecorators { + public static final RangeDecoratorConfig BOTTOM_TO_TOP_OFFSET_4 = new RangeDecoratorConfig(UniformHeightProvider.create(YOffset.aboveBottom(4), YOffset.belowTop(4))); + public static final ConfiguredDecorator ROCK = (ConfiguredDecorator)((ConfiguredDecorator)Decorator.RANGE.configure(BOTTOM_TO_TOP_OFFSET_4).spreadHorizontally()).repeatRandomly(5); +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/MiscFeatures.java b/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/MiscFeatures.java old mode 100644 new mode 100755 index bf39494..152d530 --- a/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/MiscFeatures.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/MiscFeatures.java @@ -5,8 +5,11 @@ import eu.midnightdust.motschen.rocks.RocksMain; import eu.midnightdust.motschen.rocks.blockstates.SeashellVariation; import eu.midnightdust.motschen.rocks.blockstates.StarfishVariation; import eu.midnightdust.motschen.rocks.world.FeatureRegistry; +import eu.midnightdust.motschen.rocks.world.RocksDecorators; +import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.util.Identifier; +import net.minecraft.util.collection.DataPool; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; import net.minecraft.world.gen.ProbabilityConfig; @@ -17,26 +20,26 @@ import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider; public class MiscFeatures { public static ConfiguredFeature SEASHELL_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.YELLOW), 7) - .addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.PINK), 2) - .addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.WHITE), 6), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.YELLOW), 7) + .add(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.PINK), 2) + .add(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.WHITE), 6).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.SAND, Blocks.SANDSTONE, Blocks.RED_SAND, Blocks.RED_SANDSTONE)) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature STARFISH_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.RED), 2) - .addState(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.PINK), 6) - .addState(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.ORANGE), 7), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.RED), 2) + .add(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.PINK), 6) + .add(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.ORANGE), 7).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.SAND, Blocks.SANDSTONE, Blocks.RED_SAND, Blocks.RED_SANDSTONE)) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature UNDERWATER_STARFISH_FEATURE = FeatureRegistry.UNDERWATER_STARFISH_FEATURE.configure(new ProbabilityConfig(1)); public static ConfiguredFeature UNDERWATER_SEASHELL_FEATURE = FeatureRegistry.UNDERWATER_SEASHELL_FEATURE.configure(new ProbabilityConfig(1)); - public static ConfiguredFeature SNOWY_GEYSER_FEATURE = FeatureRegistry.SNOWY_GEYSER_FEATURE.configure(new ProbabilityConfig(1)).decorate(ConfiguredFeatures.Decorators.FIRE); + public static ConfiguredFeature SNOWY_GEYSER_FEATURE = FeatureRegistry.SNOWY_GEYSER_FEATURE.configure(new ProbabilityConfig(1)).decorate(RocksDecorators.ROCK); public static void init() { Registry> registry = BuiltinRegistries.CONFIGURED_FEATURE; diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/NetherFeatures.java b/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/NetherFeatures.java old mode 100644 new mode 100755 index a21d665..5d516ff --- a/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/NetherFeatures.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/NetherFeatures.java @@ -3,8 +3,11 @@ package eu.midnightdust.motschen.rocks.world.configured_feature; import com.google.common.collect.ImmutableSet; import eu.midnightdust.motschen.rocks.RocksMain; import eu.midnightdust.motschen.rocks.blockstates.RockVariation; +import eu.midnightdust.motschen.rocks.world.RocksDecorators; +import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.util.Identifier; +import net.minecraft.util.collection.DataPool; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; import net.minecraft.world.gen.feature.ConfiguredFeature; @@ -12,47 +15,46 @@ import net.minecraft.world.gen.feature.ConfiguredFeatures; import net.minecraft.world.gen.feature.Feature; import net.minecraft.world.gen.feature.RandomPatchFeatureConfig; import net.minecraft.world.gen.placer.SimpleBlockPlacer; +import net.minecraft.world.gen.stateprovider.SimpleBlockStateProvider; import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider; public class NetherFeatures { public static ConfiguredFeature NETHERRACK_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.NetherrackRock.getDefaultState().with(RocksMain.ROCK_VARIATION, RockVariation.TINY), 10) - .addState(RocksMain.NetherrackRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) - .addState(RocksMain.NetherrackRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) - .addState(RocksMain.NetherrackRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.NetherrackRock.getDefaultState().with(RocksMain.ROCK_VARIATION, RockVariation.TINY), 10) + .add(RocksMain.NetherrackRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .add(RocksMain.NetherrackRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .add(RocksMain.NetherrackRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .whitelist(ImmutableSet.of(Blocks.NETHERRACK,Blocks.WARPED_NYLIUM,Blocks.CRIMSON_NYLIUM)).cannotProject().build()).decorate(ConfiguredFeatures.Decorators.FIRE).repeat(128); + .whitelist(ImmutableSet.of(Blocks.NETHERRACK,Blocks.WARPED_NYLIUM,Blocks.CRIMSON_NYLIUM)).cannotProject().build()).decorate(RocksDecorators.ROCK).repeat(128); public static ConfiguredFeature SOUL_SOIL_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.SoulSoilRock.getDefaultState().with(RocksMain.ROCK_VARIATION, RockVariation.TINY), 10) - .addState(RocksMain.SoulSoilRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) - .addState(RocksMain.SoulSoilRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) - .addState(RocksMain.SoulSoilRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.SoulSoilRock.getDefaultState().with(RocksMain.ROCK_VARIATION, RockVariation.TINY), 10) + .add(RocksMain.SoulSoilRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .add(RocksMain.SoulSoilRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .add(RocksMain.SoulSoilRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .whitelist(ImmutableSet.of(Blocks.SOUL_SOIL,Blocks.SOUL_SAND)).cannotProject().build()).decorate(ConfiguredFeatures.Decorators.FIRE).repeat(128); + .whitelist(ImmutableSet.of(Blocks.SOUL_SOIL,Blocks.SOUL_SAND)).cannotProject().build()).decorate(RocksDecorators.ROCK).repeat(128); public static ConfiguredFeature NETHER_GRAVEL_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION, RockVariation.TINY), 10) - .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) - .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) - .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION, RockVariation.TINY), 10) + .add(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .add(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .add(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .whitelist(ImmutableSet.of(Blocks.GRAVEL)).cannotProject().build()).decorate(ConfiguredFeatures.Decorators.FIRE).repeat(128); + .whitelist(ImmutableSet.of(Blocks.GRAVEL)).cannotProject().build()).decorate(RocksDecorators.ROCK).repeat(128); public static ConfiguredFeature NETHER_GEYSER_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.NetherGeyser.getDefaultState(),1), - SimpleBlockPlacer.INSTANCE)) + new SimpleBlockStateProvider(RocksMain.NetherGeyser.getDefaultState()),SimpleBlockPlacer.INSTANCE) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .whitelist(ImmutableSet.of(Blocks.NETHERRACK)).cannotProject().build()).decorate(ConfiguredFeatures.Decorators.FIRE).repeat(16); + .whitelist(ImmutableSet.of(Blocks.NETHERRACK)).cannotProject().build())).decorate(RocksDecorators.ROCK).repeat(16); public static void init() { Registry> registry = BuiltinRegistries.CONFIGURED_FEATURE; diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/RockFeatures.java b/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/RockFeatures.java old mode 100644 new mode 100755 index 50dd27e..8e862bc --- a/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/RockFeatures.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/RockFeatures.java @@ -3,8 +3,11 @@ package eu.midnightdust.motschen.rocks.world.configured_feature; import com.google.common.collect.ImmutableSet; import eu.midnightdust.motschen.rocks.RocksMain; import eu.midnightdust.motschen.rocks.blockstates.RockVariation; +import eu.midnightdust.motschen.rocks.world.RocksDecorators; +import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.util.Identifier; +import net.minecraft.util.collection.DataPool; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; import net.minecraft.world.gen.feature.*; @@ -14,84 +17,84 @@ import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider; public class RockFeatures { public static ConfiguredFeature ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) - .addState(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) - .addState(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) - .addState(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .add(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .add(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .add(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0).blacklist(ImmutableSet.of(Blocks.ICE.getDefaultState(),Blocks.SAND.getDefaultState(),Blocks.RED_SAND.getDefaultState())) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature GRANITE_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.GraniteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) - .addState(RocksMain.GraniteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) - .addState(RocksMain.GraniteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) - .addState(RocksMain.GraniteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.GraniteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .add(RocksMain.GraniteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .add(RocksMain.GraniteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .add(RocksMain.GraniteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.GRANITE)) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature DIORITE_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.DioriteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) - .addState(RocksMain.DioriteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) - .addState(RocksMain.DioriteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) - .addState(RocksMain.DioriteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.DioriteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .add(RocksMain.DioriteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .add(RocksMain.DioriteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .add(RocksMain.DioriteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.DIORITE)) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature ANDESITE_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.AndesiteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) - .addState(RocksMain.AndesiteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) - .addState(RocksMain.AndesiteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) - .addState(RocksMain.AndesiteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.AndesiteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .add(RocksMain.AndesiteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .add(RocksMain.AndesiteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .add(RocksMain.AndesiteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.ANDESITE)) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature SAND_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) - .addState(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) - .addState(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) - .addState(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .add(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .add(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .add(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.SAND, Blocks.SANDSTONE)) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature RED_SAND_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) - .addState(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) - .addState(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) - .addState(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .add(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .add(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .add(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.RED_SAND, Blocks.RED_SANDSTONE)) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature END_STONE_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.EndstoneRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) - .addState(RocksMain.EndstoneRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) - .addState(RocksMain.EndstoneRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) - .addState(RocksMain.EndstoneRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.EndstoneRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .add(RocksMain.EndstoneRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .add(RocksMain.EndstoneRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .add(RocksMain.EndstoneRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature GRAVEL_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) - .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) - .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) - .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .add(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .add(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .add(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.GRAVEL)) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static void init() { Registry> registry = BuiltinRegistries.CONFIGURED_FEATURE; diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/StickFeatures.java b/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/StickFeatures.java old mode 100644 new mode 100755 index a4651bb..5dda3c8 --- a/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/StickFeatures.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/configured_feature/StickFeatures.java @@ -3,8 +3,11 @@ package eu.midnightdust.motschen.rocks.world.configured_feature; import com.google.common.collect.ImmutableSet; import eu.midnightdust.motschen.rocks.RocksMain; import eu.midnightdust.motschen.rocks.blockstates.StickVariation; +import eu.midnightdust.motschen.rocks.world.RocksDecorators; +import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.util.Identifier; +import net.minecraft.util.collection.DataPool; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; import net.minecraft.world.gen.feature.ConfiguredFeature; @@ -17,59 +20,59 @@ import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider; public class StickFeatures { public static ConfiguredFeature OAK_STICK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.OakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) - .addState(RocksMain.OakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) - .addState(RocksMain.OakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.OakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) + .add(RocksMain.OakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) + .add(RocksMain.OakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.GRASS_BLOCK)) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature SPRUCE_STICK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.SpruceStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) - .addState(RocksMain.SpruceStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) - .addState(RocksMain.SpruceStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1) - .addState(RocksMain.Pinecone.getDefaultState(), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.SpruceStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) + .add(RocksMain.SpruceStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) + .add(RocksMain.SpruceStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1) + .add(RocksMain.Pinecone.getDefaultState(), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature BIRCH_STICK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.BirchStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) - .addState(RocksMain.BirchStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) - .addState(RocksMain.BirchStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.BirchStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) + .add(RocksMain.BirchStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) + .add(RocksMain.BirchStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature ACACIA_STICK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.AcaciaStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) - .addState(RocksMain.AcaciaStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) - .addState(RocksMain.AcaciaStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.AcaciaStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) + .add(RocksMain.AcaciaStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) + .add(RocksMain.AcaciaStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature JUNGLE_STICK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.JungleStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) - .addState(RocksMain.JungleStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) - .addState(RocksMain.JungleStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.JungleStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) + .add(RocksMain.JungleStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) + .add(RocksMain.JungleStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static ConfiguredFeature DARK_OAK_STICK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( - new WeightedBlockStateProvider() - .addState(RocksMain.DarkOakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) - .addState(RocksMain.DarkOakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) - .addState(RocksMain.DarkOakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), + new WeightedBlockStateProvider(DataPool.builder() + .add(RocksMain.DarkOakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.SMALL), 7) + .add(RocksMain.DarkOakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) + .add(RocksMain.DarkOakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1).build()), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + .build()).decorate(RocksDecorators.ROCK); public static void init() { Registry> registry = BuiltinRegistries.CONFIGURED_FEATURE; diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/feature/SnowFeature.java b/src/main/java/eu/midnightdust/motschen/rocks/world/feature/SnowFeature.java old mode 100644 new mode 100755 index 1ecc1c9..4535a87 --- a/src/main/java/eu/midnightdust/motschen/rocks/world/feature/SnowFeature.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/feature/SnowFeature.java @@ -10,6 +10,7 @@ import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.gen.ProbabilityConfig; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.util.FeatureContext; import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider; import java.util.Random; @@ -22,7 +23,11 @@ public class SnowFeature extends Feature { weightedBlockStateProvider1 = weightedBlockStateProvider; } - public boolean generate(StructureWorldAccess structureWorldAccess, ChunkGenerator chunkGenerator, Random random, BlockPos blockPos, ProbabilityConfig probabilityConfig) { + @Override + public boolean generate(FeatureContext context) { + Random random = context.getRandom(); + StructureWorldAccess structureWorldAccess = context.getWorld(); + BlockPos blockPos = context.getOrigin(); boolean bl = false; int i = random.nextInt(8) - random.nextInt(8); int j = random.nextInt(8) - random.nextInt(8); diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/feature/UnderwaterFeature.java b/src/main/java/eu/midnightdust/motschen/rocks/world/feature/UnderwaterFeature.java old mode 100644 new mode 100755 index cd107b6..872c5bd --- a/src/main/java/eu/midnightdust/motschen/rocks/world/feature/UnderwaterFeature.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/feature/UnderwaterFeature.java @@ -9,6 +9,7 @@ import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.gen.ProbabilityConfig; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.util.FeatureContext; import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider; import java.util.Random; @@ -20,7 +21,11 @@ public class UnderwaterFeature extends Feature { weightedBlockStateProvider1 = weightedBlockStateProvider; } - public boolean generate(StructureWorldAccess structureWorldAccess, ChunkGenerator chunkGenerator, Random random, BlockPos blockPos, ProbabilityConfig probabilityConfig) { + @Override + public boolean generate(FeatureContext context) { + Random random = context.getRandom(); + StructureWorldAccess structureWorldAccess = context.getWorld(); + BlockPos blockPos = context.getOrigin(); boolean bl = false; int i = random.nextInt(8) - random.nextInt(8); int j = random.nextInt(8) - random.nextInt(8); diff --git a/src/main/resources/assets/rocks/blockstates/acacia_stick.json b/src/main/resources/assets/rocks/blockstates/acacia_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/andesite_rock.json b/src/main/resources/assets/rocks/blockstates/andesite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/birch_stick.json b/src/main/resources/assets/rocks/blockstates/birch_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/dark_oak_stick.json b/src/main/resources/assets/rocks/blockstates/dark_oak_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/diorite_rock.json b/src/main/resources/assets/rocks/blockstates/diorite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/end_stone_rock.json b/src/main/resources/assets/rocks/blockstates/end_stone_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/geyser.json b/src/main/resources/assets/rocks/blockstates/geyser.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/granite_rock.json b/src/main/resources/assets/rocks/blockstates/granite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/gravel_rock.json b/src/main/resources/assets/rocks/blockstates/gravel_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/jungle_stick.json b/src/main/resources/assets/rocks/blockstates/jungle_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/nether_geyser.json b/src/main/resources/assets/rocks/blockstates/nether_geyser.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/netherrack_rock.json b/src/main/resources/assets/rocks/blockstates/netherrack_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/oak_stick.json b/src/main/resources/assets/rocks/blockstates/oak_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/pinecone.json b/src/main/resources/assets/rocks/blockstates/pinecone.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/red_sand_rock.json b/src/main/resources/assets/rocks/blockstates/red_sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/rock.json b/src/main/resources/assets/rocks/blockstates/rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/sand_rock.json b/src/main/resources/assets/rocks/blockstates/sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/seashell.json b/src/main/resources/assets/rocks/blockstates/seashell.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/soul_soil_rock.json b/src/main/resources/assets/rocks/blockstates/soul_soil_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/spruce_stick.json b/src/main/resources/assets/rocks/blockstates/spruce_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/blockstates/starfish.json b/src/main/resources/assets/rocks/blockstates/starfish.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/icon.png b/src/main/resources/assets/rocks/icon.png old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/lang/de_de.json b/src/main/resources/assets/rocks/lang/de_de.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/lang/en_us.json b/src/main/resources/assets/rocks/lang/en_us.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/lang/pl_pl.json b/src/main/resources/assets/rocks/lang/pl_pl.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/lang/ru_ru.json b/src/main/resources/assets/rocks/lang/ru_ru.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/lang/zh_cn.json b/src/main/resources/assets/rocks/lang/zh_cn.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/materialmaps/block/geyser.json b/src/main/resources/assets/rocks/materialmaps/block/geyser.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/materialmaps/block/nether_geyser.json b/src/main/resources/assets/rocks/materialmaps/block/nether_geyser.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/geyser_off.json b/src/main/resources/assets/rocks/models/block/geyser_off.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/geyser_on.json b/src/main/resources/assets/rocks/models/block/geyser_on.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_acacia_stick.json b/src/main/resources/assets/rocks/models/block/large_acacia_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_andesite_rock.json b/src/main/resources/assets/rocks/models/block/large_andesite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_birch_stick.json b/src/main/resources/assets/rocks/models/block/large_birch_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_dark_oak_stick.json b/src/main/resources/assets/rocks/models/block/large_dark_oak_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_diorite_rock.json b/src/main/resources/assets/rocks/models/block/large_diorite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_end_stone_rock.json b/src/main/resources/assets/rocks/models/block/large_end_stone_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_granite_rock.json b/src/main/resources/assets/rocks/models/block/large_granite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_gravel_rock.json b/src/main/resources/assets/rocks/models/block/large_gravel_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_jungle_stick.json b/src/main/resources/assets/rocks/models/block/large_jungle_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_netherrack_rock.json b/src/main/resources/assets/rocks/models/block/large_netherrack_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_oak_stick.json b/src/main/resources/assets/rocks/models/block/large_oak_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_red_sand_rock.json b/src/main/resources/assets/rocks/models/block/large_red_sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_rock.json b/src/main/resources/assets/rocks/models/block/large_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_sand_rock.json b/src/main/resources/assets/rocks/models/block/large_sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_soul_soil_rock.json b/src/main/resources/assets/rocks/models/block/large_soul_soil_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/large_spruce_stick.json b/src/main/resources/assets/rocks/models/block/large_spruce_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_acacia_stick.json b/src/main/resources/assets/rocks/models/block/medium_acacia_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_andesite_rock.json b/src/main/resources/assets/rocks/models/block/medium_andesite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_birch_stick.json b/src/main/resources/assets/rocks/models/block/medium_birch_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_dark_oak_stick.json b/src/main/resources/assets/rocks/models/block/medium_dark_oak_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_diorite_rock.json b/src/main/resources/assets/rocks/models/block/medium_diorite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_end_stone_rock.json b/src/main/resources/assets/rocks/models/block/medium_end_stone_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_granite_rock.json b/src/main/resources/assets/rocks/models/block/medium_granite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_gravel_rock.json b/src/main/resources/assets/rocks/models/block/medium_gravel_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_jungle_stick.json b/src/main/resources/assets/rocks/models/block/medium_jungle_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_netherrack_rock.json b/src/main/resources/assets/rocks/models/block/medium_netherrack_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_oak_stick.json b/src/main/resources/assets/rocks/models/block/medium_oak_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_red_sand_rock.json b/src/main/resources/assets/rocks/models/block/medium_red_sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_rock.json b/src/main/resources/assets/rocks/models/block/medium_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_sand_rock.json b/src/main/resources/assets/rocks/models/block/medium_sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_soul_soil_rock.json b/src/main/resources/assets/rocks/models/block/medium_soul_soil_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/medium_spruce_stick.json b/src/main/resources/assets/rocks/models/block/medium_spruce_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/nether_geyser_off.json b/src/main/resources/assets/rocks/models/block/nether_geyser_off.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/nether_geyser_on.json b/src/main/resources/assets/rocks/models/block/nether_geyser_on.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/pinecone.json b/src/main/resources/assets/rocks/models/block/pinecone.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/seashell_pink.json b/src/main/resources/assets/rocks/models/block/seashell_pink.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/seashell_white.json b/src/main/resources/assets/rocks/models/block/seashell_white.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/seashell_yellow.json b/src/main/resources/assets/rocks/models/block/seashell_yellow.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_acacia_stick.json b/src/main/resources/assets/rocks/models/block/small_acacia_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_andesite_rock.json b/src/main/resources/assets/rocks/models/block/small_andesite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_birch_stick.json b/src/main/resources/assets/rocks/models/block/small_birch_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_dark_oak_stick.json b/src/main/resources/assets/rocks/models/block/small_dark_oak_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_diorite_rock.json b/src/main/resources/assets/rocks/models/block/small_diorite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_end_stone_rock.json b/src/main/resources/assets/rocks/models/block/small_end_stone_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_granite_rock.json b/src/main/resources/assets/rocks/models/block/small_granite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_gravel_rock.json b/src/main/resources/assets/rocks/models/block/small_gravel_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_jungle_stick.json b/src/main/resources/assets/rocks/models/block/small_jungle_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_netherrack_rock.json b/src/main/resources/assets/rocks/models/block/small_netherrack_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_oak_stick.json b/src/main/resources/assets/rocks/models/block/small_oak_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_red_sand_rock.json b/src/main/resources/assets/rocks/models/block/small_red_sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_rock.json b/src/main/resources/assets/rocks/models/block/small_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_sand_rock.json b/src/main/resources/assets/rocks/models/block/small_sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_soul_soil_rock.json b/src/main/resources/assets/rocks/models/block/small_soul_soil_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/small_spruce_stick.json b/src/main/resources/assets/rocks/models/block/small_spruce_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/snowy_geyser_off.json b/src/main/resources/assets/rocks/models/block/snowy_geyser_off.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/snowy_geyser_on.json b/src/main/resources/assets/rocks/models/block/snowy_geyser_on.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/starfish_orange.json b/src/main/resources/assets/rocks/models/block/starfish_orange.json old mode 100644 new mode 100755 index 009843d..78860ac --- a/src/main/resources/assets/rocks/models/block/starfish_orange.json +++ b/src/main/resources/assets/rocks/models/block/starfish_orange.json @@ -1,9 +1,10 @@ { - "credit": "made by Motschen", + "credit": "Made with Blockbench", "textures": { "0": "rocks:block/starfish_orange", "particle": "rocks:block/starfish_orange" }, + "gui_light": "front", "elements": [ { "from": [4.5, 0, 10.5], @@ -305,6 +306,43 @@ } } ], + "display": { + "thirdperson_righthand": { + "rotation": [65, 35, 0], + "translation": [0.75, 4.75, 3.5], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [65, 35, 0], + "translation": [-1.75, 2.75, 3.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [29, 0, 23], + "translation": [3.25, 8.25, 0] + }, + "firstperson_lefthand": { + "rotation": [29, 0, 23], + "translation": [-3, 7.25, 0] + }, + "ground": { + "translation": [2.5, 3.75, -1], + "scale": [0.75, 0.75, 0.75] + }, + "gui": { + "rotation": [90, 35, 0], + "translation": [2.25, 3.5, 0], + "scale": [1.5, 1.5, 1.5] + }, + "head": { + "translation": [3, 14.25, -0.75] + }, + "fixed": { + "rotation": [-90, 0, 0], + "translation": [4.25, -2, -12], + "scale": [1.5, 1.5, 1.5] + } + }, "groups": [ { "name": "side1", @@ -331,4 +369,4 @@ "origin": [0, 0, 0], "children": [16, 17, 18, 19] }, 20, 21, 22] -} \ No newline at end of file +} diff --git a/src/main/resources/assets/rocks/models/block/starfish_pink.json b/src/main/resources/assets/rocks/models/block/starfish_pink.json old mode 100644 new mode 100755 index d5e0669..c681edb --- a/src/main/resources/assets/rocks/models/block/starfish_pink.json +++ b/src/main/resources/assets/rocks/models/block/starfish_pink.json @@ -1,9 +1,10 @@ { - "credit": "made by Motschen", + "credit": "Made with Blockbench", "textures": { "0": "rocks:block/starfish_pink", "particle": "rocks:block/starfish_pink" }, + "gui_light": "front", "elements": [ { "from": [7.5, 0, 8.5], @@ -305,6 +306,43 @@ } } ], + "display": { + "thirdperson_righthand": { + "rotation": [65, 35, 0], + "translation": [0, 2.25, 3.5], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [65, 35, 0], + "translation": [0, 2.5, 3.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [29, 0, 23], + "translation": [3.25, 3.75, 0] + }, + "firstperson_lefthand": { + "rotation": [29, 0, 23], + "translation": [6.25, 3.75, 0] + }, + "ground": { + "translation": [0.25, 3.75, 0], + "scale": [0.75, 0.75, 0.75] + }, + "gui": { + "rotation": [90, 35, 0], + "translation": [0.25, -1.5, 0], + "scale": [1.5, 1.5, 1.5] + }, + "head": { + "translation": [-0.25, 14.25, 0.75] + }, + "fixed": { + "rotation": [-90, 0, 0], + "translation": [-0.25, 1.25, -12], + "scale": [1.5, 1.5, 1.5] + } + }, "groups": [ { "name": "side1", @@ -331,4 +369,4 @@ "origin": [0, 0, 0], "children": [16, 17, 18, 19] }, 20, 21, 22] -} \ No newline at end of file +} diff --git a/src/main/resources/assets/rocks/models/block/starfish_red.json b/src/main/resources/assets/rocks/models/block/starfish_red.json old mode 100644 new mode 100755 index 0099c1d..fc028bc --- a/src/main/resources/assets/rocks/models/block/starfish_red.json +++ b/src/main/resources/assets/rocks/models/block/starfish_red.json @@ -1,9 +1,10 @@ { - "credit": "made by Motschen", + "credit": "Made with Blockbench", "textures": { "0": "rocks:block/starfish_red", "particle": "rocks:block/starfish_red" }, + "gui_light": "front", "elements": [ { "from": [9.5, 0, 6.5], @@ -305,6 +306,43 @@ } } ], + "display": { + "thirdperson_righthand": { + "rotation": [65, 35, 0], + "translation": [0, 2.25, 3.5], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [65, 35, 0], + "translation": [1.5, 2.5, 3.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [29, 0, 23], + "translation": [3.25, 3.75, 0] + }, + "firstperson_lefthand": { + "rotation": [29, 0, 23], + "translation": [6.25, 3.75, 0] + }, + "ground": { + "translation": [-1.75, 3.75, 1.5], + "scale": [0.75, 0.75, 0.75] + }, + "gui": { + "rotation": [90, 35, 0], + "translation": [0, -5.75, 0], + "scale": [1.5, 1.5, 1.5] + }, + "head": { + "translation": [-2, 14.25, 3] + }, + "fixed": { + "rotation": [-90, 0, 0], + "translation": [-2.75, 3.5, -12], + "scale": [1.5, 1.5, 1.5] + } + }, "groups": [ { "name": "side1", @@ -331,4 +369,4 @@ "origin": [0, 0, 0], "children": [16, 17, 18, 19] }, 20, 21, 22] -} \ No newline at end of file +} diff --git a/src/main/resources/assets/rocks/models/block/tiny_andesite_rock.json b/src/main/resources/assets/rocks/models/block/tiny_andesite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/tiny_diorite_rock.json b/src/main/resources/assets/rocks/models/block/tiny_diorite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/tiny_end_stone_rock.json b/src/main/resources/assets/rocks/models/block/tiny_end_stone_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/tiny_granite_rock.json b/src/main/resources/assets/rocks/models/block/tiny_granite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/tiny_gravel_rock.json b/src/main/resources/assets/rocks/models/block/tiny_gravel_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/tiny_netherrack_rock.json b/src/main/resources/assets/rocks/models/block/tiny_netherrack_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/tiny_red_sand_rock.json b/src/main/resources/assets/rocks/models/block/tiny_red_sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/tiny_rock.json b/src/main/resources/assets/rocks/models/block/tiny_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/tiny_sand_rock.json b/src/main/resources/assets/rocks/models/block/tiny_sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/block/tiny_soul_soil_rock.json b/src/main/resources/assets/rocks/models/block/tiny_soul_soil_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/acacia_stick.json b/src/main/resources/assets/rocks/models/item/acacia_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/andesite_rock.json b/src/main/resources/assets/rocks/models/item/andesite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/andesite_splitter.json b/src/main/resources/assets/rocks/models/item/andesite_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/birch_stick.json b/src/main/resources/assets/rocks/models/item/birch_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/cobblestone_splitter.json b/src/main/resources/assets/rocks/models/item/cobblestone_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/dark_oak_stick.json b/src/main/resources/assets/rocks/models/item/dark_oak_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/diorite_rock.json b/src/main/resources/assets/rocks/models/item/diorite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/diorite_splitter.json b/src/main/resources/assets/rocks/models/item/diorite_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/end_stone_rock.json b/src/main/resources/assets/rocks/models/item/end_stone_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/end_stone_splitter.json b/src/main/resources/assets/rocks/models/item/end_stone_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/geyser.json b/src/main/resources/assets/rocks/models/item/geyser.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/granite_rock.json b/src/main/resources/assets/rocks/models/item/granite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/granite_splitter.json b/src/main/resources/assets/rocks/models/item/granite_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/gravel_rock.json b/src/main/resources/assets/rocks/models/item/gravel_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/jungle_stick.json b/src/main/resources/assets/rocks/models/item/jungle_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/nether_geyser.json b/src/main/resources/assets/rocks/models/item/nether_geyser.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/netherrack_rock.json b/src/main/resources/assets/rocks/models/item/netherrack_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/netherrack_splitter.json b/src/main/resources/assets/rocks/models/item/netherrack_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/oak_stick.json b/src/main/resources/assets/rocks/models/item/oak_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/pinecone.json b/src/main/resources/assets/rocks/models/item/pinecone.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/red_sand_rock.json b/src/main/resources/assets/rocks/models/item/red_sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/red_sandstone_splitter.json b/src/main/resources/assets/rocks/models/item/red_sandstone_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/rock.json b/src/main/resources/assets/rocks/models/item/rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/sand_rock.json b/src/main/resources/assets/rocks/models/item/sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/sandstone_splitter.json b/src/main/resources/assets/rocks/models/item/sandstone_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/seashell.json b/src/main/resources/assets/rocks/models/item/seashell.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/soul_soil_rock.json b/src/main/resources/assets/rocks/models/item/soul_soil_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/soul_soil_splitter.json b/src/main/resources/assets/rocks/models/item/soul_soil_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/spruce_stick.json b/src/main/resources/assets/rocks/models/item/spruce_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/models/item/starfish.json b/src/main/resources/assets/rocks/models/item/starfish.json old mode 100644 new mode 100755 index 040238d..159e493 --- a/src/main/resources/assets/rocks/models/item/starfish.json +++ b/src/main/resources/assets/rocks/models/item/starfish.json @@ -1,6 +1,27 @@ { - "parent": "item/generated", + "parent": "minecraft:item/generated", "textures": { "layer0": "rocks:item/starfish" - } -} \ No newline at end of file + }, + + "overrides": [ + { + "predicate": { + "red": 1 + }, + "model": "rocks:block/starfish_red" + }, + { + "predicate": { + "pink": 1 + }, + "model": "rocks:block/starfish_pink" + }, + { + "predicate": { + "orange": 1 + }, + "model": "rocks:block/starfish_orange" + } + ] +} diff --git a/src/main/resources/assets/rocks/textures/block/seashell.png b/src/main/resources/assets/rocks/textures/block/seashell.png old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/textures/block/starfish_orange.png b/src/main/resources/assets/rocks/textures/block/starfish_orange.png old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/textures/block/starfish_pink.png b/src/main/resources/assets/rocks/textures/block/starfish_pink.png old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/textures/block/starfish_red.png b/src/main/resources/assets/rocks/textures/block/starfish_red.png old mode 100644 new mode 100755 diff --git a/src/main/resources/assets/rocks/textures/item/starfish.png b/src/main/resources/assets/rocks/textures/item/starfish.png old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/acacia_stick.json b/src/main/resources/data/rocks/loot_tables/blocks/acacia_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/andesite_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/andesite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/birch_stick.json b/src/main/resources/data/rocks/loot_tables/blocks/birch_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/dark_oak_stick.json b/src/main/resources/data/rocks/loot_tables/blocks/dark_oak_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/diorite_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/diorite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/end_stone_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/end_stone_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/granite_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/granite_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/gravel_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/gravel_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/jungle_stick.json b/src/main/resources/data/rocks/loot_tables/blocks/jungle_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/netherrack_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/netherrack_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/oak_stick.json b/src/main/resources/data/rocks/loot_tables/blocks/oak_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/pinecone.json b/src/main/resources/data/rocks/loot_tables/blocks/pinecone.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/red_sand_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/red_sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/rock.json b/src/main/resources/data/rocks/loot_tables/blocks/rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/sand_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/sand_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/seashell.json b/src/main/resources/data/rocks/loot_tables/blocks/seashell.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/soul_soil_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/soul_soil_rock.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/spruce_stick.json b/src/main/resources/data/rocks/loot_tables/blocks/spruce_stick.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/loot_tables/blocks/starfish.json b/src/main/resources/data/rocks/loot_tables/blocks/starfish.json old mode 100644 new mode 100755 index 2a6b48b..8125938 --- a/src/main/resources/data/rocks/loot_tables/blocks/starfish.json +++ b/src/main/resources/data/rocks/loot_tables/blocks/starfish.json @@ -6,6 +6,59 @@ "entries": [ { "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "rocks:starfish", + "properties": { + "variation": "red" + } + } + ], + "functions": [ + { + "function": "minecraft:set_nbt", + "tag": "{variation:red}" + } + ], + "name": "rocks:starfish" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "rocks:starfish", + "properties": { + "variation": "pink" + } + } + ], + "functions": [ + { + "function": "minecraft:set_nbt", + "tag": "{variation:pink}" + } + ], + "name": "rocks:starfish" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "rocks:starfish", + "properties": { + "variation": "orange" + } + } + ], + "functions": [ + { + "function": "minecraft:set_nbt", + "tag": "{variation:orange}" + } + ], "name": "rocks:starfish" } ], @@ -16,4 +69,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/main/resources/data/rocks/recipes/andesite_from_splitter.json b/src/main/resources/data/rocks/recipes/andesite_from_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/recipes/cobblestone_from_splitter.json b/src/main/resources/data/rocks/recipes/cobblestone_from_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/recipes/diorite_from_splitter.json b/src/main/resources/data/rocks/recipes/diorite_from_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/recipes/end_stone_from_splitter.json b/src/main/resources/data/rocks/recipes/end_stone_from_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/recipes/granite_from_splitter.json b/src/main/resources/data/rocks/recipes/granite_from_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/recipes/netherrack_from_splitter.json b/src/main/resources/data/rocks/recipes/netherrack_from_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/recipes/red_sandstone_from_splitter.json b/src/main/resources/data/rocks/recipes/red_sandstone_from_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/recipes/sandstone_from_splitter.json b/src/main/resources/data/rocks/recipes/sandstone_from_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/data/rocks/recipes/soul_soil_from_splitter.json b/src/main/resources/data/rocks/recipes/soul_soil_from_splitter.json old mode 100644 new mode 100755 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json old mode 100644 new mode 100755 index 6367768..082ce7c --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -21,9 +21,13 @@ "entrypoints": { "main": [ "eu.midnightdust.motschen.rocks.RocksMain" + ], + "client": [ + "eu.midnightdust.motschen.rocks.RocksClient" ] }, + "accessWidener" : "thisrocks.accesswidener", "mixins": [ "rocks.mixins.json" ], diff --git a/src/main/resources/rocks.mixins.json b/src/main/resources/rocks.mixins.json old mode 100644 new mode 100755 diff --git a/src/main/resources/thisrocks.accesswidener b/src/main/resources/thisrocks.accesswidener new file mode 100755 index 0000000..ccaef1d --- /dev/null +++ b/src/main/resources/thisrocks.accesswidener @@ -0,0 +1,2 @@ +accessWidener v1 named +accessible class net/minecraft/client/render/model/json/ModelElement$Deserializer \ No newline at end of file