lava hoarder improvements

This commit is contained in:
Jörg Henke 2020-10-30 15:19:43 +01:00
parent be634de3ce
commit 2dec472409
4 changed files with 37 additions and 26 deletions

View File

@ -1,6 +1,7 @@
package de.jottyfan.minecraft.quickiefabric.blockentity; package de.jottyfan.minecraft.quickiefabric.blockentity;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks; import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
@ -16,8 +17,11 @@ import net.minecraft.world.World;
*/ */
public class EmptyLavaHoarderBlockEntity extends BlockEntity implements Tickable { public class EmptyLavaHoarderBlockEntity extends BlockEntity implements Tickable {
private final Logger LOGGER = LogManager.getLogger(EmptyLavaHoarderBlockEntity.class);
public EmptyLavaHoarderBlockEntity() { public EmptyLavaHoarderBlockEntity() {
super(QuickieFabricBlockEntity.EMPTYLAVAHOARDER); 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 * @return true if lava was found
*/ */
private boolean suckLava(World world, BlockPos pos) { 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()); world.setBlockState(pos, Blocks.AIR.getDefaultState());
return true; return true;
} }
@ -46,7 +52,6 @@ public class EmptyLavaHoarderBlockEntity extends BlockEntity implements Tickable
found = found || suckLava(world, pos.up()); found = found || suckLava(world, pos.up());
found = found || suckLava(world, pos.down()); found = found || suckLava(world, pos.down());
if (found) { if (found) {
world.getBlockEntity(pos).markRemoved();
world.setBlockState(pos, QuickieBlocks.LAVAHOARDER.getDefaultState()); world.setBlockState(pos, QuickieBlocks.LAVAHOARDER.getDefaultState());
} }
} }

View File

@ -7,7 +7,6 @@ import java.util.Random;
import java.util.Set; import java.util.Set;
import de.jottyfan.minecraft.quickiefabric.blockentity.EmptyLavaHoarderBlockEntity; import de.jottyfan.minecraft.quickiefabric.blockentity.EmptyLavaHoarderBlockEntity;
import de.jottyfan.minecraft.quickiefabric.blockentity.MonsterHoarderBlockEntity;
import de.jottyfan.minecraft.quickiefabric.items.QuickieItems; import de.jottyfan.minecraft.quickiefabric.items.QuickieItems;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -104,10 +103,10 @@ public class BlockEmptyLavahoarder extends Block implements BlockEntityProvider
for (String p : positions) { for (String p : positions) {
world.setBlockState(blockPosOf(p), Blocks.AIR.getDefaultState()); world.setBlockState(blockPosOf(p), Blocks.AIR.getDefaultState());
} }
Random random = new Random();
if (amount > 0) { if (amount > 0) {
world.setBlockState(pos, QuickieBlocks.LAVAHOARDER.getDefaultState()); world.setBlockState(pos, QuickieBlocks.LAVAHOARDER.getDefaultState());
int count = 0; int count = 0;
Random random = new Random();
for (int i = 0; i < amount; i++) { for (int i = 0; i < amount; i++) {
if (random.nextFloat() < 0.0125) { if (random.nextFloat() < 0.0125) {
count++; count++;

View File

@ -3,10 +3,13 @@ package de.jottyfan.minecraft.quickiefabric.blocks;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import de.jottyfan.minecraft.quickiefabric.blockentity.EmptyLavaHoarderBlockEntity;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockEntityProvider;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.Material; import net.minecraft.block.Material;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.entity.ItemEntity; import net.minecraft.entity.ItemEntity;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -16,6 +19,7 @@ import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.BlockView;
import net.minecraft.world.World; import net.minecraft.world.World;
/** /**
@ -23,12 +27,17 @@ import net.minecraft.world.World;
* @author jotty * @author jotty
* *
*/ */
public class BlockLavahoarder extends Block { public class BlockLavahoarder extends Block implements BlockEntityProvider {
public BlockLavahoarder() { public BlockLavahoarder() {
super(FabricBlockSettings.of(Material.STONE).hardness(2.5f).lightLevel(16)); super(FabricBlockSettings.of(Material.STONE).hardness(2.5f).lightLevel(16));
} }
@Override
public BlockEntity createBlockEntity(BlockView world) {
return new EmptyLavaHoarderBlockEntity();
}
@Override @Override
public List<ItemStack> getDroppedStacks(BlockState state, Builder builder) { public List<ItemStack> getDroppedStacks(BlockState state, Builder builder) {
List<ItemStack> list = new ArrayList<>(); List<ItemStack> list = new ArrayList<>();

View File

@ -7,8 +7,6 @@ import java.util.function.Supplier;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; 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.EmptyLavaHoarderBlockEntity;
import de.jottyfan.minecraft.quickiefabric.blockentity.ItemHoarderBlockEntity; import de.jottyfan.minecraft.quickiefabric.blockentity.ItemHoarderBlockEntity;
import de.jottyfan.minecraft.quickiefabric.blockentity.MonsterHoarderBlockEntity; 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.Blocks;
import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.BlockEntityType; import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.block.entity.BlockEntityType.Builder;
import net.minecraft.item.BlockItem; import net.minecraft.item.BlockItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemGroup;
@ -71,22 +70,19 @@ public class RegistryManager {
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 32, 255))).spreadHorizontally().repeat(4); .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 32, 255))).spreadHorizontally().repeat(4);
public static final ConfiguredFeature<?, ?> FEATURE_DIRTSALPETER = Feature.ORE public static final ConfiguredFeature<?, ?> FEATURE_DIRTSALPETER = Feature.ORE
.configure(new OreFeatureConfig(new BlockMatchRuleTest(Blocks.DIRT), .configure(
QuickieBlocks.DIRT_SALPETER.getDefaultState(), 3)) new OreFeatureConfig(new BlockMatchRuleTest(Blocks.DIRT), QuickieBlocks.DIRT_SALPETER.getDefaultState(), 3))
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 0, 255))).spreadHorizontally() .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 0, 255))).spreadHorizontally().repeatRandomly(4);
.repeatRandomly(4);
public static final ConfiguredFeature<?, ?> FEATURE_SANDSALPETER = Feature.ORE public static final ConfiguredFeature<?, ?> FEATURE_SANDSALPETER = Feature.ORE
.configure(new OreFeatureConfig(new BlockMatchRuleTest(Blocks.SAND), .configure(
QuickieBlocks.SAND_SALPETER.getDefaultState(), 3)) new OreFeatureConfig(new BlockMatchRuleTest(Blocks.SAND), QuickieBlocks.SAND_SALPETER.getDefaultState(), 3))
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 0, 255))).spreadHorizontally() .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 0, 255))).spreadHorizontally().repeatRandomly(4);
.repeatRandomly(4);
public static final ConfiguredFeature<?, ?> FEATURE_ORESANDSALPETER = Feature.ORE public static final ConfiguredFeature<?, ?> FEATURE_ORESANDSALPETER = Feature.ORE
.configure(new OreFeatureConfig(new BlockMatchRuleTest(Blocks.SANDSTONE), .configure(new OreFeatureConfig(new BlockMatchRuleTest(Blocks.SANDSTONE),
QuickieBlocks.ORE_SAND_SALPETER.getDefaultState(), 3)) QuickieBlocks.ORE_SAND_SALPETER.getDefaultState(), 3))
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 0, 255))).spreadHorizontally() .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(4, 0, 255))).spreadHorizontally().repeatRandomly(4);
.repeatRandomly(4);
public static final List<ConfiguredFeature<?, ?>> FEATURE_UNDERGROUND_ORES = Arrays.asList(FEATURE_ORESALPETER, public static final List<ConfiguredFeature<?, ?>> FEATURE_UNDERGROUND_ORES = Arrays.asList(FEATURE_ORESALPETER,
FEATURE_ORESULPHOR, FEATURE_DIRTSALPETER, FEATURE_SANDSALPETER, FEATURE_ORESANDSALPETER); FEATURE_ORESULPHOR, FEATURE_DIRTSALPETER, FEATURE_SANDSALPETER, FEATURE_ORESANDSALPETER);
@ -147,19 +143,21 @@ public class RegistryManager {
public static final <T extends BlockEntity> BlockEntityType<? extends T> registerBlockEntity(String name, public static final <T extends BlockEntity> BlockEntityType<? extends T> registerBlockEntity(String name,
Supplier<? extends T> supplier, Block... blocks) { Supplier<? extends T> supplier, Block... blocks) {
return Registry.register(Registry.BLOCK_ENTITY_TYPE, QUICKIEFABRIC + ":" + name, String fullname = new StringBuilder().append(QUICKIEFABRIC).append(":").append(name).toString();
BlockEntityType.Builder.create(supplier, blocks).build(null)); Builder<? extends T> builder = BlockEntityType.Builder.create(supplier, blocks);
BlockEntityType<? extends T> blockEntityType = builder.build(null);
return Registry.register(Registry.BLOCK_ENTITY_TYPE, fullname, blockEntityType);
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static final void registerBlockEntities() { public static final void registerBlockEntities() {
QuickieFabricBlockEntity.ITEMHOARDER = (BlockEntityType<ItemHoarderBlockEntity>) registerBlockEntity( LOGGER.debug("registering quickiefabric block entities");
"itemhoarderblockentity", ItemHoarderBlockEntity::new, QuickieBlocks.ITEMHOARDER); QuickieFabricBlockEntity.ITEMHOARDER = (BlockEntityType<ItemHoarderBlockEntity>) registerBlockEntity("itemhoarderblockentity", ItemHoarderBlockEntity::new,
QuickieFabricBlockEntity.MONSTERHOARDER = (BlockEntityType<MonsterHoarderBlockEntity>) registerBlockEntity( QuickieBlocks.ITEMHOARDER);
"monsterhoarderblockentity", MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER); QuickieFabricBlockEntity.MONSTERHOARDER = (BlockEntityType<MonsterHoarderBlockEntity>) registerBlockEntity("monsterhoarderblockentity",
QuickieFabricBlockEntity.EMPTYLAVAHOARDER = (BlockEntityType<EmptyLavaHoarderBlockEntity>) registerBlockEntity( MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER);
"emptylavahoarderblockentity", EmptyLavaHoarderBlockEntity::new, QuickieBlocks.EMPTYLAVAHOARDER); QuickieFabricBlockEntity.EMPTYLAVAHOARDER = (BlockEntityType<EmptyLavaHoarderBlockEntity>) registerBlockEntity("emptylavahoarderblockentity",
EmptyLavaHoarderBlockEntity::new, QuickieBlocks.EMPTYLAVAHOARDER, QuickieBlocks.LAVAHOARDER);
} }
public static final void registerBlocks() { public static final void registerBlocks() {