added and improved monster hoarder
This commit is contained in:
parent
99668e129d
commit
9299dc39f1
@ -19,6 +19,7 @@ public class QuickieMod implements ModInitializer {
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
LOGGER.info("loading {}", MODID);
|
||||
RegistryManager.registerBlockEntityTypes();
|
||||
RegistryManager.registerItems();
|
||||
RegistryManager.registerBlocks();
|
||||
RegistryManager.registerFeatures();
|
||||
|
@ -0,0 +1,22 @@
|
||||
package de.jottyfan.quickiemod.blockentity;
|
||||
|
||||
import de.jottyfan.quickiemod.blocks.QuickieBlocks;
|
||||
import de.jottyfan.quickiemod.init.BlockEntityIdentity;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
public class BlockEntityTypes {
|
||||
public static final BlockEntityType<EmptyLavaHoarderBlockEntity> EMPTYLAVAHOARDER = Registry.register(Registries.BLOCK_ENTITY_TYPE,
|
||||
BlockEntityIdentity.EMPTYLAVALHOARDER, BlockEntityType.Builder
|
||||
.create(EmptyLavaHoarderBlockEntity::new, QuickieBlocks.EMPTYLAVAHOARDER.getBlock(), QuickieBlocks.LAVAHOARDER.getBlock()).build(null));
|
||||
public static final BlockEntityType<ItemHoarderBlockEntity> ITEMHOARDER = Registry.register(Registries.BLOCK_ENTITY_TYPE, BlockEntityIdentity.ITEMHOARDER,
|
||||
BlockEntityType.Builder.create(ItemHoarderBlockEntity::new, QuickieBlocks.ITEMHOARDER.getBlock()).build(null));
|
||||
public static final BlockEntityType<MonsterHoarderBlockEntity> MONSTERHOARDER = Registry.register(Registries.BLOCK_ENTITY_TYPE,
|
||||
BlockEntityIdentity.MONSTERHOARDER, BlockEntityType.Builder.create(MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER.getBlock()).build(null));
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
package de.jottyfan.quickiemod.blockentity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import de.jottyfan.quickiemod.blocks.QuickieBlocks;
|
||||
import net.minecraft.block.AbstractBlock;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockEntityProvider;
|
||||
import net.minecraft.block.BlockRenderType;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.block.entity.BlockEntityTicker;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.context.LootContextParameterSet.Builder;
|
||||
import net.minecraft.sound.SoundCategory;
|
||||
import net.minecraft.sound.SoundEvents;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
public class BlockMonsterhoarder extends Block implements BlockEntityProvider {
|
||||
|
||||
|
||||
public BlockMonsterhoarder() {
|
||||
super(AbstractBlock.Settings.create().hardness(2.5f).luminance(state -> 15));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) {
|
||||
return new MonsterHoarderBlockEntity(pos, blockState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockRenderType getRenderType(BlockState state) {
|
||||
return BlockRenderType.MODEL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(World world, BlockState state, BlockEntityType<T> type){
|
||||
return (world1, pos, state1, be) -> MonsterHoarderBlockEntity.tick(world1, pos, state1, be);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, Builder builder) {
|
||||
List<ItemStack> list = new ArrayList<>();
|
||||
list.add(new ItemStack(QuickieBlocks.MONSTERHOARDER.getBlock()));
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaced(World world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack itemStack) {
|
||||
if (!world.isClient) {
|
||||
world.playSound(null, pos, SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, SoundCategory.PLAYERS, 1f, 1f);
|
||||
}
|
||||
super.onPlaced(world, pos, state, placer, itemStack);
|
||||
}
|
||||
}
|
@ -3,7 +3,6 @@ package de.jottyfan.quickiemod.blockentity;
|
||||
import java.util.Random;
|
||||
|
||||
import de.jottyfan.quickiemod.blocks.QuickieBlocks;
|
||||
import de.jottyfan.quickiemod.init.RegistryManager;
|
||||
import de.jottyfan.quickiemod.items.QuickieItems;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
@ -22,7 +21,7 @@ import net.minecraft.world.World;
|
||||
public class EmptyLavaHoarderBlockEntity extends BlockEntity {
|
||||
|
||||
public EmptyLavaHoarderBlockEntity(BlockPos pos, BlockState state) {
|
||||
super(RegistryManager.EMPTYLAVAHOARDER, pos, state);
|
||||
super(BlockEntityTypes.EMPTYLAVAHOARDER, pos, state);
|
||||
}
|
||||
|
||||
public static final void spawnRandomItems(World world, BlockPos pos, Integer count) {
|
||||
|
@ -3,7 +3,6 @@ package de.jottyfan.quickiemod.blockentity;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import de.jottyfan.quickiemod.init.RegistryManager;
|
||||
import de.jottyfan.quickiemod.text.PrefixedText;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
@ -35,7 +34,7 @@ public class ItemHoarderBlockEntity extends LootableContainerBlockEntity {
|
||||
private float suckradius;
|
||||
|
||||
public ItemHoarderBlockEntity(BlockPos pos, BlockState state) {
|
||||
super(RegistryManager.ITEMHOARDER, pos, state);
|
||||
super(BlockEntityTypes.ITEMHOARDER, pos, state);
|
||||
stacks = DefaultedList.ofSize(54, ItemStack.EMPTY);
|
||||
setSuckradius(4f); // TODO: make it level up - able and start with 2
|
||||
}
|
||||
|
@ -0,0 +1,51 @@
|
||||
package de.jottyfan.quickiemod.blockentity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.mob.HostileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Box;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
public class MonsterHoarderBlockEntity extends BlockEntity {
|
||||
|
||||
private float suckradius;
|
||||
|
||||
public MonsterHoarderBlockEntity(BlockPos pos, BlockState state) {
|
||||
super(BlockEntityTypes.MONSTERHOARDER, pos, state);
|
||||
setSuckradius(8f); // TODO: make it level up - able and start with 2
|
||||
}
|
||||
|
||||
public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) {
|
||||
if (be instanceof MonsterHoarderBlockEntity) {
|
||||
MonsterHoarderBlockEntity mhbe = (MonsterHoarderBlockEntity) be;
|
||||
Box box = new Box(pos).expand(mhbe.getSuckradius());
|
||||
List<Entity> entities = world.getOtherEntities(null, box);
|
||||
for (Entity entity : entities) {
|
||||
if (entity instanceof HostileEntity) {
|
||||
if (entity.isFireImmune()) {
|
||||
entity.kill();
|
||||
} else {
|
||||
entity.setOnFireFor(90);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public float getSuckradius() {
|
||||
return suckradius;
|
||||
}
|
||||
|
||||
public void setSuckradius(float suckradius) {
|
||||
this.suckradius = suckradius;
|
||||
}
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
package de.jottyfan.quickiemod.blocks;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import de.jottyfan.quickiemod.blockentity.MonsterHoarderBlockEntity;
|
||||
import net.minecraft.block.AbstractBlock;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockEntityProvider;
|
||||
import net.minecraft.block.BlockRenderType;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.block.entity.BlockEntityTicker;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.context.LootContextParameterSet.Builder;
|
||||
import net.minecraft.sound.SoundCategory;
|
||||
import net.minecraft.sound.SoundEvents;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jotty
|
||||
*
|
||||
*/
|
||||
public class BlockMonsterhoarder extends Block implements BlockEntityProvider {
|
||||
|
||||
|
||||
public BlockMonsterhoarder() {
|
||||
super(AbstractBlock.Settings.create().hardness(2.5f).luminance(state -> 15));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) {
|
||||
return new MonsterHoarderBlockEntity(pos, blockState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockRenderType getRenderType(BlockState state) {
|
||||
return BlockRenderType.MODEL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(World world, BlockState state, BlockEntityType<T> type){
|
||||
return (world1, pos, state1, be) -> MonsterHoarderBlockEntity.tick(world1, pos, state1, be);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, Builder builder) {
|
||||
List<ItemStack> list = new ArrayList<>();
|
||||
list.add(new ItemStack(QuickieBlocks.MONSTERHOARDER.getBlock()));
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaced(World world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack itemStack) {
|
||||
if (!world.isClient) {
|
||||
world.playSound(null, pos, SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, SoundCategory.PLAYERS, 1f, 1f);
|
||||
}
|
||||
super.onPlaced(world, pos, state, placer, itemStack);
|
||||
}
|
||||
}
|
@ -9,6 +9,7 @@ import net.minecraft.block.Block;
|
||||
*/
|
||||
public enum QuickieBlocks {
|
||||
// @formatter:off
|
||||
MONSTERHOARDER(new BlockMonsterhoarder(), "monsterhoarder"),
|
||||
ITEMHOARDER(new BlockItemhoarder(), "itemhoarder"),
|
||||
LAVAHOARDER(new BlockLavahoarder(), "lavahoarder", false),
|
||||
EMPTYLAVAHOARDER(new BlockEmptyLavahoarder(), "emptylavahoarder"),
|
||||
|
@ -4,8 +4,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import de.jottyfan.quickiemod.QuickieMod;
|
||||
import de.jottyfan.quickiemod.blockentity.EmptyLavaHoarderBlockEntity;
|
||||
import de.jottyfan.quickiemod.blockentity.ItemHoarderBlockEntity;
|
||||
import de.jottyfan.quickiemod.blockentity.BlockEntityTypes;
|
||||
import de.jottyfan.quickiemod.blocks.QuickieBlocks;
|
||||
import de.jottyfan.quickiemod.items.QuickieItems;
|
||||
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
|
||||
@ -14,7 +13,6 @@ import net.fabricmc.fabric.api.biome.v1.ModificationPhase;
|
||||
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
|
||||
import net.fabricmc.fabric.api.registry.FuelRegistry;
|
||||
import net.minecraft.block.ComposterBlock;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
import net.minecraft.item.BlockItem;
|
||||
import net.minecraft.item.Item.Settings;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -33,9 +31,6 @@ import net.minecraft.util.Identifier;
|
||||
public class RegistryManager {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(QuickieMod.MODID);
|
||||
|
||||
public static final BlockEntityType<EmptyLavaHoarderBlockEntity> EMPTYLAVAHOARDER = Registry.register(Registries.BLOCK_ENTITY_TYPE, BlockEntityIdentity.EMPTYLAVALHOARDER, BlockEntityType.Builder.create(EmptyLavaHoarderBlockEntity::new, QuickieBlocks.EMPTYLAVAHOARDER.getBlock(), QuickieBlocks.LAVAHOARDER.getBlock()).build(null));
|
||||
public static final BlockEntityType<ItemHoarderBlockEntity> ITEMHOARDER = Registry.register(Registries.BLOCK_ENTITY_TYPE, BlockEntityIdentity.ITEMHOARDER, BlockEntityType.Builder.create(ItemHoarderBlockEntity::new, QuickieBlocks.ITEMHOARDER.getBlock()).build(null));
|
||||
|
||||
public static final void registerItemGroup() {
|
||||
Registry.register(Registries.ITEM_GROUP, RegistryKey.of(RegistryKeys.ITEM_GROUP, new Identifier(QuickieMod.MODID, "itemgroups")),
|
||||
FabricItemGroup.builder().icon(() -> new ItemStack(QuickieItems.ROTTEN_FLESH_STRIPES.getItem())).displayName(Text.literal(QuickieMod.MODID))
|
||||
@ -81,4 +76,8 @@ public class RegistryManager {
|
||||
BiomeModifications.create(new Identifier(QuickieMod.MODID, "nether_features")).add(ModificationPhase.ADDITIONS, BiomeSelectors.foundInTheNether(),
|
||||
FeaturesManager.netherOres());
|
||||
}
|
||||
|
||||
public static final void registerBlockEntityTypes() {
|
||||
new BlockEntityTypes();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"variants": {
|
||||
"": {
|
||||
"model": "quickiemod:block/monsterhoarder"
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "block/cube_all",
|
||||
"textures": {
|
||||
"all": "quickiemod:block/monsterhoarder"
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
{
|
||||
"parent": "quickiemod:block/monsterhoarder",
|
||||
"display": {
|
||||
"thirdperson": {
|
||||
"rotation": [ 10, -45, 170 ],
|
||||
"translation": [ 0, 1.5, -2.75 ],
|
||||
"scale": [ 0.375, 0.375, 0.375 ]
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
@ -0,0 +1,20 @@
|
||||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"qqq",
|
||||
"qtq",
|
||||
"qqq"
|
||||
],
|
||||
"key": {
|
||||
"q": {
|
||||
"item": "quickiemod:quickieingot"
|
||||
},
|
||||
"t": {
|
||||
"item": "minecraft:torch"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"id": "quickiemod:monsterhoarder",
|
||||
"count": 1
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user