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;
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());
}
}

View File

@ -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++;

View File

@ -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<ItemStack> getDroppedStacks(BlockState state, Builder builder) {
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.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<ConfiguredFeature<?, ?>> 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 <T extends BlockEntity> BlockEntityType<? extends T> registerBlockEntity(String name,
Supplier<? extends T> 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<? 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")
public static final void registerBlockEntities() {
QuickieFabricBlockEntity.ITEMHOARDER = (BlockEntityType<ItemHoarderBlockEntity>) registerBlockEntity(
"itemhoarderblockentity", ItemHoarderBlockEntity::new, QuickieBlocks.ITEMHOARDER);
QuickieFabricBlockEntity.MONSTERHOARDER = (BlockEntityType<MonsterHoarderBlockEntity>) registerBlockEntity(
"monsterhoarderblockentity", MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER);
QuickieFabricBlockEntity.EMPTYLAVAHOARDER = (BlockEntityType<EmptyLavaHoarderBlockEntity>) registerBlockEntity(
"emptylavahoarderblockentity", EmptyLavaHoarderBlockEntity::new, QuickieBlocks.EMPTYLAVAHOARDER);
LOGGER.debug("registering quickiefabric block entities");
QuickieFabricBlockEntity.ITEMHOARDER = (BlockEntityType<ItemHoarderBlockEntity>) registerBlockEntity("itemhoarderblockentity", ItemHoarderBlockEntity::new,
QuickieBlocks.ITEMHOARDER);
QuickieFabricBlockEntity.MONSTERHOARDER = (BlockEntityType<MonsterHoarderBlockEntity>) registerBlockEntity("monsterhoarderblockentity",
MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER);
QuickieFabricBlockEntity.EMPTYLAVAHOARDER = (BlockEntityType<EmptyLavaHoarderBlockEntity>) registerBlockEntity("emptylavahoarderblockentity",
EmptyLavaHoarderBlockEntity::new, QuickieBlocks.EMPTYLAVAHOARDER, QuickieBlocks.LAVAHOARDER);
}
public static final void registerBlocks() {