From 1fe24edc9695cb79b59eb4404a0494201391aa7d Mon Sep 17 00:00:00 2001 From: Agatha Rose Date: Fri, 26 Mar 2021 03:55:49 +0200 Subject: [PATCH] Restructure mod --- .../dev/agatharose/asbestos/Asbestos.java | 89 +-------------- .../agatharose/asbestos/AsbestosRegistry.java | 102 ++++++++++++++++++ .../agatharose/asbestos/item/ScraperItem.java | 4 +- 3 files changed, 107 insertions(+), 88 deletions(-) create mode 100644 src/main/java/dev/agatharose/asbestos/AsbestosRegistry.java diff --git a/src/main/java/dev/agatharose/asbestos/Asbestos.java b/src/main/java/dev/agatharose/asbestos/Asbestos.java index 9f73a1b..d75ab6f 100644 --- a/src/main/java/dev/agatharose/asbestos/Asbestos.java +++ b/src/main/java/dev/agatharose/asbestos/Asbestos.java @@ -1,10 +1,10 @@ package dev.agatharose.asbestos; +import static dev.agatharose.asbestos.AsbestosRegistry.*; + import dev.agatharose.asbestos.component.MesotheliomaComponent; import dev.agatharose.asbestos.component.PlayerMesotheliomaComponent; import dev.agatharose.asbestos.config.AsbestosConfig; -import dev.agatharose.asbestos.item.ScraperItem; -import dev.agatharose.asbestos.item.ScraperToolMaterial; import dev.agatharose.asbestos.scheduler.MesotheliomaSched; import dev.onyxstudios.cca.api.v3.component.ComponentKey; import dev.onyxstudios.cca.api.v3.component.ComponentRegistryV3; @@ -14,111 +14,28 @@ import me.shedaniel.autoconfig.AutoConfig; import me.shedaniel.autoconfig.serializer.Toml4jConfigSerializer; import nerdhub.cardinal.components.api.util.RespawnCopyStrategy; import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.biome.v1.BiomeModifications; -import net.fabricmc.fabric.api.biome.v1.BiomeSelectors; -import net.fabricmc.fabric.api.item.v1.FabricItemSettings; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.block.Block; -import net.minecraft.block.Material; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.item.BlockItem; -import net.minecraft.item.FoodComponent; -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ToolItem; -import net.minecraft.sound.BlockSoundGroup; import net.minecraft.util.Identifier; -import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.RegistryKey; -import net.minecraft.world.gen.decorator.Decorator; -import net.minecraft.world.gen.decorator.RangeDecoratorConfig; -import net.minecraft.world.gen.feature.ConfiguredFeature; -import net.minecraft.world.gen.feature.Feature; -import net.minecraft.world.gen.feature.OreFeatureConfig; -import net.minecraft.world.gen.GenerationStep; -@SuppressWarnings("deprecation") public class Asbestos implements ModInitializer, EntityComponentInitializer { // mesothelioma player component key public static final ComponentKey MESOTHELIOMA = ComponentRegistryV3.INSTANCE .getOrCreate(new Identifier("asbestos:mesothelioma"), MesotheliomaComponent.class); - // block/item/effect definitions - public static final Item ASBESTOS_FIBERS = new Item(new FabricItemSettings().group(ItemGroup.MATERIALS).fireproof() - .food(new FoodComponent.Builder().alwaysEdible() - .statusEffect(new StatusEffectInstance(StatusEffects.WITHER, 30 * 20, 4, false, false), 1.0f) - .build())); - - public static final CarcinogenicBlock ASBESTOS_BLOCK = new CarcinogenicBlock( - FabricBlockSettings.of(Material.WOOL).hardness(1.0f).sounds(BlockSoundGroup.WOOL), 40); - - public static final CarcinogenicBlock SERPENTINITE_BLOCK = new CarcinogenicBlock( - FabricBlockSettings.of(Material.STONE).hardness(3.0f).breakByTool(FabricToolTags.PICKAXES).requiresTool(), - 20); - - public static final CarcinogenicBlock POPCORN_CEILING_BLOCK = new CarcinogenicBlock(FabricBlockSettings - .of(Material.WOOD).hardness(2.0f).breakByTool(FabricToolTags.AXES).sounds(BlockSoundGroup.WOOD), 20); - - public static final CarcinogenicBlock ASBESTOS_TILE_BLOCK = new CarcinogenicBlock( - FabricBlockSettings.of(Material.STONE).hardness(3.0f).sounds(BlockSoundGroup.NETHER_BRICKS), 20); - - public static ToolItem IRON_SCRAPER = new ScraperItem(ScraperToolMaterial.INSTANCE, 0.0f, -3.0f, - new Item.Settings().group(ItemGroup.TOOLS)); - public static final StatusEffect MESOTHELIOMA_EFFECT = new MesotheliomaStatusEffect(); public static final DamageSource MESOTHELIOMA_DAMAGE = new MesotheliomaDamageSource(); - private static ConfiguredFeature SERPENTINITE_OVERWORLD = Feature.ORE - .configure(new OreFeatureConfig(OreFeatureConfig.Rules.BASE_STONE_OVERWORLD, - SERPENTINITE_BLOCK.getDefaultState(), 5)) - .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(0, 0, 32))).spreadHorizontally().repeat(10); - // blocks that will contribute to mesothelioma levels without being broken public static Block[] HARMFUL_PASSIVE_BLOCKS = { ASBESTOS_BLOCK }; @Override public void onInitialize() { - // asbestos fibers item - Registry.register(Registry.ITEM, new Identifier("asbestos", "asbestos_fibers"), ASBESTOS_FIBERS); - - // asbestos block - Registry.register(Registry.BLOCK, new Identifier("asbestos", "asbestos_block"), ASBESTOS_BLOCK); - Registry.register(Registry.ITEM, new Identifier("asbestos", "asbestos_block"), - new BlockItem(ASBESTOS_BLOCK, new Item.Settings().group(ItemGroup.BUILDING_BLOCKS).fireproof())); - - // serpentinite block - Registry.register(Registry.BLOCK, new Identifier("asbestos", "serpentinite_block"), SERPENTINITE_BLOCK); - Registry.register(Registry.ITEM, new Identifier("asbestos", "serpentinite_block"), - new BlockItem(SERPENTINITE_BLOCK, new Item.Settings().group(ItemGroup.BUILDING_BLOCKS))); - - // popcorn ceiling block - Registry.register(Registry.BLOCK, new Identifier("asbestos", "popcorn_ceiling_block"), POPCORN_CEILING_BLOCK); - Registry.register(Registry.ITEM, new Identifier("asbestos", "popcorn_ceiling_block"), - new BlockItem(POPCORN_CEILING_BLOCK, new Item.Settings().group(ItemGroup.BUILDING_BLOCKS).fireproof())); - - // asbestos tile block - Registry.register(Registry.BLOCK, new Identifier("asbestos", "asbestos_tile_block"), ASBESTOS_TILE_BLOCK); - Registry.register(Registry.ITEM, new Identifier("asbestos", "asbestos_tile_block"), - new BlockItem(ASBESTOS_TILE_BLOCK, new Item.Settings().group(ItemGroup.BUILDING_BLOCKS))); - - // serpentinite worldgen - RegistryKey> serpentiniteOverworld = RegistryKey - .of(Registry.CONFIGURED_FEATURE_WORLDGEN, new Identifier("asbestos", "serpentinite_overworld")); - - Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, serpentiniteOverworld.getValue(), - SERPENTINITE_OVERWORLD); - BiomeModifications.addFeature(BiomeSelectors.foundInOverworld(), GenerationStep.Feature.UNDERGROUND_ORES, - serpentiniteOverworld); - - // scraper tool - Registry.register(Registry.ITEM, new Identifier("asbestos", "iron_scraper"), IRON_SCRAPER); + AsbestosRegistry.register(); // mesothelioma status effect Registry.register(Registry.STATUS_EFFECT, new Identifier("asbestos", "mesothelioma"), MESOTHELIOMA_EFFECT); diff --git a/src/main/java/dev/agatharose/asbestos/AsbestosRegistry.java b/src/main/java/dev/agatharose/asbestos/AsbestosRegistry.java new file mode 100644 index 0000000..640db76 --- /dev/null +++ b/src/main/java/dev/agatharose/asbestos/AsbestosRegistry.java @@ -0,0 +1,102 @@ +package dev.agatharose.asbestos; + +import dev.agatharose.asbestos.item.ScraperItem; +import dev.agatharose.asbestos.item.ScraperToolMaterial; +import net.fabricmc.fabric.api.biome.v1.BiomeModifications; +import net.fabricmc.fabric.api.biome.v1.BiomeSelectors; +import net.fabricmc.fabric.api.item.v1.FabricItemSettings; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.Material; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.BlockItem; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.Item; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ToolItem; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.BuiltinRegistries; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryKey; +import net.minecraft.world.gen.GenerationStep; +import net.minecraft.world.gen.decorator.Decorator; +import net.minecraft.world.gen.decorator.RangeDecoratorConfig; +import net.minecraft.world.gen.feature.ConfiguredFeature; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.OreFeatureConfig; + +@SuppressWarnings("deprecation") +public class AsbestosRegistry { + // block/item/effect definitions + public static final Item ASBESTOS_FIBERS = new Item(new FabricItemSettings().group(ItemGroup.MATERIALS) + .fireproof() + .food(new FoodComponent.Builder().alwaysEdible().statusEffect( + new StatusEffectInstance(StatusEffects.WITHER, 30 * 20, 4, false, false), 1.0f) + .build())); + + public static final CarcinogenicBlock ASBESTOS_BLOCK = new CarcinogenicBlock( + FabricBlockSettings.of(Material.WOOL).hardness(1.0f).sounds(BlockSoundGroup.WOOL), 40); + + public static final CarcinogenicBlock SERPENTINITE_BLOCK = new CarcinogenicBlock(FabricBlockSettings + .of(Material.STONE).hardness(3.0f).breakByTool(FabricToolTags.PICKAXES).requiresTool(), 20); + + public static final CarcinogenicBlock POPCORN_CEILING_BLOCK = new CarcinogenicBlock(FabricBlockSettings + .of(Material.WOOD).hardness(2.0f).breakByTool(FabricToolTags.AXES).sounds(BlockSoundGroup.WOOD), + 20); + + public static final CarcinogenicBlock ASBESTOS_TILE_BLOCK = new CarcinogenicBlock( + FabricBlockSettings.of(Material.STONE).hardness(3.0f).sounds(BlockSoundGroup.NETHER_BRICKS), + 20); + + public static ToolItem IRON_SCRAPER = new ScraperItem(ScraperToolMaterial.INSTANCE, 0.0f, -3.0f, + new Item.Settings().group(ItemGroup.TOOLS)); + + private static ConfiguredFeature SERPENTINITE_OVERWORLD = Feature.ORE + .configure(new OreFeatureConfig(OreFeatureConfig.Rules.BASE_STONE_OVERWORLD, + SERPENTINITE_BLOCK.getDefaultState(), 5)) + .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(0, 0, 32))).spreadHorizontally() + .repeat(10); + + public static void register() { + // asbestos fibers item + Registry.register(Registry.ITEM, new Identifier("asbestos", "asbestos_fibers"), ASBESTOS_FIBERS); + + // asbestos block + Registry.register(Registry.BLOCK, new Identifier("asbestos", "asbestos_block"), ASBESTOS_BLOCK); + Registry.register(Registry.ITEM, new Identifier("asbestos", "asbestos_block"), new BlockItem( + ASBESTOS_BLOCK, new Item.Settings().group(ItemGroup.BUILDING_BLOCKS).fireproof())); + + // serpentinite block + Registry.register(Registry.BLOCK, new Identifier("asbestos", "serpentinite_block"), SERPENTINITE_BLOCK); + Registry.register(Registry.ITEM, new Identifier("asbestos", "serpentinite_block"), new BlockItem( + SERPENTINITE_BLOCK, new Item.Settings().group(ItemGroup.BUILDING_BLOCKS))); + + // popcorn ceiling block + Registry.register(Registry.BLOCK, new Identifier("asbestos", "popcorn_ceiling_block"), + POPCORN_CEILING_BLOCK); + Registry.register(Registry.ITEM, new Identifier("asbestos", "popcorn_ceiling_block"), + new BlockItem(POPCORN_CEILING_BLOCK, + new Item.Settings().group(ItemGroup.BUILDING_BLOCKS).fireproof())); + + // asbestos tile block + Registry.register(Registry.BLOCK, new Identifier("asbestos", "asbestos_tile_block"), + ASBESTOS_TILE_BLOCK); + Registry.register(Registry.ITEM, new Identifier("asbestos", "asbestos_tile_block"), new BlockItem( + ASBESTOS_TILE_BLOCK, new Item.Settings().group(ItemGroup.BUILDING_BLOCKS))); + + // serpentinite worldgen + RegistryKey> serpentiniteOverworld = RegistryKey.of( + Registry.CONFIGURED_FEATURE_WORLDGEN, + new Identifier("asbestos", "serpentinite_overworld")); + + Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, serpentiniteOverworld.getValue(), + SERPENTINITE_OVERWORLD); + BiomeModifications.addFeature(BiomeSelectors.foundInOverworld(), + GenerationStep.Feature.UNDERGROUND_ORES, serpentiniteOverworld); + + // scraper tool + Registry.register(Registry.ITEM, new Identifier("asbestos", "iron_scraper"), IRON_SCRAPER); + } +} diff --git a/src/main/java/dev/agatharose/asbestos/item/ScraperItem.java b/src/main/java/dev/agatharose/asbestos/item/ScraperItem.java index 06bcf0d..b490969 100644 --- a/src/main/java/dev/agatharose/asbestos/item/ScraperItem.java +++ b/src/main/java/dev/agatharose/asbestos/item/ScraperItem.java @@ -4,7 +4,7 @@ import java.util.Arrays; import java.util.HashSet; import java.util.Set; -import dev.agatharose.asbestos.Asbestos; +import static dev.agatharose.asbestos.AsbestosRegistry.*; import net.minecraft.block.Block; import net.minecraft.item.MiningToolItem; import net.minecraft.item.ToolMaterial; @@ -12,7 +12,7 @@ import net.minecraft.item.ToolMaterial; public class ScraperItem extends MiningToolItem { private static Set affectedBlocks = new HashSet( - Arrays.asList(Asbestos.ASBESTOS_BLOCK, Asbestos.POPCORN_CEILING_BLOCK, Asbestos.ASBESTOS_TILE_BLOCK)); + Arrays.asList(ASBESTOS_BLOCK, POPCORN_CEILING_BLOCK, ASBESTOS_TILE_BLOCK)); public ScraperItem(ToolMaterial material, float attackDamage, float attackSpeed, Settings settings) { super(attackDamage, attackSpeed, material, affectedBlocks, settings);