diff --git a/src/client/java/dev/spiritstudios/hollow/datagen/ClientBlockMetatagProvider.java b/src/client/java/dev/spiritstudios/hollow/datagen/ClientBlockMetatagProvider.java index 94d86a9..6f34adc 100644 --- a/src/client/java/dev/spiritstudios/hollow/datagen/ClientBlockMetatagProvider.java +++ b/src/client/java/dev/spiritstudios/hollow/datagen/ClientBlockMetatagProvider.java @@ -29,10 +29,6 @@ protected void configure(Consumer> provider, RegistryWr ).forEach(pair -> renderLayer.put(pair.value(), BlockRenderLayer.CUTOUT_MIPPED)); -// renderLayer.put(HollowBlocks.BLUE_WILDFLOWER, BlockRenderLayer.CUTOUT); -// renderLayer.put(HollowBlocks.WHITE_WILDFLOWER, BlockRenderLayer.CUTOUT); -// renderLayer.put(HollowBlocks.PURPLE_WILDFLOWER, BlockRenderLayer.CUTOUT); -// renderLayer.put(HollowBlocks.PINK_WILDFLOWER, BlockRenderLayer.CUTOUT); renderLayer.put(HollowBlocks.PAEONIA, BlockRenderLayer.CUTOUT); renderLayer.put(HollowBlocks.POTTED_PAEONIA, BlockRenderLayer.CUTOUT); renderLayer.put(HollowBlocks.ROOTED_ORCHID, BlockRenderLayer.CUTOUT); diff --git a/src/client/java/dev/spiritstudios/hollow/datagen/HollowDatagen.java b/src/client/java/dev/spiritstudios/hollow/datagen/HollowDatagen.java index 0630c6d..2c21dd4 100644 --- a/src/client/java/dev/spiritstudios/hollow/datagen/HollowDatagen.java +++ b/src/client/java/dev/spiritstudios/hollow/datagen/HollowDatagen.java @@ -1,8 +1,6 @@ package dev.spiritstudios.hollow.datagen; -import dev.spiritstudios.hollow.datagen.tag.BiomeTagProvider; -import dev.spiritstudios.hollow.datagen.tag.BlockTagProvider; -import dev.spiritstudios.hollow.datagen.tag.EntityTypeTagProvider; +import dev.spiritstudios.hollow.registry.HollowDamageTypes; import dev.spiritstudios.hollow.worldgen.feature.HollowConfiguredFeatures; import dev.spiritstudios.hollow.worldgen.feature.HollowPlacedFeatures; import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; @@ -29,17 +27,16 @@ public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { pack.addProvider(BlockMetatagProvider::new); pack.addProvider(ItemMetatagProvider::new); - pack.addProvider(BlockTagProvider::new); - pack.addProvider(BiomeTagProvider::new); - pack.addProvider(EntityTypeTagProvider::new); + pack.addProvider(DamageTypeProvider::new); + + TagProviders.addAll(pack); } @Override public void buildRegistry(RegistryBuilder registryBuilder) { registryBuilder .addRegistry(RegistryKeys.CONFIGURED_FEATURE, HollowConfiguredFeatures::bootstrap) - .addRegistry(RegistryKeys.PLACED_FEATURE, HollowPlacedFeatures::bootstrap); + .addRegistry(RegistryKeys.PLACED_FEATURE, HollowPlacedFeatures::bootstrap) + .addRegistry(RegistryKeys.DAMAGE_TYPE, HollowDamageTypes::bootstrap); } - - } diff --git a/src/main/resources/data/hollow/damage_type/sculk_jaw.json b/src/main/generated/data/hollow/damage_type/sculk_jaw.json similarity index 100% rename from src/main/resources/data/hollow/damage_type/sculk_jaw.json rename to src/main/generated/data/hollow/damage_type/sculk_jaw.json diff --git a/src/main/resources/data/minecraft/tags/damage_type/bypasses_armor.json b/src/main/generated/data/minecraft/tags/damage_type/bypasses_armor.json similarity index 65% rename from src/main/resources/data/minecraft/tags/damage_type/bypasses_armor.json rename to src/main/generated/data/minecraft/tags/damage_type/bypasses_armor.json index cc7197a..07a313a 100644 --- a/src/main/resources/data/minecraft/tags/damage_type/bypasses_armor.json +++ b/src/main/generated/data/minecraft/tags/damage_type/bypasses_armor.json @@ -1,7 +1,5 @@ { - "replace": false, "values": [ "hollow:sculk_jaw" ] -} - +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/damage_type/no_knockback.json b/src/main/generated/data/minecraft/tags/damage_type/no_knockback.json similarity index 68% rename from src/main/resources/data/minecraft/tags/damage_type/no_knockback.json rename to src/main/generated/data/minecraft/tags/damage_type/no_knockback.json index 3aef4bf..07a313a 100644 --- a/src/main/resources/data/minecraft/tags/damage_type/no_knockback.json +++ b/src/main/generated/data/minecraft/tags/damage_type/no_knockback.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "hollow:sculk_jaw" ] diff --git a/src/main/java/dev/spiritstudios/hollow/HollowItemGroupAdditions.java b/src/main/java/dev/spiritstudios/hollow/HollowItemGroupAdditions.java index 2a81641..31fe852 100644 --- a/src/main/java/dev/spiritstudios/hollow/HollowItemGroupAdditions.java +++ b/src/main/java/dev/spiritstudios/hollow/HollowItemGroupAdditions.java @@ -28,13 +28,6 @@ public static void init() { baseToHollow.forEach(helper::addAfter); -// helper.addAfter( -// Items.PINK_PETALS, -// HollowBlocks.PINK_WILDFLOWER, -// HollowBlocks.PURPLE_WILDFLOWER, -// HollowBlocks.BLUE_WILDFLOWER, -// HollowBlocks.WHITE_WILDFLOWER -// ); helper.addAfter(Items.ALLIUM, HollowBlocks.PAEONIA); helper.addAfter(Items.BLUE_ORCHID, HollowBlocks.ROOTED_ORCHID); helper.addAfter(Items.PEONY, HollowBlocks.CAMPION); diff --git a/src/main/java/dev/spiritstudios/hollow/datagen/DamageTypeProvider.java b/src/main/java/dev/spiritstudios/hollow/datagen/DamageTypeProvider.java new file mode 100644 index 0000000..8fb39ac --- /dev/null +++ b/src/main/java/dev/spiritstudios/hollow/datagen/DamageTypeProvider.java @@ -0,0 +1,32 @@ +package dev.spiritstudios.hollow.datagen; + +import dev.spiritstudios.hollow.Hollow; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricDynamicRegistryProvider; +import net.minecraft.entity.damage.DamageType; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.RegistryWrapper; + +import java.util.concurrent.CompletableFuture; + +public class DamageTypeProvider extends FabricDynamicRegistryProvider { + public DamageTypeProvider(FabricDataOutput output, CompletableFuture registriesFuture) { + super(output, registriesFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup wrapperLookup, Entries entries) { + RegistryWrapper lookup = wrapperLookup.getOrThrow(RegistryKeys.DAMAGE_TYPE); + + lookup.streamKeys() + .filter(key -> + key.getValue().getNamespace().equals(Hollow.MODID)) + .forEach(key -> + entries.add(key, lookup.getOrThrow(key).value())); + } + + @Override + public String getName() { + return "Hollow/Damage Types"; + } +} diff --git a/src/main/java/dev/spiritstudios/hollow/datagen/TagProviders.java b/src/main/java/dev/spiritstudios/hollow/datagen/TagProviders.java new file mode 100644 index 0000000..f3058eb --- /dev/null +++ b/src/main/java/dev/spiritstudios/hollow/datagen/TagProviders.java @@ -0,0 +1,130 @@ +package dev.spiritstudios.hollow.datagen; + +import dev.spiritstudios.hollow.block.HollowLogBlock; +import dev.spiritstudios.hollow.data.HollowBiomeTags; +import dev.spiritstudios.hollow.registry.HollowBlocks; +import dev.spiritstudios.hollow.registry.HollowDamageTypes; +import dev.spiritstudios.hollow.registry.HollowEntityTypes; +import dev.spiritstudios.specter.api.core.reflect.ReflectionHelper; +import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; +import net.fabricmc.fabric.api.tag.convention.v2.ConventionalBiomeTags; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.damage.DamageType; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.RegistryWrapper; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.registry.tag.DamageTypeTags; +import net.minecraft.registry.tag.EntityTypeTags; +import net.minecraft.world.biome.Biome; + +import java.util.concurrent.CompletableFuture; + +public class TagProviders { + public static void addAll(FabricDataGenerator.Pack pack) { + pack.addProvider(TagProviders.BlockTagProvider::new); + pack.addProvider(TagProviders.BiomeTagProvider::new); + pack.addProvider(TagProviders.EntityTypeTagProvider::new); + pack.addProvider(TagProviders.DamageTypeTagProvider::new); + } + + private static class BiomeTagProvider extends FabricTagProvider { + public BiomeTagProvider(FabricDataOutput output, CompletableFuture completableFuture) { + super(output, RegistryKeys.BIOME, completableFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { + getOrCreateTagBuilder(HollowBiomeTags.HAS_CLOSER_FOG) + .forceAddTag(ConventionalBiomeTags.IS_SWAMP); + } + } + + private static class BlockTagProvider extends FabricTagProvider.BlockTagProvider { + public BlockTagProvider(FabricDataOutput output, CompletableFuture registriesFuture) { + super(output, registriesFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { + FabricTagProvider.FabricTagBuilder hollowLogs = getOrCreateTagBuilder(HollowBlocks.Tags.HOLLOW_LOGS); + FabricTagProvider.FabricTagBuilder axeMineable = getOrCreateTagBuilder(BlockTags.AXE_MINEABLE); + + ReflectionHelper.getStaticFields( + HollowBlocks.class, + HollowLogBlock.class + ).forEach(pair -> { + hollowLogs.add(pair.value()); + axeMineable.add(pair.value()); + }); + + getOrCreateTagBuilder(BlockTags.PICKAXE_MINEABLE) + .add(HollowBlocks.ECHOING_POT) + .add(HollowBlocks.STONE_CHEST) + .add(HollowBlocks.STONE_CHEST_LID) + .add(HollowBlocks.COPPER_PILLAR) + .add(HollowBlocks.WEATHERED_COPPER_PILLAR) + .add(HollowBlocks.EXPOSED_COPPER_PILLAR) + .add(HollowBlocks.OXIDIZED_COPPER_PILLAR) + .add(HollowBlocks.WAXED_COPPER_PILLAR) + .add(HollowBlocks.WAXED_WEATHERED_COPPER_PILLAR) + .add(HollowBlocks.WAXED_EXPOSED_COPPER_PILLAR) + .add(HollowBlocks.WAXED_OXIDIZED_COPPER_PILLAR); + + getOrCreateTagBuilder(BlockTags.HOE_MINEABLE) + .add(HollowBlocks.SCULK_JAW); + + getOrCreateTagBuilder(BlockTags.FLOWER_POTS) + .add(HollowBlocks.POTTED_ROOTED_ORCHID) + .add(HollowBlocks.POTTED_PAEONIA); + + getOrCreateTagBuilder(BlockTags.SMALL_FLOWERS) + .add(HollowBlocks.PAEONIA) + .add(HollowBlocks.ROOTED_ORCHID) + .add(HollowBlocks.LOTUS_LILYPAD); + + getOrCreateTagBuilder(BlockTags.FLOWERS) + .add(HollowBlocks.CAMPION); + + getOrCreateTagBuilder(HollowBlocks.Tags.POLYPORE_PLACEABLE_ON) + .forceAddTag(BlockTags.LOGS) + .addTag(HollowBlocks.Tags.HOLLOW_LOGS); + } + } + + private static class EntityTypeTagProvider extends FabricTagProvider.EntityTypeTagProvider { + public EntityTypeTagProvider(FabricDataOutput output, CompletableFuture completableFuture) { + super(output, completableFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { + getOrCreateTagBuilder(HollowEntityTypes.Tags.POISONS_FROG) + .add(HollowEntityTypes.FIREFLY); + + getOrCreateTagBuilder(EntityTypeTags.FROG_FOOD) + .add(HollowEntityTypes.FIREFLY); + + getOrCreateTagBuilder(HollowEntityTypes.Tags.IMMUNE_TO_SCULK_JAW) + .add(EntityType.WARDEN); + } + } + + + private static class DamageTypeTagProvider extends FabricTagProvider { + public DamageTypeTagProvider(FabricDataOutput output, CompletableFuture registriesFuture) { + super(output, RegistryKeys.DAMAGE_TYPE, registriesFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { + getOrCreateTagBuilder(DamageTypeTags.BYPASSES_ARMOR) + .add(HollowDamageTypes.SCULK_JAW); + + getOrCreateTagBuilder(DamageTypeTags.NO_KNOCKBACK) + .add(HollowDamageTypes.SCULK_JAW); + } + } +} diff --git a/src/main/java/dev/spiritstudios/hollow/datagen/tag/BiomeTagProvider.java b/src/main/java/dev/spiritstudios/hollow/datagen/tag/BiomeTagProvider.java deleted file mode 100644 index 207e3d2..0000000 --- a/src/main/java/dev/spiritstudios/hollow/datagen/tag/BiomeTagProvider.java +++ /dev/null @@ -1,23 +0,0 @@ -package dev.spiritstudios.hollow.datagen.tag; - -import dev.spiritstudios.hollow.data.HollowBiomeTags; -import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; -import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; -import net.fabricmc.fabric.api.tag.convention.v2.ConventionalBiomeTags; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.RegistryWrapper; -import net.minecraft.world.biome.Biome; - -import java.util.concurrent.CompletableFuture; - -public class BiomeTagProvider extends FabricTagProvider { - public BiomeTagProvider(FabricDataOutput output, CompletableFuture completableFuture) { - super(output, RegistryKeys.BIOME, completableFuture); - } - - @Override - protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { - getOrCreateTagBuilder(HollowBiomeTags.HAS_CLOSER_FOG) - .forceAddTag(ConventionalBiomeTags.IS_SWAMP); - } -} \ No newline at end of file diff --git a/src/main/java/dev/spiritstudios/hollow/datagen/tag/BlockTagProvider.java b/src/main/java/dev/spiritstudios/hollow/datagen/tag/BlockTagProvider.java deleted file mode 100644 index 427aa3e..0000000 --- a/src/main/java/dev/spiritstudios/hollow/datagen/tag/BlockTagProvider.java +++ /dev/null @@ -1,64 +0,0 @@ -package dev.spiritstudios.hollow.datagen.tag; - -import dev.spiritstudios.hollow.block.HollowLogBlock; -import dev.spiritstudios.hollow.registry.HollowBlocks; -import dev.spiritstudios.specter.api.core.reflect.ReflectionHelper; -import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; -import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; -import net.minecraft.block.Block; -import net.minecraft.registry.RegistryWrapper; -import net.minecraft.registry.tag.BlockTags; - -import java.util.concurrent.CompletableFuture; - -public class BlockTagProvider extends FabricTagProvider.BlockTagProvider { - public BlockTagProvider(FabricDataOutput output, CompletableFuture registriesFuture) { - super(output, registriesFuture); - } - - @Override - protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { - FabricTagProvider.FabricTagBuilder hollowLogs = getOrCreateTagBuilder(HollowBlocks.Tags.HOLLOW_LOGS); - FabricTagProvider.FabricTagBuilder axeMineable = getOrCreateTagBuilder(BlockTags.AXE_MINEABLE); - - ReflectionHelper.getStaticFields( - HollowBlocks.class, - HollowLogBlock.class - ).forEach(pair -> { - hollowLogs.add(pair.value()); - axeMineable.add(pair.value()); - }); - - getOrCreateTagBuilder(BlockTags.PICKAXE_MINEABLE) - .add(HollowBlocks.ECHOING_POT) - .add(HollowBlocks.STONE_CHEST) - .add(HollowBlocks.STONE_CHEST_LID) - .add(HollowBlocks.COPPER_PILLAR) - .add(HollowBlocks.WEATHERED_COPPER_PILLAR) - .add(HollowBlocks.EXPOSED_COPPER_PILLAR) - .add(HollowBlocks.OXIDIZED_COPPER_PILLAR) - .add(HollowBlocks.WAXED_COPPER_PILLAR) - .add(HollowBlocks.WAXED_WEATHERED_COPPER_PILLAR) - .add(HollowBlocks.WAXED_EXPOSED_COPPER_PILLAR) - .add(HollowBlocks.WAXED_OXIDIZED_COPPER_PILLAR); - - getOrCreateTagBuilder(BlockTags.HOE_MINEABLE) - .add(HollowBlocks.SCULK_JAW); - - getOrCreateTagBuilder(BlockTags.FLOWER_POTS) - .add(HollowBlocks.POTTED_ROOTED_ORCHID) - .add(HollowBlocks.POTTED_PAEONIA); - - getOrCreateTagBuilder(BlockTags.SMALL_FLOWERS) - .add(HollowBlocks.PAEONIA) - .add(HollowBlocks.ROOTED_ORCHID) - .add(HollowBlocks.LOTUS_LILYPAD); - - getOrCreateTagBuilder(BlockTags.FLOWERS) - .add(HollowBlocks.CAMPION); - - getOrCreateTagBuilder(HollowBlocks.Tags.POLYPORE_PLACEABLE_ON) - .forceAddTag(BlockTags.LOGS) - .addTag(HollowBlocks.Tags.HOLLOW_LOGS); - } -} diff --git a/src/main/java/dev/spiritstudios/hollow/datagen/tag/EntityTypeTagProvider.java b/src/main/java/dev/spiritstudios/hollow/datagen/tag/EntityTypeTagProvider.java deleted file mode 100644 index d0f4d5c..0000000 --- a/src/main/java/dev/spiritstudios/hollow/datagen/tag/EntityTypeTagProvider.java +++ /dev/null @@ -1,29 +0,0 @@ -package dev.spiritstudios.hollow.datagen.tag; - -import dev.spiritstudios.hollow.registry.HollowEntityTypes; -import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; -import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; -import net.minecraft.entity.EntityType; -import net.minecraft.registry.RegistryWrapper; -import net.minecraft.registry.tag.EntityTypeTags; - -import java.util.concurrent.CompletableFuture; - -public class EntityTypeTagProvider extends FabricTagProvider.EntityTypeTagProvider { - public EntityTypeTagProvider(FabricDataOutput output, CompletableFuture completableFuture) { - super(output, completableFuture); - } - - @Override - protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { - getOrCreateTagBuilder(HollowEntityTypes.Tags.POISONS_FROG) - .add(HollowEntityTypes.FIREFLY); - - getOrCreateTagBuilder(EntityTypeTags.FROG_FOOD) - .add(HollowEntityTypes.FIREFLY); - - getOrCreateTagBuilder(HollowEntityTypes.Tags.IMMUNE_TO_SCULK_JAW) - .add(EntityType.WARDEN); - - } -} diff --git a/src/main/java/dev/spiritstudios/hollow/registry/HollowDamageTypes.java b/src/main/java/dev/spiritstudios/hollow/registry/HollowDamageTypes.java index afa7d30..9a78439 100644 --- a/src/main/java/dev/spiritstudios/hollow/registry/HollowDamageTypes.java +++ b/src/main/java/dev/spiritstudios/hollow/registry/HollowDamageTypes.java @@ -1,10 +1,23 @@ package dev.spiritstudios.hollow.registry; import dev.spiritstudios.hollow.Hollow; +import net.minecraft.entity.damage.DamageScaling; import net.minecraft.entity.damage.DamageType; +import net.minecraft.registry.Registerable; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; public final class HollowDamageTypes { public static final RegistryKey SCULK_JAW = RegistryKey.of(RegistryKeys.DAMAGE_TYPE, Hollow.id("sculk_jaw")); + + public static void bootstrap(Registerable registerable) { + registerable.register( + SCULK_JAW, + new DamageType( + "sculk_jaw", + DamageScaling.ALWAYS, + 0.1F + ) + ); + } }