Skip to content

Commit

Permalink
chore: datagen damagetypes and their tags
Browse files Browse the repository at this point in the history
  • Loading branch information
CallMeEchoCodes committed Jan 20, 2025
1 parent ff261be commit d3456d8
Show file tree
Hide file tree
Showing 12 changed files with 182 additions and 140 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,6 @@ protected void configure(Consumer<MetatagBuilder<Block, ?>> 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);
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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);
}


}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
{
"replace": false,
"values": [
"hollow:sculk_jaw"
]
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
{
"replace": false,
"values": [
"hollow:sculk_jaw"
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
@@ -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<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture);
}

@Override
protected void configure(RegistryWrapper.WrapperLookup wrapperLookup, Entries entries) {
RegistryWrapper<DamageType> 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";
}
}
130 changes: 130 additions & 0 deletions src/main/java/dev/spiritstudios/hollow/datagen/TagProviders.java
Original file line number Diff line number Diff line change
@@ -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<Biome> {
public BiomeTagProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> 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<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture);
}

@Override
protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
FabricTagProvider<Block>.FabricTagBuilder hollowLogs = getOrCreateTagBuilder(HollowBlocks.Tags.HOLLOW_LOGS);
FabricTagProvider<Block>.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<RegistryWrapper.WrapperLookup> 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<DamageType> {
public DamageTypeTagProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> 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);
}
}
}

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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<DamageType> SCULK_JAW = RegistryKey.of(RegistryKeys.DAMAGE_TYPE, Hollow.id("sculk_jaw"));

public static void bootstrap(Registerable<DamageType> registerable) {
registerable.register(
SCULK_JAW,
new DamageType(
"sculk_jaw",
DamageScaling.ALWAYS,
0.1F
)
);
}
}

0 comments on commit d3456d8

Please sign in to comment.