From 2dec47240907610eb0c77b365bb51779b6bf5ab9 Mon Sep 17 00:00:00 2001 From: jottyfan Date: Fri, 30 Oct 2020 15:19:43 +0100 Subject: [PATCH] lava hoarder improvements --- .../EmptyLavaHoarderBlockEntity.java | 9 ++++- .../blocks/BlockEmptyLavahoarder.java | 3 +- .../blocks/BlockLavahoarder.java | 11 ++++- .../quickiefabric/init/RegistryManager.java | 40 +++++++++---------- 4 files changed, 37 insertions(+), 26 deletions(-) diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/EmptyLavaHoarderBlockEntity.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/EmptyLavaHoarderBlockEntity.java index 5ad9205..e35a28d 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/EmptyLavaHoarderBlockEntity.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/EmptyLavaHoarderBlockEntity.java @@ -1,6 +1,7 @@ package de.jottyfan.minecraft.quickiefabric.blockentity; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks; import net.minecraft.block.Blocks; @@ -16,8 +17,11 @@ import net.minecraft.world.World; */ public class EmptyLavaHoarderBlockEntity extends BlockEntity implements Tickable { + private final Logger LOGGER = LogManager.getLogger(EmptyLavaHoarderBlockEntity.class); + public EmptyLavaHoarderBlockEntity() { super(QuickieFabricBlockEntity.EMPTYLAVAHOARDER); + LOGGER.error("created empty lava hoarder block entity"); } /** @@ -28,7 +32,9 @@ public class EmptyLavaHoarderBlockEntity extends BlockEntity implements Tickable * @return true if lava was found */ private boolean suckLava(World world, BlockPos pos) { - if (Blocks.LAVA.getName().equals(world.getBlockState(pos).getBlock().getName())) { + if (world == null) { + return false; + } else if (Blocks.LAVA.getName().equals(world.getBlockState(pos).getBlock().getName())) { world.setBlockState(pos, Blocks.AIR.getDefaultState()); return true; } @@ -46,7 +52,6 @@ public class EmptyLavaHoarderBlockEntity extends BlockEntity implements Tickable found = found || suckLava(world, pos.up()); found = found || suckLava(world, pos.down()); if (found) { - world.getBlockEntity(pos).markRemoved(); world.setBlockState(pos, QuickieBlocks.LAVAHOARDER.getDefaultState()); } } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockEmptyLavahoarder.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockEmptyLavahoarder.java index 8f9744a..cf36a74 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockEmptyLavahoarder.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockEmptyLavahoarder.java @@ -7,7 +7,6 @@ import java.util.Random; import java.util.Set; import de.jottyfan.minecraft.quickiefabric.blockentity.EmptyLavaHoarderBlockEntity; -import de.jottyfan.minecraft.quickiefabric.blockentity.MonsterHoarderBlockEntity; import de.jottyfan.minecraft.quickiefabric.items.QuickieItems; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.Block; @@ -104,10 +103,10 @@ public class BlockEmptyLavahoarder extends Block implements BlockEntityProvider for (String p : positions) { world.setBlockState(blockPosOf(p), Blocks.AIR.getDefaultState()); } - Random random = new Random(); if (amount > 0) { world.setBlockState(pos, QuickieBlocks.LAVAHOARDER.getDefaultState()); int count = 0; + Random random = new Random(); for (int i = 0; i < amount; i++) { if (random.nextFloat() < 0.0125) { count++; diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockLavahoarder.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockLavahoarder.java index eb5f499..4de09d9 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockLavahoarder.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockLavahoarder.java @@ -3,10 +3,13 @@ package de.jottyfan.minecraft.quickiefabric.blocks; import java.util.ArrayList; import java.util.List; +import de.jottyfan.minecraft.quickiefabric.blockentity.EmptyLavaHoarderBlockEntity; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.Block; +import net.minecraft.block.BlockEntityProvider; import net.minecraft.block.BlockState; import net.minecraft.block.Material; +import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.ItemEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -16,6 +19,7 @@ import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.BlockView; import net.minecraft.world.World; /** @@ -23,12 +27,17 @@ import net.minecraft.world.World; * @author jotty * */ -public class BlockLavahoarder extends Block { +public class BlockLavahoarder extends Block implements BlockEntityProvider { public BlockLavahoarder() { super(FabricBlockSettings.of(Material.STONE).hardness(2.5f).lightLevel(16)); } + @Override + public BlockEntity createBlockEntity(BlockView world) { + return new EmptyLavaHoarderBlockEntity(); + } + @Override public List getDroppedStacks(BlockState state, Builder builder) { List list = new ArrayList<>(); diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java index 5acb3d4..20a769b 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java @@ -7,8 +7,6 @@ import java.util.function.Supplier; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import com.google.common.collect.ImmutableSet; - import de.jottyfan.minecraft.quickiefabric.blockentity.EmptyLavaHoarderBlockEntity; import de.jottyfan.minecraft.quickiefabric.blockentity.ItemHoarderBlockEntity; import de.jottyfan.minecraft.quickiefabric.blockentity.MonsterHoarderBlockEntity; @@ -25,6 +23,7 @@ import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.block.entity.BlockEntityType.Builder; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; @@ -71,22 +70,19 @@ public class RegistryManager { .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 32, 255))).spreadHorizontally().repeat(4); public static final ConfiguredFeature FEATURE_DIRTSALPETER = Feature.ORE - .configure(new OreFeatureConfig(new BlockMatchRuleTest(Blocks.DIRT), - QuickieBlocks.DIRT_SALPETER.getDefaultState(), 3)) - .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 0, 255))).spreadHorizontally() - .repeatRandomly(4); + .configure( + new OreFeatureConfig(new BlockMatchRuleTest(Blocks.DIRT), QuickieBlocks.DIRT_SALPETER.getDefaultState(), 3)) + .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 0, 255))).spreadHorizontally().repeatRandomly(4); public static final ConfiguredFeature FEATURE_SANDSALPETER = Feature.ORE - .configure(new OreFeatureConfig(new BlockMatchRuleTest(Blocks.SAND), - QuickieBlocks.SAND_SALPETER.getDefaultState(), 3)) - .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 0, 255))).spreadHorizontally() - .repeatRandomly(4); + .configure( + new OreFeatureConfig(new BlockMatchRuleTest(Blocks.SAND), QuickieBlocks.SAND_SALPETER.getDefaultState(), 3)) + .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 0, 255))).spreadHorizontally().repeatRandomly(4); public static final ConfiguredFeature FEATURE_ORESANDSALPETER = Feature.ORE .configure(new OreFeatureConfig(new BlockMatchRuleTest(Blocks.SANDSTONE), QuickieBlocks.ORE_SAND_SALPETER.getDefaultState(), 3)) - .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 0, 255))).spreadHorizontally() - .repeatRandomly(4); + .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 0, 255))).spreadHorizontally().repeatRandomly(4); public static final List> FEATURE_UNDERGROUND_ORES = Arrays.asList(FEATURE_ORESALPETER, FEATURE_ORESULPHOR, FEATURE_DIRTSALPETER, FEATURE_SANDSALPETER, FEATURE_ORESANDSALPETER); @@ -147,19 +143,21 @@ public class RegistryManager { public static final BlockEntityType registerBlockEntity(String name, Supplier supplier, Block... blocks) { - return Registry.register(Registry.BLOCK_ENTITY_TYPE, QUICKIEFABRIC + ":" + name, - BlockEntityType.Builder.create(supplier, blocks).build(null)); - + String fullname = new StringBuilder().append(QUICKIEFABRIC).append(":").append(name).toString(); + Builder builder = BlockEntityType.Builder.create(supplier, blocks); + BlockEntityType blockEntityType = builder.build(null); + return Registry.register(Registry.BLOCK_ENTITY_TYPE, fullname, blockEntityType); } @SuppressWarnings("unchecked") public static final void registerBlockEntities() { - QuickieFabricBlockEntity.ITEMHOARDER = (BlockEntityType) registerBlockEntity( - "itemhoarderblockentity", ItemHoarderBlockEntity::new, QuickieBlocks.ITEMHOARDER); - QuickieFabricBlockEntity.MONSTERHOARDER = (BlockEntityType) registerBlockEntity( - "monsterhoarderblockentity", MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER); - QuickieFabricBlockEntity.EMPTYLAVAHOARDER = (BlockEntityType) registerBlockEntity( - "emptylavahoarderblockentity", EmptyLavaHoarderBlockEntity::new, QuickieBlocks.EMPTYLAVAHOARDER); + LOGGER.debug("registering quickiefabric block entities"); + QuickieFabricBlockEntity.ITEMHOARDER = (BlockEntityType) registerBlockEntity("itemhoarderblockentity", ItemHoarderBlockEntity::new, + QuickieBlocks.ITEMHOARDER); + QuickieFabricBlockEntity.MONSTERHOARDER = (BlockEntityType) registerBlockEntity("monsterhoarderblockentity", + MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER); + QuickieFabricBlockEntity.EMPTYLAVAHOARDER = (BlockEntityType) registerBlockEntity("emptylavahoarderblockentity", + EmptyLavaHoarderBlockEntity::new, QuickieBlocks.EMPTYLAVAHOARDER, QuickieBlocks.LAVAHOARDER); } public static final void registerBlocks() {