experiments with lava hoarder block entity
This commit is contained in:
parent
8a54061dc4
commit
be634de3ce
@ -0,0 +1,53 @@
|
|||||||
|
package de.jottyfan.minecraft.quickiefabric.blockentity;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
|
||||||
|
import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks;
|
||||||
|
import net.minecraft.block.Blocks;
|
||||||
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
|
import net.minecraft.util.Tickable;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author jotty
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class EmptyLavaHoarderBlockEntity extends BlockEntity implements Tickable {
|
||||||
|
|
||||||
|
public EmptyLavaHoarderBlockEntity() {
|
||||||
|
super(QuickieFabricBlockEntity.EMPTYLAVAHOARDER);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sucks the lava that touches the block
|
||||||
|
*
|
||||||
|
* @param world the world
|
||||||
|
* @param pos the pos
|
||||||
|
* @return true if lava was found
|
||||||
|
*/
|
||||||
|
private boolean suckLava(World world, BlockPos pos) {
|
||||||
|
if (Blocks.LAVA.getName().equals(world.getBlockState(pos).getBlock().getName())) {
|
||||||
|
world.setBlockState(pos, Blocks.AIR.getDefaultState());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
BlockPos pos = getPos();
|
||||||
|
World world = getWorld();
|
||||||
|
boolean found = suckLava(world, pos.north());
|
||||||
|
found = found || suckLava(world, pos.south());
|
||||||
|
found = found || suckLava(world, pos.east());
|
||||||
|
found = found || suckLava(world, pos.west());
|
||||||
|
found = found || suckLava(world, pos.up());
|
||||||
|
found = found || suckLava(world, pos.down());
|
||||||
|
if (found) {
|
||||||
|
world.getBlockEntity(pos).markRemoved();
|
||||||
|
world.setBlockState(pos, QuickieBlocks.LAVAHOARDER.getDefaultState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -10,4 +10,5 @@ import net.minecraft.block.entity.BlockEntityType;
|
|||||||
public class QuickieFabricBlockEntity {
|
public class QuickieFabricBlockEntity {
|
||||||
public static BlockEntityType<ItemHoarderBlockEntity> ITEMHOARDER;
|
public static BlockEntityType<ItemHoarderBlockEntity> ITEMHOARDER;
|
||||||
public static BlockEntityType<MonsterHoarderBlockEntity> MONSTERHOARDER;
|
public static BlockEntityType<MonsterHoarderBlockEntity> MONSTERHOARDER;
|
||||||
|
public static BlockEntityType<EmptyLavaHoarderBlockEntity> EMPTYLAVAHOARDER;
|
||||||
}
|
}
|
||||||
|
@ -6,12 +6,16 @@ import java.util.List;
|
|||||||
import java.util.Random;
|
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.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;
|
||||||
|
import net.minecraft.block.BlockEntityProvider;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.Blocks;
|
import net.minecraft.block.Blocks;
|
||||||
import net.minecraft.block.Material;
|
import net.minecraft.block.Material;
|
||||||
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
import net.minecraft.entity.ExperienceOrbEntity;
|
import net.minecraft.entity.ExperienceOrbEntity;
|
||||||
import net.minecraft.entity.ItemEntity;
|
import net.minecraft.entity.ItemEntity;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
@ -19,6 +23,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.item.Items;
|
import net.minecraft.item.Items;
|
||||||
import net.minecraft.loot.context.LootContext.Builder;
|
import net.minecraft.loot.context.LootContext.Builder;
|
||||||
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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,12 +31,17 @@ import net.minecraft.world.World;
|
|||||||
* @author jotty
|
* @author jotty
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class BlockEmptyLavahoarder extends Block {
|
public class BlockEmptyLavahoarder extends Block implements BlockEntityProvider {
|
||||||
|
|
||||||
public BlockEmptyLavahoarder() {
|
public BlockEmptyLavahoarder() {
|
||||||
super(FabricBlockSettings.of(Material.STONE).hardness(2.5f));
|
super(FabricBlockSettings.of(Material.STONE).hardness(2.5f));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockEntity createBlockEntity(BlockView blockView) {
|
||||||
|
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<>();
|
||||||
|
@ -2,10 +2,14 @@ package de.jottyfan.minecraft.quickiefabric.init;
|
|||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
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.ItemHoarderBlockEntity;
|
import de.jottyfan.minecraft.quickiefabric.blockentity.ItemHoarderBlockEntity;
|
||||||
import de.jottyfan.minecraft.quickiefabric.blockentity.MonsterHoarderBlockEntity;
|
import de.jottyfan.minecraft.quickiefabric.blockentity.MonsterHoarderBlockEntity;
|
||||||
import de.jottyfan.minecraft.quickiefabric.blockentity.QuickieFabricBlockEntity;
|
import de.jottyfan.minecraft.quickiefabric.blockentity.QuickieFabricBlockEntity;
|
||||||
@ -19,6 +23,7 @@ import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder;
|
|||||||
import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry;
|
import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry;
|
||||||
import net.minecraft.block.Block;
|
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.BlockEntityType;
|
import net.minecraft.block.entity.BlockEntityType;
|
||||||
import net.minecraft.item.BlockItem;
|
import net.minecraft.item.BlockItem;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
@ -68,17 +73,20 @@ public class RegistryManager {
|
|||||||
public static final ConfiguredFeature<?, ?> FEATURE_DIRTSALPETER = Feature.ORE
|
public static final ConfiguredFeature<?, ?> FEATURE_DIRTSALPETER = Feature.ORE
|
||||||
.configure(new OreFeatureConfig(new BlockMatchRuleTest(Blocks.DIRT),
|
.configure(new OreFeatureConfig(new BlockMatchRuleTest(Blocks.DIRT),
|
||||||
QuickieBlocks.DIRT_SALPETER.getDefaultState(), 3))
|
QuickieBlocks.DIRT_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 ConfiguredFeature<?, ?> FEATURE_SANDSALPETER = Feature.ORE
|
public static final ConfiguredFeature<?, ?> FEATURE_SANDSALPETER = Feature.ORE
|
||||||
.configure(new OreFeatureConfig(new BlockMatchRuleTest(Blocks.SAND),
|
.configure(new OreFeatureConfig(new BlockMatchRuleTest(Blocks.SAND),
|
||||||
QuickieBlocks.SAND_SALPETER.getDefaultState(), 3))
|
QuickieBlocks.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 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().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,
|
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);
|
||||||
@ -137,13 +145,21 @@ public class RegistryManager {
|
|||||||
Registry.register(Registry.ITEM, new Identifier(QUICKIEFABRIC, name), item);
|
Registry.register(Registry.ITEM, new Identifier(QUICKIEFABRIC, name), item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public static final void registerBlockEntities() {
|
public static final void registerBlockEntities() {
|
||||||
QuickieFabricBlockEntity.ITEMHOARDER = Registry.register(Registry.BLOCK_ENTITY_TYPE,
|
QuickieFabricBlockEntity.ITEMHOARDER = (BlockEntityType<ItemHoarderBlockEntity>) registerBlockEntity(
|
||||||
QUICKIEFABRIC + ":itemhoarderblockentity",
|
"itemhoarderblockentity", ItemHoarderBlockEntity::new, QuickieBlocks.ITEMHOARDER);
|
||||||
BlockEntityType.Builder.create(ItemHoarderBlockEntity::new, QuickieBlocks.ITEMHOARDER).build(null));
|
QuickieFabricBlockEntity.MONSTERHOARDER = (BlockEntityType<MonsterHoarderBlockEntity>) registerBlockEntity(
|
||||||
QuickieFabricBlockEntity.MONSTERHOARDER = Registry.register(Registry.BLOCK_ENTITY_TYPE,
|
"monsterhoarderblockentity", MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER);
|
||||||
QUICKIEFABRIC + ":monsterhoarderblockentity",
|
QuickieFabricBlockEntity.EMPTYLAVAHOARDER = (BlockEntityType<EmptyLavaHoarderBlockEntity>) registerBlockEntity(
|
||||||
BlockEntityType.Builder.create(MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER).build(null));
|
"emptylavahoarderblockentity", EmptyLavaHoarderBlockEntity::new, QuickieBlocks.EMPTYLAVAHOARDER);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final void registerBlocks() {
|
public static final void registerBlocks() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user