convert 1.20.5-21.1 module to kotlin as much as possible

This commit is contained in:
nelle 2024-12-22 02:19:07 -07:00
parent 157feb8e05
commit d0f31746dd
6 changed files with 277 additions and 230 deletions

View file

@ -1,30 +1,25 @@
package observer.nelle.roses.datagen; package observer.nelle.roses.datagen
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider
import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.RegistryWrapper
import net.minecraft.registry.tag.BlockTags; import net.minecraft.registry.tag.BlockTags
import observer.nelle.roses.RosesBlocks; import observer.nelle.roses.RosesBlocks.cyanRoseBush
import observer.nelle.roses.RosesBlocks.cyanRoseFlower
import observer.nelle.roses.RosesBlocks.pottedCyan
import observer.nelle.roses.RosesBlocks.pottedRose
import observer.nelle.roses.RosesBlocks.roseFlower
import java.util.concurrent.CompletableFuture
import java.util.concurrent.CompletableFuture; class RosesBlockTagProvider(
output: FabricDataOutput,
registriesFuture: CompletableFuture<RegistryWrapper.WrapperLookup?>?,
) : FabricTagProvider.BlockTagProvider(output, registriesFuture) {
override fun configure(wrapperLookup: RegistryWrapper.WrapperLookup) {
getOrCreateTagBuilder(BlockTags.TALL_FLOWERS).add(cyanRoseBush)
public class RosesBlockTagProvider extends FabricTagProvider.BlockTagProvider { getOrCreateTagBuilder(BlockTags.SMALL_FLOWERS).add(roseFlower).add(cyanRoseFlower)
public RosesBlockTagProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture);
}
@Override getOrCreateTagBuilder(BlockTags.FLOWER_POTS).add(pottedRose).add(pottedCyan)
protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
getOrCreateTagBuilder(BlockTags.TALL_FLOWERS)
.add(RosesBlocks.INSTANCE.getCyanRoseBush())
;
getOrCreateTagBuilder(BlockTags.SMALL_FLOWERS)
.add(RosesBlocks.INSTANCE.getRoseFlower())
.add(RosesBlocks.INSTANCE.getCyanRoseFlower())
;
getOrCreateTagBuilder(BlockTags.FLOWER_POTS)
.add(RosesBlocks.INSTANCE.getPottedRose())
.add(RosesBlocks.INSTANCE.getPottedCyan())
;
} }
} }

View file

@ -1,43 +1,58 @@
package observer.nelle.roses.datagen; package observer.nelle.roses.datagen
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricBlockLootTableProvider; import net.fabricmc.fabric.api.datagen.v1.provider.FabricBlockLootTableProvider
import net.minecraft.block.Block; import net.minecraft.block.Block
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks
import net.minecraft.enchantment.Enchantments; import net.minecraft.enchantment.Enchantments
import net.minecraft.item.Item; import net.minecraft.loot.LootTable
import net.minecraft.loot.LootTable; import net.minecraft.loot.entry.ItemEntry
import net.minecraft.loot.entry.ItemEntry; import net.minecraft.loot.function.ApplyBonusLootFunction
import net.minecraft.loot.function.ApplyBonusLootFunction; import net.minecraft.loot.function.SetCountLootFunction
import net.minecraft.loot.function.SetCountLootFunction; import net.minecraft.loot.provider.number.UniformLootNumberProvider
import net.minecraft.loot.provider.number.UniformLootNumberProvider; import net.minecraft.registry.RegistryWrapper
import net.minecraft.registry.RegistryWrapper; import observer.nelle.roses.RosesBlocks.cyanRoseBush
import observer.nelle.roses.RosesBlocks; import observer.nelle.roses.RosesBlocks.cyanRoseFlower
import observer.nelle.roses.RosesBlocks.pottedCyan
import observer.nelle.roses.RosesBlocks.pottedRose
import observer.nelle.roses.RosesBlocks.roseFlower
import java.util.concurrent.CompletableFuture
import java.util.Objects; class RosesLootTableProvider(
import java.util.concurrent.CompletableFuture; dataOutput: FabricDataOutput?,
registryLookup: CompletableFuture<RegistryWrapper.WrapperLookup?>?,
) : FabricBlockLootTableProvider(dataOutput, registryLookup) {
override fun generate() {
addDrop(roseFlower)
addDrop(cyanRoseFlower)
public class RosesLootTableProvider extends FabricBlockLootTableProvider { addPottedPlantDrops(pottedRose)
public RosesLootTableProvider(FabricDataOutput dataOutput, CompletableFuture<RegistryWrapper.WrapperLookup> registryLookup) { addPottedPlantDrops(pottedCyan)
super(dataOutput, registryLookup);
addDrop(
Blocks.ROSE_BUSH,
roseBushDrops(Blocks.ROSE_BUSH, roseFlower, 2.0f, 5.0f),
)
addDrop(
cyanRoseBush,
roseBushDrops(cyanRoseBush!!, cyanRoseFlower, 2.0f, 5.0f),
)
} }
@Override private fun roseBushDrops(
public void generate() { input: Block,
addDrop(RosesBlocks.INSTANCE.getRoseFlower()); output: Block?,
addDrop(RosesBlocks.INSTANCE.getCyanRoseFlower()); min: Float,
max: Float,
addPottedPlantDrops(RosesBlocks.INSTANCE.getPottedRose()); ): LootTable.Builder =
addPottedPlantDrops(RosesBlocks.INSTANCE.getPottedCyan()); dropsWithShears(
input,
addDrop(Blocks.ROSE_BUSH, roseBushDrops(Blocks.ROSE_BUSH, Objects.requireNonNull(RosesBlocks.INSTANCE.getRoseFlower()).asItem(), 2.0F, 5.0F)); this.applyExplosionDecay(
addDrop(RosesBlocks.INSTANCE.getCyanRoseBush(), roseBushDrops(RosesBlocks.INSTANCE.getCyanRoseBush(), Objects.requireNonNull(RosesBlocks.INSTANCE.getCyanRoseFlower()).asItem(), 2.0F, 5.0F)); input,
} ItemEntry
.builder(output)
public LootTable.Builder roseBushDrops(Block input, Item output, Float min, Float max) {
return dropsWithShears(input, this
.applyExplosionDecay(input, ItemEntry.builder(output)
.apply(SetCountLootFunction.builder(UniformLootNumberProvider.create(min, max))) .apply(SetCountLootFunction.builder(UniformLootNumberProvider.create(min, max)))
.apply(ApplyBonusLootFunction.oreDrops(Enchantments.FORTUNE)))); .apply(ApplyBonusLootFunction.oreDrops(Enchantments.FORTUNE)),
} ),
)
} }

View file

@ -1,27 +1,47 @@
package observer.nelle.roses.datagen; package observer.nelle.roses.datagen
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider
import net.minecraft.data.server.recipe.RecipeExporter; import net.minecraft.data.server.recipe.RecipeExporter
import net.minecraft.item.Items; import net.minecraft.item.Items
import net.minecraft.recipe.book.RecipeCategory; import net.minecraft.recipe.book.RecipeCategory
import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.RegistryWrapper
import observer.nelle.roses.RosesBlocks; import observer.nelle.roses.RosesBlocks.cyanRoseBush
import observer.nelle.roses.RosesBlocks.cyanRoseFlower
import observer.nelle.roses.RosesBlocks.roseFlower
import java.util.concurrent.CompletableFuture
import java.util.Objects; class RosesRecipeProvider(
import java.util.concurrent.CompletableFuture; output: FabricDataOutput?,
registriesFuture: CompletableFuture<RegistryWrapper.WrapperLookup?>?,
) : FabricRecipeProvider(output, registriesFuture) {
override fun generate(recipeExporter: RecipeExporter) {
offerShapelessRecipe(
recipeExporter,
Items.RED_DYE,
roseFlower,
"dye",
2,
)
offerShapelessRecipe(
recipeExporter,
Items.CYAN_DYE,
cyanRoseFlower,
"dye",
2,
)
public class RosesRecipeProvider extends FabricRecipeProvider { offer2x2CompactingRecipe(
public RosesRecipeProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) { recipeExporter,
super(output, registriesFuture); RecipeCategory.DECORATIONS,
} Items.ROSE_BUSH,
roseFlower,
@Override )
public void generate(RecipeExporter recipeExporter) { offer2x2CompactingRecipe(
offerShapelessRecipe(recipeExporter, Items.RED_DYE, Objects.requireNonNull(RosesBlocks.INSTANCE.getRoseFlower()), "dye", 2); recipeExporter,
offerShapelessRecipe(recipeExporter, Items.CYAN_DYE, Objects.requireNonNull(RosesBlocks.INSTANCE.getCyanRoseFlower()), "dye", 2); RecipeCategory.DECORATIONS,
cyanRoseBush,
offer2x2CompactingRecipe(recipeExporter, RecipeCategory.DECORATIONS, Items.ROSE_BUSH, RosesBlocks.INSTANCE.getRoseFlower()); cyanRoseFlower,
offer2x2CompactingRecipe(recipeExporter, RecipeCategory.DECORATIONS, Objects.requireNonNull(RosesBlocks.INSTANCE.getCyanRoseBush()).asItem(), RosesBlocks.INSTANCE.getCyanRoseFlower()); )
} }
} }

View file

@ -1,25 +1,22 @@
package observer.nelle.roses.datagen; package observer.nelle.roses.datagen
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricDynamicRegistryProvider; import net.fabricmc.fabric.api.datagen.v1.provider.FabricDynamicRegistryProvider
import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryKeys
import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.RegistryWrapper
import java.util.concurrent.CompletableFuture
import java.util.concurrent.CompletableFuture; class RosesRegistryGenerator(
output: FabricDataOutput?,
public class RosesRegistryGenerator extends FabricDynamicRegistryProvider { registriesFuture: CompletableFuture<RegistryWrapper.WrapperLookup?>?,
public RosesRegistryGenerator(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) { ) : FabricDynamicRegistryProvider(output, registriesFuture) {
super(output, registriesFuture); override fun configure(
registries: RegistryWrapper.WrapperLookup,
entries: Entries,
) {
entries.addAll(registries.getWrapperOrThrow(RegistryKeys.CONFIGURED_FEATURE))
entries.addAll(registries.getWrapperOrThrow(RegistryKeys.PLACED_FEATURE))
} }
@Override override fun getName(): String = ""
protected void configure(RegistryWrapper.WrapperLookup registries, Entries entries) {
entries.addAll(registries.getWrapperOrThrow(RegistryKeys.CONFIGURED_FEATURE));
entries.addAll(registries.getWrapperOrThrow(RegistryKeys.PLACED_FEATURE));
}
@Override
public String getName() {
return "";
}
} }

View file

@ -1,21 +1,24 @@
package observer.nelle.roses.world.gen; package observer.nelle.roses.world.gen
import net.fabricmc.fabric.api.biome.v1.BiomeModifications; import net.fabricmc.fabric.api.biome.v1.BiomeModifications
import net.fabricmc.fabric.api.biome.v1.BiomeSelectors; import net.fabricmc.fabric.api.biome.v1.BiomeSelectors
import net.minecraft.world.biome.BiomeKeys; import net.minecraft.world.biome.BiomeKeys
import net.minecraft.world.gen.GenerationStep; import net.minecraft.world.gen.GenerationStep
import observer.nelle.roses.world.RosesPlacedFeatures; import observer.nelle.roses.world.RosesPlacedFeatures
public class RosesVegetationGeneration { object RosesVegetationGeneration {
public static void generateVegetation() { fun generateVegetation() {
BiomeModifications.addFeature( BiomeModifications.addFeature(
BiomeSelectors.includeByKey( BiomeSelectors.includeByKey(
BiomeKeys.FOREST, BiomeKeys.FOREST,
BiomeKeys.FLOWER_FOREST, BiomeKeys.FLOWER_FOREST,
BiomeKeys.BIRCH_FOREST, BiomeKeys.BIRCH_FOREST,
BiomeKeys.OLD_GROWTH_BIRCH_FOREST, BiomeKeys.OLD_GROWTH_BIRCH_FOREST,
BiomeKeys.DARK_FOREST), BiomeKeys.DARK_FOREST,
GenerationStep.Feature.VEGETAL_DECORATION, RosesPlacedFeatures.cyanRoseBushPlacedKey); ),
GenerationStep.Feature.VEGETAL_DECORATION,
RosesPlacedFeatures.cyanRoseBushPlacedKey,
)
// regular // regular
BiomeModifications.addFeature( BiomeModifications.addFeature(
@ -37,10 +40,14 @@ public class RosesVegetationGeneration {
BiomeKeys.WINDSWEPT_FOREST, BiomeKeys.WINDSWEPT_FOREST,
BiomeKeys.WINDSWEPT_GRAVELLY_HILLS, BiomeKeys.WINDSWEPT_GRAVELLY_HILLS,
BiomeKeys.RIVER, BiomeKeys.RIVER,
BiomeKeys.FROZEN_RIVER), BiomeKeys.FROZEN_RIVER,
GenerationStep.Feature.VEGETAL_DECORATION, RosesPlacedFeatures.cyanRosePlacedKey); ),
GenerationStep.Feature.VEGETAL_DECORATION,
RosesPlacedFeatures.cyanRosePlacedKey,
)
BiomeModifications.addFeature(BiomeSelectors.includeByKey( BiomeModifications.addFeature(
BiomeSelectors.includeByKey(
BiomeKeys.PLAINS, BiomeKeys.PLAINS,
BiomeKeys.SUNFLOWER_PLAINS, BiomeKeys.SUNFLOWER_PLAINS,
BiomeKeys.MEADOW, // https://minecraft.wiki/w/Flower#Flower_gradients BiomeKeys.MEADOW, // https://minecraft.wiki/w/Flower#Flower_gradients
@ -58,8 +65,11 @@ public class RosesVegetationGeneration {
BiomeKeys.WINDSWEPT_FOREST, BiomeKeys.WINDSWEPT_FOREST,
BiomeKeys.WINDSWEPT_GRAVELLY_HILLS, BiomeKeys.WINDSWEPT_GRAVELLY_HILLS,
BiomeKeys.RIVER, BiomeKeys.RIVER,
BiomeKeys.FROZEN_RIVER), BiomeKeys.FROZEN_RIVER,
GenerationStep.Feature.VEGETAL_DECORATION, RosesPlacedFeatures.rosePlacedKey); ),
GenerationStep.Feature.VEGETAL_DECORATION,
RosesPlacedFeatures.rosePlacedKey,
)
// rarer // rarer
BiomeModifications.addFeature( BiomeModifications.addFeature(
@ -79,11 +89,14 @@ public class RosesVegetationGeneration {
BiomeKeys.DESERT, BiomeKeys.DESERT,
BiomeKeys.ICE_SPIKES, BiomeKeys.ICE_SPIKES,
BiomeKeys.DRIPSTONE_CAVES, BiomeKeys.DRIPSTONE_CAVES,
BiomeKeys.DEEP_DARK BiomeKeys.DEEP_DARK,
), ),
GenerationStep.Feature.VEGETAL_DECORATION, RosesPlacedFeatures.cyanRoseRarerPlacedKey); GenerationStep.Feature.VEGETAL_DECORATION,
RosesPlacedFeatures.cyanRoseRarerPlacedKey,
)
BiomeModifications.addFeature(BiomeSelectors.includeByKey( BiomeModifications.addFeature(
BiomeSelectors.includeByKey(
BiomeKeys.BEACH, BiomeKeys.BEACH,
BiomeKeys.SNOWY_BEACH, BiomeKeys.SNOWY_BEACH,
BiomeKeys.STONY_SHORE, BiomeKeys.STONY_SHORE,
@ -99,9 +112,11 @@ public class RosesVegetationGeneration {
BiomeKeys.DESERT, BiomeKeys.DESERT,
BiomeKeys.ICE_SPIKES, BiomeKeys.ICE_SPIKES,
BiomeKeys.DRIPSTONE_CAVES, BiomeKeys.DRIPSTONE_CAVES,
BiomeKeys.DEEP_DARK BiomeKeys.DEEP_DARK,
), ),
GenerationStep.Feature.VEGETAL_DECORATION, RosesPlacedFeatures.roseRarerPlacedKey); GenerationStep.Feature.VEGETAL_DECORATION,
RosesPlacedFeatures.roseRarerPlacedKey,
)
// more common // more common
BiomeModifications.addFeature( BiomeModifications.addFeature(
@ -111,18 +126,23 @@ public class RosesVegetationGeneration {
BiomeKeys.SPARSE_JUNGLE, BiomeKeys.SPARSE_JUNGLE,
BiomeKeys.SAVANNA, BiomeKeys.SAVANNA,
BiomeKeys.SAVANNA_PLATEAU, BiomeKeys.SAVANNA_PLATEAU,
BiomeKeys.WINDSWEPT_SAVANNA BiomeKeys.WINDSWEPT_SAVANNA,
), ),
GenerationStep.Feature.VEGETAL_DECORATION, RosesPlacedFeatures.cyanRoseCommonPlacedKey); GenerationStep.Feature.VEGETAL_DECORATION,
RosesPlacedFeatures.cyanRoseCommonPlacedKey,
)
BiomeModifications.addFeature(BiomeSelectors.includeByKey( BiomeModifications.addFeature(
BiomeSelectors.includeByKey(
BiomeKeys.JUNGLE, BiomeKeys.JUNGLE,
BiomeKeys.BAMBOO_JUNGLE, BiomeKeys.BAMBOO_JUNGLE,
BiomeKeys.SPARSE_JUNGLE, BiomeKeys.SPARSE_JUNGLE,
BiomeKeys.SAVANNA, BiomeKeys.SAVANNA,
BiomeKeys.SAVANNA_PLATEAU, BiomeKeys.SAVANNA_PLATEAU,
BiomeKeys.WINDSWEPT_SAVANNA BiomeKeys.WINDSWEPT_SAVANNA,
), ),
GenerationStep.Feature.VEGETAL_DECORATION, RosesPlacedFeatures.roseCommonPlacedKey); GenerationStep.Feature.VEGETAL_DECORATION,
RosesPlacedFeatures.roseCommonPlacedKey,
)
} }
} }

View file

@ -1,7 +1,7 @@
package observer.nelle.roses.world.gen; package observer.nelle.roses.world.gen
public class RosesWorldGeneration { object RosesWorldGeneration {
public static void generateRosesWorldGen() { fun generateRosesWorldGen() {
RosesVegetationGeneration.generateVegetation(); RosesVegetationGeneration.generateVegetation()
} }
} }