diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/MonsterHoarderBlockEntity.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/MonsterHoarderBlockEntity.java new file mode 100644 index 0000000..1ae7110 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/MonsterHoarderBlockEntity.java @@ -0,0 +1,40 @@ +package de.jottyfan.minecraft.quickiefabric.blockentity; + +import java.util.List; + +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.Entity; +import net.minecraft.entity.mob.HostileEntity; +import net.minecraft.util.Tickable; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; +import net.minecraft.world.World; + +/** + * + * @author jotty + * + */ +public class MonsterHoarderBlockEntity extends BlockEntity implements Tickable { + + private float suckradius; + + public MonsterHoarderBlockEntity() { + super(QuickieFabricBlockEntity.MONSTERHOARDER); + suckradius = 8f; // TODO: make it level up - able and start with 2 + } + + @Override + public void tick() { + BlockPos pos = getPos(); + World world = getWorld(); + Box box = new Box(pos).expand(suckradius); + List entities = world.getEntities(null, box); + for (Entity entity : entities) { + if (entity instanceof HostileEntity) { + HostileEntity mobEntity = (HostileEntity) entity; + mobEntity.setOnFireFor(90); + } + } + } +} diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockMonsterhoarder.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockMonsterhoarder.java new file mode 100644 index 0000000..3d1d655 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockMonsterhoarder.java @@ -0,0 +1,52 @@ +package de.jottyfan.minecraft.quickiefabric.blocks; + +import java.util.ArrayList; +import java.util.List; + +import de.jottyfan.minecraft.quickiefabric.blockentity.MonsterHoarderBlockEntity; +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.LivingEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext.Builder; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; + +/** + * + * @author jotty + * + */ +public class BlockMonsterhoarder extends Block implements BlockEntityProvider { + + public BlockMonsterhoarder() { + super(FabricBlockSettings.of(Material.WOOD).hardness(2.5f).lightLevel(20)); + } + + @Override + public BlockEntity createBlockEntity(BlockView blockView) { + return new MonsterHoarderBlockEntity(); + } + + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + List list = new ArrayList<>(); + list.add(new ItemStack(QuickieBlocks.MONSTERHOARDER)); + 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); + } +} diff --git a/src/main/resources/assets/quickiefabric/blockstates/monsterhoarder.json b/src/main/resources/assets/quickiefabric/blockstates/monsterhoarder.json new file mode 100644 index 0000000..29b1f46 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/blockstates/monsterhoarder.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "quickiefabric:block/monsterhoarder" + } + } +} diff --git a/src/main/resources/assets/quickiefabric/models/block/monsterhoarder.json b/src/main/resources/assets/quickiefabric/models/block/monsterhoarder.json new file mode 100644 index 0000000..525941b --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/monsterhoarder.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "quickiefabric:block/monsterhoarder" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/item/monsterhoarder.json b/src/main/resources/assets/quickiefabric/models/item/monsterhoarder.json new file mode 100644 index 0000000..cec3277 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/item/monsterhoarder.json @@ -0,0 +1,10 @@ +{ + "parent": "quickiefabric:block/monsterhoarder", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/textures/block/monsterhoarder.png b/src/main/resources/assets/quickiefabric/textures/block/monsterhoarder.png new file mode 100644 index 0000000..aba9272 Binary files /dev/null and b/src/main/resources/assets/quickiefabric/textures/block/monsterhoarder.png differ diff --git a/src/main/resources/data/quickiefabric/recipes/monsterhoarder.json b/src/main/resources/data/quickiefabric/recipes/monsterhoarder.json new file mode 100644 index 0000000..9bcdaba --- /dev/null +++ b/src/main/resources/data/quickiefabric/recipes/monsterhoarder.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ooo", + "oso", + "ooo" + ], + "key": { + "o": { + "item": "quickiefabric:speedpowder" + }, + "s": { + "item": "minecraft:torch" + } + }, + "result": { + "item": "quickiefabric:monsterhoarder", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/quickiefabric/recipes/torch_from_campfire.json b/src/main/resources/data/quickiefabric/recipes/torch_from_campfire.json new file mode 100644 index 0000000..37fef8d --- /dev/null +++ b/src/main/resources/data/quickiefabric/recipes/torch_from_campfire.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:campfire_cooking", + "ingredient": { + "item": "minecraft:stick" + }, + "result": "minecraft:torch", + "experience": 0, + "cookingtime": 50 +}