Moooooore pedestals!

This commit is contained in:
Aleksey 2020-10-29 16:11:13 +03:00
parent e6cafec945
commit 454fd1439b
41 changed files with 468 additions and 14 deletions

BIN
psd/stones_pillar.psd Normal file

Binary file not shown.

View file

@ -0,0 +1,46 @@
package ru.betterend.blocks;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.block.Block;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import ru.betterend.BetterEnd;
import ru.betterend.blocks.basis.BlockPedestal;
import ru.betterend.interfaces.Patterned;
public class EndPedestal extends BlockPedestal {
public EndPedestal(Block parent) {
super(parent);
}
@Override
public String getModelPattern(String block) {
Identifier blockId = Registry.BLOCK.getId(parent);
String name = blockId.getPath();
Map<String, String> textures = new HashMap<String, String>() {
private static final long serialVersionUID = 1L;
{
put("%mod%", BetterEnd.MOD_ID );
put("%top%", name + "_polished");
put("%base%", name + "_polished");
put("%pillar%", name + "_pillar_side");
put("%bottom%", name + "_polished");
}
};
if (block.contains("column_top")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_COLUMN_TOP, textures);
} else if (block.contains("column")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_COLUMN, textures);
} else if (block.contains("top")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_TOP, textures);
} else if (block.contains("bottom")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_BOTTOM, textures);
} else if (block.contains("pillar")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_PILLAR, textures);
}
return Patterned.createJson(Patterned.PEDESTAL_MODEL_DEFAULT, textures);
}
}

View file

@ -23,6 +23,7 @@ import net.minecraft.world.BlockView;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldAccess;
import net.minecraft.world.explosion.Explosion; import net.minecraft.world.explosion.Explosion;
import ru.betterend.blocks.basis.BlockPedestal; import ru.betterend.blocks.basis.BlockPedestal;
import ru.betterend.blocks.entities.PedestalBlockEntity; import ru.betterend.blocks.entities.PedestalBlockEntity;
import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndBlocks;

View file

@ -0,0 +1,45 @@
package ru.betterend.blocks;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.block.Block;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import ru.betterend.blocks.basis.BlockPedestal;
import ru.betterend.interfaces.Patterned;
public class PedestalVanilla extends BlockPedestal {
public PedestalVanilla(Block parent) {
super(parent);
}
@Override
public String getModelPattern(String block) {
Identifier blockId = Registry.BLOCK.getId(parent);
String name = blockId.getPath().replace("_block", "");
Map<String, String> textures = new HashMap<String, String>() {
private static final long serialVersionUID = 1L;
{
put("%mod%", blockId.getNamespace() );
put("%top%", "polished_" + name);
put("%base%", "polished_" + name);
put("%pillar%", name + "_pillar");
put("%bottom%", "polished_" + name);
}
};
if (block.contains("column_top")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_COLUMN_TOP, textures);
} else if (block.contains("column")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_COLUMN, textures);
} else if (block.contains("top")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_TOP, textures);
} else if (block.contains("bottom")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_BOTTOM, textures);
} else if (block.contains("pillar")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_PILLAR, textures);
}
return Patterned.createJson(Patterned.PEDESTAL_MODEL_DEFAULT, textures);
}
}

View file

@ -1,10 +1,14 @@
package ru.betterend.blocks.basis; package ru.betterend.blocks.basis;
import java.io.Reader;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
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.BlockEntityProvider;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
@ -20,17 +24,21 @@ import net.minecraft.state.property.BooleanProperty;
import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.EnumProperty;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.Identifier;
import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction; import net.minecraft.util.math.Direction;
import net.minecraft.util.registry.Registry;
import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShape;
import net.minecraft.util.shape.VoxelShapes; import net.minecraft.util.shape.VoxelShapes;
import net.minecraft.world.BlockView; import net.minecraft.world.BlockView;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldAccess;
import ru.betterend.blocks.BlockProperties; import ru.betterend.blocks.BlockProperties;
import ru.betterend.blocks.BlockProperties.PedestalState; import ru.betterend.blocks.BlockProperties.PedestalState;
import ru.betterend.blocks.entities.PedestalBlockEntity; import ru.betterend.blocks.entities.PedestalBlockEntity;
import ru.betterend.interfaces.Patterned;
import ru.betterend.util.BlocksHelper; import ru.betterend.util.BlocksHelper;
public class BlockPedestal extends BlockBaseNotFull implements BlockEntityProvider { public class BlockPedestal extends BlockBaseNotFull implements BlockEntityProvider {
@ -44,9 +52,12 @@ public class BlockPedestal extends BlockBaseNotFull implements BlockEntityProvid
private static final VoxelShape SHAPE_COLUMN_TOP; private static final VoxelShape SHAPE_COLUMN_TOP;
private static final VoxelShape SHAPE_BOTTOM; private static final VoxelShape SHAPE_BOTTOM;
protected final Block parent;
public BlockPedestal(Block parent) { public BlockPedestal(Block parent) {
super(FabricBlockSettings.copyOf(parent)); super(FabricBlockSettings.copyOf(parent));
this.setDefaultState(stateManager.getDefaultState().with(STATE, PedestalState.DEFAULT).with(HAS_ITEM, false)); this.setDefaultState(stateManager.getDefaultState().with(STATE, PedestalState.DEFAULT).with(HAS_ITEM, false));
this.parent = parent;
} }
@Override @Override
@ -131,9 +142,9 @@ public class BlockPedestal extends BlockBaseNotFull implements BlockEntityProvid
return state.with(STATE, PedestalState.COLUMN); return state.with(STATE, PedestalState.COLUMN);
} else if (hasPedestalUnder && hasPedestalOver) { } else if (hasPedestalUnder && hasPedestalOver) {
return state.with(STATE, PedestalState.PILLAR); return state.with(STATE, PedestalState.PILLAR);
} else if (hasPedestalUnder && !hasPedestalOver) { } else if (hasPedestalUnder) {
return state.with(STATE, PedestalState.PEDESTAL_TOP); return state.with(STATE, PedestalState.PEDESTAL_TOP);
} else if (hasPedestalOver && !hasPedestalUnder) { } else if (hasPedestalOver) {
return state.with(STATE, PedestalState.BOTTOM); return state.with(STATE, PedestalState.BOTTOM);
} }
return state.with(STATE, PedestalState.DEFAULT); return state.with(STATE, PedestalState.DEFAULT);
@ -260,15 +271,56 @@ public class BlockPedestal extends BlockBaseNotFull implements BlockEntityProvid
return new PedestalBlockEntity(); return new PedestalBlockEntity();
} }
@Override
public String getStatesPattern(Reader data) {
Identifier blockId = Registry.BLOCK.getId(this);
return Patterned.createJson(data, blockId, blockId.getPath());
}
@Override
public String getModelPattern(String block) {
Identifier blockId = Registry.BLOCK.getId(parent);
String name = blockId.getPath();
Map<String, String> textures = new HashMap<String, String>() {
private static final long serialVersionUID = 1L;
{
put("%mod%", blockId.getNamespace() );
put("%top%", name + "_top");
put("%base%", name + "_base");
put("%pillar%", name + "_pillar");
put("%bottom%", name + "_bottom");
}
};
if (block.contains("column_top")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_COLUMN_TOP, textures);
} else if (block.contains("column")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_COLUMN, textures);
} else if (block.contains("top")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_TOP, textures);
} else if (block.contains("bottom")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_BOTTOM, textures);
} else if (block.contains("pillar")) {
return Patterned.createJson(Patterned.PEDESTAL_MODEL_PILLAR, textures);
}
return Patterned.createJson(Patterned.PEDESTAL_MODEL_DEFAULT, textures);
}
@Override
public Identifier statePatternId() {
return Patterned.PEDESTAL_STATES_PATTERN;
}
static { static {
VoxelShape basinUp = Block.createCuboidShape(2, 3, 2, 14, 4, 14); VoxelShape basinUp = Block.createCuboidShape(2, 3, 2, 14, 4, 14);
VoxelShape basinDown = Block.createCuboidShape(0, 0, 0, 16, 3, 16); VoxelShape basinDown = Block.createCuboidShape(0, 0, 0, 16, 3, 16);
VoxelShape basin = VoxelShapes.union(basinDown, basinUp); VoxelShape columnTopUp = Block.createCuboidShape(1, 14, 1, 15, 16, 15);
VoxelShape columnTop = Block.createCuboidShape(1, 14, 1, 15, 16, 15); VoxelShape columnTopDown = Block.createCuboidShape(2, 13, 2, 14, 14, 14);
VoxelShape pedestalTop = Block.createCuboidShape(1, 8, 1, 15, 10, 15); VoxelShape pedestalTop = Block.createCuboidShape(1, 8, 1, 15, 10, 15);
VoxelShape pedestalDefault = Block.createCuboidShape(1, 12, 1, 15, 14, 15); VoxelShape pedestalDefault = Block.createCuboidShape(1, 12, 1, 15, 14, 15);
VoxelShape pillar = Block.createCuboidShape(3, 0, 3, 13, 8, 13); VoxelShape pillar = Block.createCuboidShape(3, 0, 3, 13, 8, 13);
VoxelShape pillarDefault = Block.createCuboidShape(3, 0, 3, 13, 12, 13); VoxelShape pillarDefault = Block.createCuboidShape(3, 0, 3, 13, 12, 13);
VoxelShape columnTop = VoxelShapes.union(columnTopDown, columnTopUp);
VoxelShape basin = VoxelShapes.union(basinDown, basinUp);
SHAPE_PILLAR = Block.createCuboidShape(3, 0, 3, 13, 16, 13); SHAPE_PILLAR = Block.createCuboidShape(3, 0, 3, 13, 16, 13);
SHAPE_DEFAULT = VoxelShapes.union(basin, pillarDefault, pedestalDefault); SHAPE_DEFAULT = VoxelShapes.union(basin, pillarDefault, pedestalDefault);
SHAPE_PEDESTAL_TOP = VoxelShapes.union(pillar, pedestalTop); SHAPE_PEDESTAL_TOP = VoxelShapes.union(pillar, pedestalTop);

View file

@ -6,6 +6,7 @@ import net.minecraft.block.Blocks;
import net.minecraft.block.MaterialColor; import net.minecraft.block.MaterialColor;
import net.minecraft.tag.BlockTags; import net.minecraft.tag.BlockTags;
import net.minecraft.tag.ItemTags; import net.minecraft.tag.ItemTags;
import ru.betterend.blocks.EndPedestal;
import ru.betterend.blocks.basis.BlockBase; import ru.betterend.blocks.basis.BlockBase;
import ru.betterend.blocks.basis.BlockPillar; import ru.betterend.blocks.basis.BlockPillar;
import ru.betterend.blocks.basis.BlockSlab; import ru.betterend.blocks.basis.BlockSlab;
@ -28,6 +29,7 @@ public class StoneMaterial {
public final Block wall; public final Block wall;
public final Block button; public final Block button;
public final Block pressure_plate; public final Block pressure_plate;
public final Block pedestal;
public final Block bricks; public final Block bricks;
public final Block brick_stairs; public final Block brick_stairs;
@ -46,6 +48,7 @@ public class StoneMaterial {
wall = EndBlocks.registerBlock(name + "_wall", new BlockWall(stone)); wall = EndBlocks.registerBlock(name + "_wall", new BlockWall(stone));
button = EndBlocks.registerBlock(name + "_button", new BlockStoneButton(stone)); button = EndBlocks.registerBlock(name + "_button", new BlockStoneButton(stone));
pressure_plate = EndBlocks.registerBlock(name + "_plate", new BlockStonePressurePlate(stone)); pressure_plate = EndBlocks.registerBlock(name + "_plate", new BlockStonePressurePlate(stone));
pedestal = EndBlocks.registerBlock(name + "_pedestal", new EndPedestal(stone));
bricks = EndBlocks.registerBlock(name + "_bricks", new BlockBase(material)); bricks = EndBlocks.registerBlock(name + "_bricks", new BlockBase(material));
brick_stairs = EndBlocks.registerBlock(name + "_bricks_stairs", new BlockStairs(bricks)); brick_stairs = EndBlocks.registerBlock(name + "_bricks_stairs", new BlockStairs(bricks));
@ -57,6 +60,7 @@ public class StoneMaterial {
GridRecipe.make(name + "_polished", polished).setOutputCount(4).setShape("##", "##").addMaterial('#', bricks).setGroup("end_tile").build(); GridRecipe.make(name + "_polished", polished).setOutputCount(4).setShape("##", "##").addMaterial('#', bricks).setGroup("end_tile").build();
GridRecipe.make(name + "_tiles", tiles).setOutputCount(4).setShape("##", "##").addMaterial('#', polished).setGroup("end_small_tile").build(); GridRecipe.make(name + "_tiles", tiles).setOutputCount(4).setShape("##", "##").addMaterial('#', polished).setGroup("end_small_tile").build();
GridRecipe.make(name + "_pillar", pillar).setShape("#", "#").addMaterial('#', slab).setGroup("end_pillar").build(); GridRecipe.make(name + "_pillar", pillar).setShape("#", "#").addMaterial('#', slab).setGroup("end_pillar").build();
GridRecipe.make(name + "_pedestal", pedestal).setOutputCount(2).setShape("S", "#", "S").addMaterial('S', slab).addMaterial('#', pillar).setGroup("end_pedestal").build();
GridRecipe.make(name + "_stairs", stairs).setOutputCount(4).setShape("# ", "## ", "###").addMaterial('#', stone).setGroup("end_stone_stairs").build(); GridRecipe.make(name + "_stairs", stairs).setOutputCount(4).setShape("# ", "## ", "###").addMaterial('#', stone).setGroup("end_stone_stairs").build();
GridRecipe.make(name + "_slab", slab).setOutputCount(6).setShape("###").addMaterial('#', stone).setGroup("end_stone_slabs").build(); GridRecipe.make(name + "_slab", slab).setOutputCount(6).setShape("###").addMaterial('#', stone).setGroup("end_stone_slabs").build();

View file

@ -16,7 +16,7 @@ public class PedestalBlockEntity extends BlockEntity implements Inventory, Ticka
private int age; private int age;
public PedestalBlockEntity() { public PedestalBlockEntity() {
super(EndBlockEntities.ETERNAL_PEDESTAL); super(EndBlockEntities.PEDESTAL);
} }
public int getAge() { public int getAge() {

View file

@ -12,11 +12,14 @@ import net.minecraft.client.render.block.entity.BlockEntityRenderer;
import net.minecraft.client.render.model.json.ModelTransformation; import net.minecraft.client.render.model.json.ModelTransformation;
import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.Vector3f; import net.minecraft.client.util.math.Vector3f;
import net.minecraft.item.BlockItem;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.DyeColor; import net.minecraft.util.DyeColor;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import ru.betterend.blocks.BlockProperties.PedestalState;
import ru.betterend.blocks.EternalPedestal; import ru.betterend.blocks.EternalPedestal;
import ru.betterend.blocks.basis.BlockPedestal;
import ru.betterend.blocks.entities.PedestalBlockEntity; import ru.betterend.blocks.entities.PedestalBlockEntity;
import ru.betterend.client.render.BeamRenderer; import ru.betterend.client.render.BeamRenderer;
import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndBlocks;
@ -38,19 +41,29 @@ public class PedestalItemRenderer extends BlockEntityRenderer<PedestalBlockEntit
BlockState state = blockEntity.getWorld().getBlockState(blockEntity.getPos()); BlockState state = blockEntity.getWorld().getBlockState(blockEntity.getPos());
ItemStack activeItem = blockEntity.getStack(0); ItemStack activeItem = blockEntity.getStack(0);
matrices.push(); matrices.push();
matrices.translate(0.5, 1.1, 0.5); if (state.get(BlockPedestal.STATE) == PedestalState.DEFAULT) {
matrices.translate(0.5, 1.0, 0.5);
} else {
matrices.translate(0.5, 0.8, 0.5);
}
if (activeItem.getItem() instanceof BlockItem) {
matrices.scale(1.5F, 1.5F, 1.5F);
} else {
matrices.scale(1.15F, 1.15F, 1.15F);
}
float rotation = (blockEntity.getAge() + tickDelta) / 25.0F + 6.0F; float rotation = (blockEntity.getAge() + tickDelta) / 25.0F + 6.0F;
float altitude = MathHelper.sin((blockEntity.getAge() + tickDelta) / 10.0F) * 0.1F;
matrices.translate(0.0D, altitude, 0.0D);
matrices.multiply(Vector3f.POSITIVE_Y.getRadialQuaternion(rotation)); matrices.multiply(Vector3f.POSITIVE_Y.getRadialQuaternion(rotation));
MinecraftClient minecraft = MinecraftClient.getInstance(); MinecraftClient minecraft = MinecraftClient.getInstance();
minecraft.getItemRenderer().renderItem(activeItem, ModelTransformation.Mode.GROUND, light, overlay, matrices, vertexConsumers);
if (state.isOf(EndBlocks.ETERNAL_PEDESTAL) && state.get(EternalPedestal.ACTIVATED)) { if (state.isOf(EndBlocks.ETERNAL_PEDESTAL) && state.get(EternalPedestal.ACTIVATED)) {
float altitude = MathHelper.sin((blockEntity.getAge() + tickDelta) / 10.0F) * 0.1F + 0.1F;
matrices.translate(0.0D, altitude, 0.0D);
float[] colors = DyeColor.MAGENTA.getColorComponents(); float[] colors = DyeColor.MAGENTA.getColorComponents();
int y = blockEntity.getPos().getY(); int y = blockEntity.getPos().getY();
VertexConsumer vertexConsumer = vertexConsumers.getBuffer(RenderLayer.getBeaconBeam(BEAM_TEXTURE, true)); VertexConsumer vertexConsumer = vertexConsumers.getBuffer(RenderLayer.getBeaconBeam(BEAM_TEXTURE, true));
BeamRenderer.renderLightBeam(matrices, vertexConsumer, tickDelta, -y, 1024 - y, colors, 0.25F, 0.15F, 0.2F); BeamRenderer.renderLightBeam(matrices, vertexConsumer, tickDelta, -y, 1024 - y, colors, 0.25F, 0.15F, 0.2F);
} }
minecraft.getItemRenderer().renderItem(activeItem, ModelTransformation.Mode.GROUND, light, overlay, matrices, vertexConsumers);
matrices.pop(); matrices.pop();
} }
} }

View file

@ -30,6 +30,7 @@ public interface Patterned {
public final static Identifier TRAPDOOR_STATES_PATTERN = BetterEnd.makeID("patterns/blockstate/pattern_trapdoor.json"); public final static Identifier TRAPDOOR_STATES_PATTERN = BetterEnd.makeID("patterns/blockstate/pattern_trapdoor.json");
public final static Identifier LADDER_STATES_PATTERN = BetterEnd.makeID("patterns/blockstate/pattern_ladder.json"); public final static Identifier LADDER_STATES_PATTERN = BetterEnd.makeID("patterns/blockstate/pattern_ladder.json");
public final static Identifier BARREL_STATES_PATTERN = BetterEnd.makeID("patterns/blockstate/pattern_barrel.json"); public final static Identifier BARREL_STATES_PATTERN = BetterEnd.makeID("patterns/blockstate/pattern_barrel.json");
public final static Identifier PEDESTAL_STATES_PATTERN = BetterEnd.makeID("patterns/blockstate/pattern_pedestal.json");
//Models Block //Models Block
public final static Identifier EMPTY_MODEL = BetterEnd.makeID("patterns/block/pattern_empty.json"); public final static Identifier EMPTY_MODEL = BetterEnd.makeID("patterns/block/pattern_empty.json");
@ -62,6 +63,12 @@ public interface Patterned {
public final static Identifier TRAPDOOR_MODEL = BetterEnd.makeID("patterns/block/pattern_trapdoor.json"); public final static Identifier TRAPDOOR_MODEL = BetterEnd.makeID("patterns/block/pattern_trapdoor.json");
public final static Identifier LADDER_MODEL = BetterEnd.makeID("patterns/block/pattern_ladder.json"); public final static Identifier LADDER_MODEL = BetterEnd.makeID("patterns/block/pattern_ladder.json");
public final static Identifier BARREL_MODEL_OPEN = BetterEnd.makeID("patterns/block/pattern_barrel_open.json"); public final static Identifier BARREL_MODEL_OPEN = BetterEnd.makeID("patterns/block/pattern_barrel_open.json");
public final static Identifier PEDESTAL_MODEL_DEFAULT = BetterEnd.makeID("patterns/block/pattern_pedestal_default.json");
public final static Identifier PEDESTAL_MODEL_COLUMN = BetterEnd.makeID("patterns/block/pattern_pedestal_column.json");
public final static Identifier PEDESTAL_MODEL_COLUMN_TOP = BetterEnd.makeID("patterns/block/pattern_pedestal_column_top.json");
public final static Identifier PEDESTAL_MODEL_TOP = BetterEnd.makeID("patterns/block/pattern_pedestal_top.json");
public final static Identifier PEDESTAL_MODEL_BOTTOM = BetterEnd.makeID("patterns/block/pattern_pedestal_bottom.json");
public final static Identifier PEDESTAL_MODEL_PILLAR = BetterEnd.makeID("patterns/block/pattern_pedestal_pillar.json");
//Models Item //Models Item
public final static Identifier WALL_ITEM_MODEL = BetterEnd.makeID("patterns/item/pattern_wall.json"); public final static Identifier WALL_ITEM_MODEL = BetterEnd.makeID("patterns/item/pattern_wall.json");

View file

@ -26,6 +26,37 @@ public class CraftingRecipes {
.addMaterial('V', Items.BUCKET) .addMaterial('V', Items.BUCKET)
.build(); .build();
GridRecipe.make("andesite_pedestal", EndBlocks.ANDESITE_PEDESTAL)
.setShape(new String[] { "S", "#", "S" })
.addMaterial('S', Blocks.POLISHED_ANDESITE_SLAB)
.addMaterial('#', Blocks.POLISHED_ANDESITE)
.setOutputCount(2)
.build();
GridRecipe.make("diorite_pedestal", EndBlocks.DIORITE_PEDESTAL)
.setShape(new String[] { "S", "#", "S" })
.addMaterial('S', Blocks.POLISHED_DIORITE_SLAB)
.addMaterial('#', Blocks.POLISHED_DIORITE)
.setOutputCount(2)
.build();
GridRecipe.make("granite_pedestal", EndBlocks.GRANITE_PEDESTAL)
.setShape(new String[] { "S", "#", "S" })
.addMaterial('S', Blocks.POLISHED_GRANITE_SLAB)
.addMaterial('#', Blocks.POLISHED_GRANITE)
.setOutputCount(2)
.build();
GridRecipe.make("quartz_pedestal", EndBlocks.QUARTZ_PEDESTAL)
.setShape(new String[] { "S", "#", "S" })
.addMaterial('S', Blocks.QUARTZ_SLAB)
.addMaterial('#', Blocks.QUARTZ_PILLAR)
.setOutputCount(2)
.build();
GridRecipe.make("purpur_pedestal", EndBlocks.PURPUR_PEDESTAL)
.setShape(new String[] { "S", "#", "S" })
.addMaterial('S', Blocks.PURPUR_SLAB)
.addMaterial('#', Blocks.PURPUR_PILLAR)
.setOutputCount(2)
.build();
String material = "terminite"; String material = "terminite";
GridRecipe.make(material + "_block", EndBlocks.TERMINITE_BLOCK) GridRecipe.make(material + "_block", EndBlocks.TERMINITE_BLOCK)
.setShape(new String[] { "III", "III", "III" }) .setShape(new String[] { "III", "III", "III" })

View file

@ -13,6 +13,7 @@ import ru.betterend.BetterEnd;
import ru.betterend.blocks.EndStoneSmelter; import ru.betterend.blocks.EndStoneSmelter;
import ru.betterend.blocks.basis.BlockBarrel; import ru.betterend.blocks.basis.BlockBarrel;
import ru.betterend.blocks.basis.BlockChest; import ru.betterend.blocks.basis.BlockChest;
import ru.betterend.blocks.basis.BlockPedestal;
import ru.betterend.blocks.basis.BlockSign; import ru.betterend.blocks.basis.BlockSign;
import ru.betterend.blocks.entities.EBarrelBlockEntity; import ru.betterend.blocks.entities.EBarrelBlockEntity;
import ru.betterend.blocks.entities.EChestBlockEntity; import ru.betterend.blocks.entities.EChestBlockEntity;
@ -23,8 +24,8 @@ import ru.betterend.blocks.entities.PedestalBlockEntity;
public class EndBlockEntities { public class EndBlockEntities {
public final static BlockEntityType<EndStoneSmelterBlockEntity> END_STONE_SMELTER = registerBlockEntity(EndStoneSmelter.ID, public final static BlockEntityType<EndStoneSmelterBlockEntity> END_STONE_SMELTER = registerBlockEntity(EndStoneSmelter.ID,
BlockEntityType.Builder.create(EndStoneSmelterBlockEntity::new, EndBlocks.END_STONE_SMELTER)); BlockEntityType.Builder.create(EndStoneSmelterBlockEntity::new, EndBlocks.END_STONE_SMELTER));
public final static BlockEntityType<PedestalBlockEntity> ETERNAL_PEDESTAL = registerBlockEntity("eternal_pedestal", public final static BlockEntityType<PedestalBlockEntity> PEDESTAL = registerBlockEntity("pedestal",
BlockEntityType.Builder.create(PedestalBlockEntity::new, EndBlocks.ETERNAL_PEDESTAL)); BlockEntityType.Builder.create(PedestalBlockEntity::new, getPedestals()));
public static final BlockEntityType<EChestBlockEntity> CHEST = registerBlockEntity("chest", public static final BlockEntityType<EChestBlockEntity> CHEST = registerBlockEntity("chest",
BlockEntityType.Builder.create(EChestBlockEntity::new, getChests())); BlockEntityType.Builder.create(EChestBlockEntity::new, getChests()));
public static final BlockEntityType<EBarrelBlockEntity> BARREL = registerBlockEntity("barrel", public static final BlockEntityType<EBarrelBlockEntity> BARREL = registerBlockEntity("barrel",
@ -76,4 +77,17 @@ public class EndBlockEntities {
}); });
return result.toArray(new Block[] {}); return result.toArray(new Block[] {});
} }
static Block[] getPedestals() {
List<Block> result = Lists.newArrayList();
EndItems.getModBlocks().forEach((item) -> {
if (item instanceof BlockItem) {
Block block = ((BlockItem) item).getBlock();
if (block instanceof BlockPedestal) {
result.add(block);
}
}
});
return result.toArray(new Block[] {});
}
} }

View file

@ -12,6 +12,6 @@ public class EndBlockEntityRenders {
public static void register() { public static void register() {
BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.CHEST, EChestBlockEntityRenderer::new); BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.CHEST, EChestBlockEntityRenderer::new);
BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.SIGN, ESignBlockEntityRenderer::new); BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.SIGN, ESignBlockEntityRenderer::new);
BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.ETERNAL_PEDESTAL, PedestalItemRenderer::new); BlockEntityRendererRegistry.INSTANCE.register(EndBlockEntities.PEDESTAL, PedestalItemRenderer::new);
} }
} }

View file

@ -1,6 +1,7 @@
package ru.betterend.registry; package ru.betterend.registry;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.block.MaterialColor; import net.minecraft.block.MaterialColor;
import net.minecraft.item.BlockItem; import net.minecraft.item.BlockItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@ -37,6 +38,7 @@ import ru.betterend.blocks.EndStoneSmelter;
import ru.betterend.blocks.EnderBlock; import ru.betterend.blocks.EnderBlock;
import ru.betterend.blocks.EternalPedestal; import ru.betterend.blocks.EternalPedestal;
import ru.betterend.blocks.EternalRunedFlavolite; import ru.betterend.blocks.EternalRunedFlavolite;
import ru.betterend.blocks.PedestalVanilla;
import ru.betterend.blocks.RunedFlavolite; import ru.betterend.blocks.RunedFlavolite;
import ru.betterend.blocks.TerminiteBlock; import ru.betterend.blocks.TerminiteBlock;
import ru.betterend.blocks.basis.BlockGlowingFur; import ru.betterend.blocks.basis.BlockGlowingFur;
@ -68,6 +70,11 @@ public class EndBlocks {
public static final StoneMaterial VIOLECITE = new StoneMaterial("violecite", MaterialColor.PURPLE); public static final StoneMaterial VIOLECITE = new StoneMaterial("violecite", MaterialColor.PURPLE);
public static final Block FLAVOLITE_RUNED = registerBlock("flavolite_runed", new RunedFlavolite()); public static final Block FLAVOLITE_RUNED = registerBlock("flavolite_runed", new RunedFlavolite());
public static final Block FLAVOLITE_RUNED_ETERNAL = registerBlock("flavolite_runed_eternal", new EternalRunedFlavolite()); public static final Block FLAVOLITE_RUNED_ETERNAL = registerBlock("flavolite_runed_eternal", new EternalRunedFlavolite());
public static final Block ANDESITE_PEDESTAL = registerBlock("andesite_pedestal", new PedestalVanilla(Blocks.ANDESITE));
public static final Block DIORITE_PEDESTAL = registerBlock("diorite_pedestal", new PedestalVanilla(Blocks.DIORITE));
public static final Block GRANITE_PEDESTAL = registerBlock("granite_pedestal", new PedestalVanilla(Blocks.GRANITE));
public static final Block QUARTZ_PEDESTAL = registerBlock("quartz_pedestal", new PedestalVanilla(Blocks.QUARTZ_BLOCK));
public static final Block PURPUR_PEDESTAL = registerBlock("purpur_pedestal", new PedestalVanilla(Blocks.PURPUR_BLOCK));
// Wooden Materials // // Wooden Materials //
public static final Block MOSSY_GLOWSHROOM_SAPLING = registerBlock("mossy_glowshroom_sapling", new BlockMossyGlowshroomSapling()); public static final Block MOSSY_GLOWSHROOM_SAPLING = registerBlock("mossy_glowshroom_sapling", new BlockMossyGlowshroomSapling());

View file

@ -0,0 +1,22 @@
{
"variants": {
"state=default": {
"model": "betterend:block/purpur_pedestal_default"
},
"state=column": {
"model": "betterend:block/purpur_pedestal_column"
},
"state=column_top": {
"model": "betterend:block/purpur_pedestal_column_top"
},
"state=pedestal_top": {
"model": "betterend:block/purpur_pedestal_top"
},
"state=bottom": {
"model": "betterend:block/purpur_pedestal_bottom"
},
"state=pillar": {
"model": "betterend:block/purpur_pedestal_pillar"
}
}
}

View file

@ -0,0 +1,22 @@
{
"variants": {
"state=default": {
"model": "betterend:block/quartz_pedestal_default"
},
"state=column": {
"model": "betterend:block/quartz_pedestal_column"
},
"state=column_top": {
"model": "betterend:block/quartz_pedestal_column_top"
},
"state=pedestal_top": {
"model": "betterend:block/quartz_pedestal_top"
},
"state=bottom": {
"model": "betterend:block/quartz_pedestal_bottom"
},
"state=pillar": {
"model": "betterend:block/quartz_pedestal_pillar"
}
}
}

View file

@ -32,7 +32,7 @@
{ {
"__comment": "pillar", "__comment": "pillar",
"from": [ 3, 4, 3 ], "from": [ 3, 4, 3 ],
"to": [ 13, 14, 13 ], "to": [ 13, 13, 13 ],
"faces": { "faces": {
"north": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" }, "north": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" },
"south": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" }, "south": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" },
@ -40,6 +40,18 @@
"east": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" } "east": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" }
} }
}, },
{
"__comment": "top",
"from": [ 2, 13, 2 ],
"to": [ 14, 14, 14 ],
"faces": {
"down": { "uv": [ 2, 2, 14, 14 ], "texture": "#base" },
"north": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" },
"south": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" },
"west": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" },
"east": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }
}
},
{ {
"__comment": "top", "__comment": "top",
"from": [ 1, 14, 1 ], "from": [ 1, 14, 1 ],

View file

@ -7,7 +7,7 @@
{ {
"__comment": "pillar", "__comment": "pillar",
"from": [ 3, 0, 3 ], "from": [ 3, 0, 3 ],
"to": [ 13, 14, 13 ], "to": [ 13, 13, 13 ],
"faces": { "faces": {
"north": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" }, "north": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" },
"south": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" }, "south": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" },
@ -15,6 +15,18 @@
"east": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" } "east": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" }
} }
}, },
{
"__comment": "top",
"from": [ 2, 13, 2 ],
"to": [ 14, 14, 14 ],
"faces": {
"down": { "uv": [ 2, 2, 14, 14 ], "texture": "#base" },
"north": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" },
"south": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" },
"west": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" },
"east": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }
}
},
{ {
"__comment": "top", "__comment": "top",
"from": [ 1, 14, 1 ], "from": [ 1, 14, 1 ],

View file

@ -0,0 +1,8 @@
{
"parent": "betterend:block/pedestal_bottom",
"textures": {
"base": "minecraft:block/purpur_block",
"pillar": "minecraft:block/purpur_pillar",
"bottom": "minecraft:block/purpur_block"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "betterend:block/pedestal_column",
"textures": {
"base": "minecraft:block/purpur_block",
"pillar": "minecraft:block/purpur_pillar",
"bottom": "minecraft:block/purpur_block"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "betterend:block/pedestal_column_top",
"textures": {
"base": "minecraft:block/purpur_block",
"pillar": "minecraft:block/purpur_pillar"
}
}

View file

@ -0,0 +1,9 @@
{
"parent": "betterend:block/pedestal_default",
"textures": {
"top": "minecraft:block/purpur_pillar_top",
"base": "minecraft:block/purpur_block",
"pillar": "minecraft:block/purpur_pillar",
"bottom": "minecraft:block/purpur_block"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "betterend:block/pedestal_pillar",
"textures": {
"pillar": "minecraft:block/purpur_pillar"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "betterend:block/pedestal_top",
"textures": {
"top": "minecraft:block/purpur_pillar_top",
"base": "minecraft:block/purpur_block",
"pillar": "minecraft:block/purpur_pillar"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "betterend:block/pedestal_bottom",
"textures": {
"base": "minecraft:block/quartz_block_side",
"pillar": "minecraft:block/quartz_pillar",
"bottom": "minecraft:block/quartz_block_bottom"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "betterend:block/pedestal_column",
"textures": {
"base": "minecraft:block/quartz_block_side",
"pillar": "minecraft:block/quartz_pillar",
"bottom": "minecraft:block/quartz_block_bottom"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "betterend:block/pedestal_column_top",
"textures": {
"base": "minecraft:block/quartz_block_side",
"pillar": "minecraft:block/quartz_pillar"
}
}

View file

@ -0,0 +1,9 @@
{
"parent": "betterend:block/pedestal_default",
"textures": {
"top": "minecraft:block/quartz_pillar_top",
"base": "minecraft:block/quartz_block_side",
"pillar": "minecraft:block/quartz_pillar",
"bottom": "minecraft:block/quartz_block_bottom"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "betterend:block/pedestal_pillar",
"textures": {
"pillar": "minecraft:block/quartz_pillar"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "betterend:block/pedestal_top",
"textures": {
"top": "minecraft:block/quartz_pillar_top",
"base": "minecraft:block/quartz_block_side",
"pillar": "minecraft:block/quartz_pillar"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "betterend:block/purpur_pedestal_default"
}

View file

@ -0,0 +1,3 @@
{
"parent": "betterend:block/quartz_pedestal_default"
}

View file

@ -0,0 +1,8 @@
{
"parent": "betterend:block/pedestal_bottom",
"textures": {
"base": "%mod%:block/%base%",
"pillar": "%mod%:block/%pillar%",
"bottom": "%mod%:block/%bottom%"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "betterend:block/pedestal_column",
"textures": {
"base": "%mod%:block/%base%",
"pillar": "%mod%:block/%pillar%",
"bottom": "%mod%:block/%bottom%"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "betterend:block/pedestal_column_top",
"textures": {
"base": "%mod%:block/%base%",
"pillar": "%mod%:block/%pillar%"
}
}

View file

@ -0,0 +1,9 @@
{
"parent": "betterend:block/pedestal_default",
"textures": {
"top": "%mod%:block/%top%",
"base": "%mod%:block/%base%",
"pillar": "%mod%:block/%pillar%",
"bottom": "%mod%:block/%bottom%"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "betterend:block/pedestal_pillar",
"textures": {
"pillar": "%mod%:block/%pillar%"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "betterend:block/pedestal_top",
"textures": {
"top": "%mod%:block/%top%",
"base": "%mod%:block/%base%",
"pillar": "%mod%:block/%pillar%"
}
}

View file

@ -0,0 +1,22 @@
{
"variants": {
"state=default": {
"model": "betterend:pattern/%block%/%block%_default"
},
"state=column": {
"model": "betterend:pattern/%block%/%block%_column"
},
"state=column_top": {
"model": "betterend:pattern/%block%/%block%_column_top"
},
"state=pedestal_top": {
"model": "betterend:pattern/%block%/%block%_top"
},
"state=bottom": {
"model": "betterend:pattern/%block%/%block%_bottom"
},
"state=pillar": {
"model": "betterend:pattern/%block%/%block%_pillar"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 B