EndStoneSmelter block
28
src/main/java/ru/betterend/blocks/BaseBlockWithEntity.java
Normal file
|
@ -0,0 +1,28 @@
|
|||
package ru.betterend.blocks;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.BlockWithEntity;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.context.LootContext;
|
||||
import net.minecraft.world.BlockView;
|
||||
|
||||
public class BaseBlockWithEntity extends BlockWithEntity {
|
||||
|
||||
public BaseBlockWithEntity(Settings settings) {
|
||||
super(settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockEntity createBlockEntity(BlockView world) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, LootContext.Builder builder) {
|
||||
return Collections.singletonList(new ItemStack(this));
|
||||
}
|
||||
}
|
104
src/main/java/ru/betterend/blocks/EndStoneSmelter.java
Normal file
|
@ -0,0 +1,104 @@
|
|||
package ru.betterend.blocks;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
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;
|
||||
import net.minecraft.block.HorizontalFacingBlock;
|
||||
import net.minecraft.block.Material;
|
||||
import net.minecraft.block.MaterialColor;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
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.screen.ScreenHandler;
|
||||
import net.minecraft.sound.BlockSoundGroup;
|
||||
import net.minecraft.state.StateManager;
|
||||
import net.minecraft.state.property.BooleanProperty;
|
||||
import net.minecraft.state.property.DirectionProperty;
|
||||
import net.minecraft.state.property.Properties;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.BlockMirror;
|
||||
import net.minecraft.util.BlockRotation;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Direction;
|
||||
import net.minecraft.world.BlockView;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EndStoneSmelter extends BaseBlockWithEntity {
|
||||
public static final DirectionProperty FACING = HorizontalFacingBlock.FACING;
|
||||
public static final BooleanProperty LIT = Properties.LIT;
|
||||
|
||||
public EndStoneSmelter() {
|
||||
super(FabricBlockSettings.of(Material.STONE, MaterialColor.GRAY)
|
||||
.hardness(4F)
|
||||
.resistance(100F)
|
||||
.requiresTool()
|
||||
.sounds(BlockSoundGroup.STONE));
|
||||
this.setDefaultState(this.stateManager.getDefaultState()
|
||||
.with(FACING, Direction.NORTH)
|
||||
.with(LIT, false));
|
||||
}
|
||||
|
||||
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) {
|
||||
if (world.isClient) {
|
||||
return ActionResult.SUCCESS;
|
||||
} else {
|
||||
this.openScreen(world, pos, player);
|
||||
return ActionResult.CONSUME;
|
||||
}
|
||||
}
|
||||
|
||||
private void openScreen(World world, BlockPos pos, PlayerEntity player) {}
|
||||
|
||||
@Override
|
||||
public BlockState getPlacementState(ItemPlacementContext ctx) {
|
||||
return this.getDefaultState().with(FACING, ctx.getPlayerFacing().getOpposite());
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockEntity createBlockEntity(BlockView world) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDroppedStacks(BlockState state, LootContext.Builder builder) {
|
||||
return Collections.singletonList(new ItemStack(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasComparatorOutput(BlockState state) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getComparatorOutput(BlockState state, World world, BlockPos pos) {
|
||||
return ScreenHandler.calculateComparatorOutput(world.getBlockEntity(pos));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockRenderType getRenderType(BlockState state) {
|
||||
return BlockRenderType.MODEL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState rotate(BlockState state, BlockRotation rotation) {
|
||||
return (BlockState)state.with(FACING, rotation.rotate((Direction)state.get(FACING)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState mirror(BlockState state, BlockMirror mirror) {
|
||||
return state.rotate(mirror.getRotation((Direction)state.get(FACING)));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
|
||||
builder.add(FACING, LIT);
|
||||
}
|
||||
}
|
|
@ -9,11 +9,11 @@ import ru.betterend.registry.BlockRegistry;
|
|||
public class CraftingRecipes {
|
||||
public static void register() {
|
||||
if (blockExists(BlockRegistry.ENDER_BLOCK)) {
|
||||
RecipeBuilder.make("be_ender_pearl_to_block", BlockRegistry.ENDER_BLOCK)
|
||||
RecipeBuilder.make("ender_pearl_to_block", BlockRegistry.ENDER_BLOCK)
|
||||
.setShape(new String[] { "OO", "OO" })
|
||||
.addMaterial('O', Items.ENDER_PEARL)
|
||||
.build();
|
||||
RecipeBuilder.make("be_ender_block_to_pearl", Items.ENDER_PEARL)
|
||||
RecipeBuilder.make("ender_block_to_pearl", Items.ENDER_PEARL)
|
||||
.addMaterial('#', BlockRegistry.ENDER_BLOCK)
|
||||
.setOutputCount(4)
|
||||
.setList("#")
|
||||
|
|
|
@ -11,6 +11,7 @@ import ru.betterend.blocks.AeterniumBlock;
|
|||
import ru.betterend.blocks.BlockEndstoneDust;
|
||||
import ru.betterend.blocks.BlockOre;
|
||||
import ru.betterend.blocks.BlockTerrain;
|
||||
import ru.betterend.blocks.EndStoneSmelter;
|
||||
import ru.betterend.blocks.EnderBlock;
|
||||
import ru.betterend.blocks.TerminiteBlock;
|
||||
import ru.betterend.tab.CreativeTab;
|
||||
|
@ -29,6 +30,9 @@ public class BlockRegistry {
|
|||
public static final Block AETERNIUM_BLOCK = registerBlock("aeternium_block", new AeterniumBlock());
|
||||
public static final Block ENDER_BLOCK = registerBlock("ender_block", new EnderBlock());
|
||||
|
||||
// BlockEntities //
|
||||
public static final Block END_STONE_SMELTER = registerBlock("end_stone_smelter", new EndStoneSmelter());
|
||||
|
||||
public static void register() {}
|
||||
|
||||
private static Block registerBlock(String name, Block block) {
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=east,lit=false": {
|
||||
"model": "betterend:block/end_stone_smelter",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,lit=true": {
|
||||
"model": "betterend:block/end_stone_smelter_on",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,lit=false": {
|
||||
"model": "betterend:block/end_stone_smelter"
|
||||
},
|
||||
"facing=north,lit=true": {
|
||||
"model": "betterend:block/end_stone_smelter_on"
|
||||
},
|
||||
"facing=south,lit=false": {
|
||||
"model": "betterend:block/end_stone_smelter",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,lit=true": {
|
||||
"model": "betterend:block/end_stone_smelter_on",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,lit=false": {
|
||||
"model": "betterend:block/end_stone_smelter",
|
||||
"y": 270
|
||||
},
|
||||
"facing=west,lit=true": {
|
||||
"model": "betterend:block/end_stone_smelter_on",
|
||||
"y": 270
|
||||
}
|
||||
}
|
||||
}
|
|
@ -8,6 +8,7 @@
|
|||
"block.betterend.terminite_block": "Terminite Block",
|
||||
"block.betterend.aeternium_block": "Aeternium Block",
|
||||
"block.betterend.ender_block": "Ender Block",
|
||||
"block.betterend.end_stone_smelter": "End Stone Smelter",
|
||||
|
||||
"item.betterend.ender_dust": "Ender Dust",
|
||||
"item.betterend.terminite_ingot": "Terminite Ingot",
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"block.betterend.terminite_block": "Блок Терминита",
|
||||
"block.betterend.aeternium_block": "Блок Этерия",
|
||||
"block.betterend.ender_block": "Блок Края",
|
||||
"block.betterend.end_stone_smelter": "Плавильня из камня Края",
|
||||
|
||||
"item.betterend.ender_dust": "Пыль Края",
|
||||
"item.betterend.terminite_ingot": "Терминитовый слиток",
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"parent": "minecraft:block/orientable",
|
||||
"textures": {
|
||||
"top": "betterend:block/end_stone_smelter_top",
|
||||
"front": "betterend:block/end_stone_smelter_front",
|
||||
"side": "betterend:block/end_stone_smelter_side"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"parent": "minecraft:block/orientable",
|
||||
"textures": {
|
||||
"top": "betterend:block/end_stone_smelter_top",
|
||||
"front": "betterend:block/end_stone_smelter_front_on",
|
||||
"side": "betterend:block/end_stone_smelter_side"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "betterend:block/end_stone_smelter"
|
||||
}
|
Before Width: | Height: | Size: 609 B After Width: | Height: | Size: 740 B |
Before Width: | Height: | Size: 685 B After Width: | Height: | Size: 1,016 B |
|
@ -1,6 +1,12 @@
|
|||
{
|
||||
"animation": {
|
||||
"interpolate": true,
|
||||
"frametime": 10
|
||||
"frametime": 8,
|
||||
"frames": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 623 B After Width: | Height: | Size: 658 B |
Before Width: | Height: | Size: 632 B After Width: | Height: | Size: 637 B |