init Smelter block entity

This commit is contained in:
Aleksey 2020-09-25 16:42:02 +03:00
parent 58a5d37121
commit fa807350c7
3 changed files with 165 additions and 1 deletions

View file

@ -2,8 +2,12 @@ package ru.betterend.blocks;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block;
import net.minecraft.block.BlockRenderType;
import net.minecraft.block.BlockState;
@ -15,8 +19,11 @@ import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemPlacementContext;
import net.minecraft.item.ItemStack;
import net.minecraft.loot.context.LootContext;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.screen.ScreenHandler;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvents;
import net.minecraft.state.StateManager;
import net.minecraft.state.property.BooleanProperty;
import net.minecraft.state.property.DirectionProperty;
@ -55,7 +62,9 @@ public class EndStoneSmelter extends BaseBlockWithEntity {
}
}
private void openScreen(World world, BlockPos pos, PlayerEntity player) {}
private void openScreen(World world, BlockPos pos, PlayerEntity player) {
}
@Override
public BlockState getPlacementState(ItemPlacementContext ctx) {
@ -101,4 +110,24 @@ public class EndStoneSmelter extends BaseBlockWithEntity {
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
builder.add(FACING, LIT);
}
@Environment(EnvType.CLIENT)
public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) {
if (state.get(LIT)) {
double x = pos.getX() + 0.5D;
double y = pos.getY();
double z = pos.getZ() + 0.5D;
if (random.nextDouble() < 0.1D) {
world.playSound(x, y, z, SoundEvents.BLOCK_BLASTFURNACE_FIRE_CRACKLE, SoundCategory.BLOCKS, 1.0F, 1.0F, false);
}
Direction direction = (Direction)state.get(FACING);
Direction.Axis axis = direction.getAxis();
double defOffset = random.nextDouble() * 0.6D - 0.3D;
double offX = axis == Direction.Axis.X ? direction.getOffsetX() * 0.52D : defOffset;
double offY = random.nextDouble() * 9.0D / 16.0D;
double offZ = axis == Direction.Axis.Z ? direction.getOffsetZ() * 0.52D : defOffset;
world.addParticle(ParticleTypes.SMOKE, x + offX, y + offY, z + offZ, 0.0D, 0.0D, 0.0D);
}
}
}

View file

@ -0,0 +1,126 @@
package ru.betterend.blocks.entities;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.block.entity.LockableContainerBlockEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.SidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.recipe.Recipe;
import net.minecraft.recipe.RecipeFinder;
import net.minecraft.recipe.RecipeInputProvider;
import net.minecraft.recipe.RecipeUnlocker;
import net.minecraft.screen.ScreenHandler;
import net.minecraft.text.Text;
import net.minecraft.util.Tickable;
import net.minecraft.util.math.Direction;
public class EndStoneSmelterBlockEntity extends LockableContainerBlockEntity implements SidedInventory, RecipeUnlocker, RecipeInputProvider, Tickable {
protected EndStoneSmelterBlockEntity(BlockEntityType<?> blockEntityType) {
super(blockEntityType);
}
@Override
public int size() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}
@Override
public ItemStack getStack(int slot) {
// TODO Auto-generated method stub
return null;
}
@Override
public ItemStack removeStack(int slot, int amount) {
// TODO Auto-generated method stub
return null;
}
@Override
public ItemStack removeStack(int slot) {
// TODO Auto-generated method stub
return null;
}
@Override
public void setStack(int slot, ItemStack stack) {
// TODO Auto-generated method stub
}
@Override
public boolean canPlayerUse(PlayerEntity player) {
// TODO Auto-generated method stub
return false;
}
@Override
public void clear() {
// TODO Auto-generated method stub
}
@Override
protected Text getContainerName() {
// TODO Auto-generated method stub
return null;
}
@Override
protected ScreenHandler createScreenHandler(int syncId, PlayerInventory playerInventory) {
// TODO Auto-generated method stub
return null;
}
@Override
public void tick() {
// TODO Auto-generated method stub
}
@Override
public void provideRecipeInputs(RecipeFinder finder) {
// TODO Auto-generated method stub
}
@Override
public void setLastRecipe(Recipe<?> recipe) {
// TODO Auto-generated method stub
}
@Override
public Recipe<?> getLastRecipe() {
// TODO Auto-generated method stub
return null;
}
@Override
public int[] getAvailableSlots(Direction side) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean canInsert(int slot, ItemStack stack, Direction dir) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean canExtract(int slot, ItemStack stack, Direction dir) {
// TODO Auto-generated method stub
return false;
}
}

View file

@ -1,6 +1,7 @@
package ru.betterend.recipe;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.util.registry.Registry;
@ -19,6 +20,14 @@ public class CraftingRecipes {
.setList("#")
.build();
}
if (blockExists(BlockRegistry.END_STONE_SMELTER)) {
RecipeBuilder.make("end_stone_smelter", BlockRegistry.END_STONE_SMELTER)
.setShape(new String[] { "###", "V#V", "###" })
.addMaterial('#', Blocks.END_STONE_BRICKS)
.addMaterial('V', Items.BUCKET)
.build();
}
}
protected static boolean itemExists(Item item) {