making the BlockBreaker

This commit is contained in:
Mohammad-Ali Minaie
2017-04-10 00:24:01 -04:00
parent 7cd14f9fed
commit 799ed5a3b6
17 changed files with 1029 additions and 28 deletions

View File

@@ -1,12 +0,0 @@
package nmd.primal.forgecraft.api;
import net.minecraft.util.SoundEvent;
/**
* Created by mminaie on 3/24/17.
*/
public class ForgecraftSounds {
}

View File

@@ -36,6 +36,8 @@ import nmd.primal.forgecraft.items.ForgeHammer;
import nmd.primal.forgecraft.items.parts.ToolPart;
import nmd.primal.forgecraft.tiles.TileAnvil;
import java.util.concurrent.ThreadLocalRandom;
/**
* Created by mminaie on 3/4/17.
*/
@@ -70,7 +72,6 @@ public class Anvil extends CustomContainerFacing {
super(material);
setUnlocalizedName(registryName);
setRegistryName(registryName);
//setRegistryName(ModInfo.ForgecraftBlocks.FIREBOX.getRegistryName());
setCreativeTab(ModInfo.TAB_FORGECRAFT);
setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
setHardness(hardness);
@@ -143,7 +144,7 @@ public class Anvil extends CustomContainerFacing {
world.playEvent(1031, pos, 0);
if (world.rand.nextBoolean()) {
if (ThreadLocalRandom.current().nextInt(0, 2)==0) {
if (recipe.getOutput().getItem() instanceof ToolPart) {

View File

@@ -0,0 +1,288 @@
package nmd.primal.forgecraft.blocks;
import net.minecraft.block.Block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import nmd.primal.core.api.PrimalItems;
import nmd.primal.core.common.items.tools.WorkMallet;
import nmd.primal.forgecraft.CommonUtils;
import nmd.primal.forgecraft.ModInfo;
import nmd.primal.forgecraft.crafting.AnvilCrafting;
import nmd.primal.forgecraft.init.ModBlocks;
import nmd.primal.forgecraft.init.ModItems;
import nmd.primal.forgecraft.init.ModMaterials;
import nmd.primal.forgecraft.items.BaseMultiItem;
import nmd.primal.forgecraft.items.ForgeHammer;
import nmd.primal.forgecraft.items.parts.ToolPart;
import nmd.primal.forgecraft.tiles.TileAnvil;
import nmd.primal.forgecraft.tiles.TileBreaker;
import java.util.concurrent.ThreadLocalRandom;
/**
* Created by mminaie on 4/9/17.
*/
public class Breaker extends CustomContainerFacing implements ITileEntityProvider {
public static final PropertyBool ACTIVE = PropertyBool.create("active");
public Breaker(Material material, String registryName, Float hardness) {
super(material);
setUnlocalizedName(registryName);
setRegistryName(registryName);
setCreativeTab(ModInfo.TAB_FORGECRAFT);
setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVE, false));
setHardness(hardness);
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitx, float hity, float hitz) {
if(!world.isRemote){
TileBreaker tile = (TileBreaker) world.getTileEntity(pos);
ItemStack pItem = player.inventory.getCurrentItem();
if(state.getValue(ACTIVE) == true && player.isSneaking() && pItem.isEmpty()){
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(ACTIVE, false));
tile.setCharge(0.0F);
if (state.getValue(FACING) == EnumFacing.EAST) {
if(tile.getCharge() > world.getBlockState(pos.east()).getBlockHardness(world, pos.east())) {
if (world.getBlockState(pos.east()).getBlock() == Blocks.IRON_ORE) {
world.setBlockToAir(pos.east());
CommonUtils.spawnItemEntityFromWorld(world, pos.east(), new ItemStack(PrimalItems.IRON_DUST, ThreadLocalRandom.current().nextInt(1, 2)));
return true;
}
} else {
tile.getSlotStack(0).damageItem(10, null);
return true;
}
}
if (state.getValue(FACING) == EnumFacing.WEST) {
if(tile.getCharge() > world.getBlockState(pos.west()).getBlockHardness(world, pos.west())) {
if (world.getBlockState(pos.west()).getBlock() == Blocks.IRON_ORE) {
world.setBlockToAir(pos.west());
CommonUtils.spawnItemEntityFromWorld(world, pos.east(), new ItemStack(PrimalItems.IRON_DUST, ThreadLocalRandom.current().nextInt(1, 2)));
return true;
}
} else {
tile.getSlotStack(0).damageItem(10, null);
return true;
}
}
if (state.getValue(FACING) == EnumFacing.SOUTH) {
if(tile.getCharge() > world.getBlockState(pos.south()).getBlockHardness(world, pos.south())) {
if (world.getBlockState(pos.south()).getBlock() == Blocks.IRON_ORE) {
world.setBlockToAir(pos.south());
CommonUtils.spawnItemEntityFromWorld(world, pos.east(), new ItemStack(PrimalItems.IRON_DUST, ThreadLocalRandom.current().nextInt(1, 2)));
return true;
}
} else {
tile.getSlotStack(0).damageItem(10, null);
return true;
}
}
if (state.getValue(FACING) == EnumFacing.NORTH) {
if(tile.getCharge() > world.getBlockState(pos.north()).getBlockHardness(world, pos.north())) {
if (world.getBlockState(pos.north()).getBlock() == Blocks.IRON_ORE) {
world.setBlockToAir(pos.north());
CommonUtils.spawnItemEntityFromWorld(world, pos.east(), new ItemStack(PrimalItems.IRON_DUST, ThreadLocalRandom.current().nextInt(1, 2)));
return true;
}
} else {
tile.getSlotStack(0).damageItem(10, null);
return true;
}
}
}
if(state.getValue(ACTIVE) == false && !player.isSneaking() && pItem.isEmpty()){
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(ACTIVE, true), 2);
tile.setCharge(tile.getCharge() + 2.0f);
return true;
}
if(pItem.getItem() instanceof WorkMallet){
tile.setSlotStack(0, pItem);
pItem.shrink(1);
System.out.println(tile.getSlotStack(0));
return true;
}
}
return false;
}
@Override
public void breakBlock(World world, BlockPos pos, IBlockState state)
{
if (!world.isRemote && world.getGameRules().getBoolean("doTileDrops"))
{
TileBreaker tile = (TileBreaker) world.getTileEntity(pos);
if (tile !=null)
{
for (ItemStack stack : tile.getSlotList())
{
if (stack != null) {
float offset = 0.7F;
double offsetX = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D;
double offsetY = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D;
double offsetZ = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D;
EntityItem item = new EntityItem(world, pos.getX() + offsetX, pos.getY() + offsetY, pos.getZ() + offsetZ, stack);
item.setDefaultPickupDelay();
world.spawnEntity(item);
}
}
}
}
super.breakBlock(world, pos, state);
}
@Override
public TileEntity createNewTileEntity(World worldIn, int meta)
{
return new TileBreaker();
}
@Override
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
{
//if(!worldIn.isRemote) {
worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()).withProperty(ACTIVE, false), 2);
//}
}
@Override
public int getMetaFromState(IBlockState state) {
int i = 0;
if(state.getValue(ACTIVE ) == false) {
if (state.getValue(FACING) == EnumFacing.EAST) {
i = 0;
return i;
}
if (state.getValue(FACING) == EnumFacing.WEST) {
i = 1;
return i;
}
if (state.getValue(FACING) == EnumFacing.SOUTH) {
i = 2;
return i;
}
if (state.getValue(FACING) == EnumFacing.NORTH) {
i = 3;
return i;
}
}
if(state.getValue(ACTIVE)) {
if (state.getValue(FACING) == EnumFacing.EAST) {
i = 4;
return i;
}
if (state.getValue(FACING) == EnumFacing.WEST) {
i = 5;
return i;
}
if (state.getValue(FACING) == EnumFacing.SOUTH) {
i = 6;
return i;
}
if (state.getValue(FACING) == EnumFacing.NORTH) {
i = 7;
return i;
}
}
return i;
}
@Override
public IBlockState getStateFromMeta(int meta)
{
IBlockState iblockstate = this.getDefaultState();
if (meta == 0){
iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(ACTIVE, false);
}
if (meta == 1) {
iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(ACTIVE, false);
}
if (meta == 2) {
iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(ACTIVE, false);
}
if (meta == 3) {
iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVE, false);
}
if (meta == 4){
iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(ACTIVE, true);
}
if (meta == 5) {
iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(ACTIVE, true);
}
if (meta == 6) {
iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(ACTIVE, true);
}
if (meta == 7) {
iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVE, true);
}
return iblockstate;
}
@Override
protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[] {ACTIVE, FACING});
}
@Override
public boolean isFullCube(IBlockState state)
{
return false;
}
@Override
public boolean isFullyOpaque(IBlockState state)
{
return false;
}
@Override
public boolean isOpaqueCube(IBlockState state)
{
return false;
}
@Override
@SideOnly(Side.CLIENT)
public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side)
{
return true;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state)
{
return EnumBlockRenderType.MODEL;
}
}

View File

@@ -35,12 +35,15 @@ public class ModBlocks {
public static Block firebox;
public static Block bloomery;
public static Block blockbreaker;
public static Block pistonbellowsoak;
public static Block pistonbellowsjungle;
public static Block pistonbellowsbirch;
public static Block pistonbellowsspruce;
public static Block pistonbellowsdarkoak;
public static Block pistonbellowsacacia;
public static Block emptycrucible;
public static Block emptycruciblehot;
public static Block emptycruciblecracked;
@@ -69,8 +72,8 @@ public class ModBlocks {
public static void init() {
firebox = new Forge(Material.ROCK);
bloomery = new Bloomery(Material.ROCK, "bloomery");
blockbreaker = new Breaker(Material.WOOD, "blockbreaker", 4.0f);
pistonbellowsoak = new PistonBellows(Material.WOOD, "pistonbellowsoak");
pistonbellowsjungle = new PistonBellows(Material.WOOD, "pistonbellowsjungle");
@@ -324,6 +327,7 @@ public class ModBlocks {
public static void register() {
registerBlock(firebox);
registerBlock(bloomery);
registerBlock(blockbreaker);
registerBlock(pistonbellowsoak);
registerBlock(pistonbellowsjungle);
@@ -365,6 +369,7 @@ public class ModBlocks {
@SideOnly(Side.CLIENT)
public static void registerRenders() {
registerRender(firebox);
registerRender(blockbreaker);
registerRender(pistonbellowsoak);
registerRender(pistonbellowsjungle);
registerRender(pistonbellowsbirch);

View File

@@ -41,6 +41,9 @@ public class ModCrafting {
GameRegistry.addShapedRecipe(new ItemStack(ModBlocks.bloomery),
"X X", "X X", "XXX", 'X', Items.BRICK);
GameRegistry.addShapedRecipe(new ItemStack(ModBlocks.blockbreaker),
"L ", "BSB", "BBB", 'L', Blocks.LEVER, 'B', new ItemStack(Blocks.PLANKS, 1, OreDictionary.WILDCARD_VALUE), 'S', PrimalItems.SILK_CORDAGE_COILED);
/*** Soft Crucible ***/
GameRegistry.addShapedRecipe(new ItemStack(ModItems.softcrucible),
"X X", "X X", "XXX", 'X', Items.CLAY_BALL);
@@ -181,7 +184,7 @@ public class ModCrafting {
);
//Makes the Finished Hot Iron Crucible
BloomeryCrafting.addRecipe(
/* BloomeryCrafting.addRecipe(
new ItemStack(ModBlocks.hotcookedironcrucible, 1),
new ItemStack(ModBlocks.failedironcruciblehot, 1),
new ItemStack(ModBlocks.failedironcruciblehot, 1),
@@ -192,7 +195,7 @@ public class ModCrafting {
0.33f,
0.5f
);
*/
/******************************************************************************
FORGING
******************************************************************************/

View File

@@ -15,6 +15,7 @@ public class ModTiles {
registerTileEntity(TileBloomery.class, "bloomery");
registerTileEntity(TileBaseCrucible.class, "basecrucible");
registerTileEntity(TileAnvil.class, "anvil");
registerTileEntity(TileBreaker.class, "breaker");
}
private static void registerTileEntity(Class<? extends TileEntity> tile_class, String baseName) {

View File

@@ -3,14 +3,8 @@ package nmd.primal.forgecraft.proxy;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import nmd.primal.forgecraft.init.ModBlocks;
import nmd.primal.forgecraft.init.ModItems;
import nmd.primal.forgecraft.renders.blocks.TileAnvilRender;
import nmd.primal.forgecraft.renders.blocks.TileBloomeryRender;
import nmd.primal.forgecraft.renders.blocks.TileForgeRender;
import nmd.primal.forgecraft.renders.blocks.TilePistonBellowsRender;
import nmd.primal.forgecraft.tiles.TileAnvil;
import nmd.primal.forgecraft.tiles.TileBloomery;
import nmd.primal.forgecraft.tiles.TileForge;
import nmd.primal.forgecraft.tiles.TilePistonBellows;
import nmd.primal.forgecraft.renders.blocks.*;
import nmd.primal.forgecraft.tiles.*;
/**
* Created by kitsu on 11/26/2016.
@@ -39,6 +33,7 @@ public class ClientProxy implements CommonProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TilePistonBellows.class, new TilePistonBellowsRender());
ClientRegistry.bindTileEntitySpecialRenderer(TileBloomery.class, new TileBloomeryRender());
ClientRegistry.bindTileEntitySpecialRenderer(TileAnvil.class, new TileAnvilRender());
ClientRegistry.bindTileEntitySpecialRenderer(TileBreaker.class, new TileBreakerRender());
}
@Override

View File

@@ -0,0 +1,54 @@
package nmd.primal.forgecraft.renders.blocks;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderItem;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import nmd.primal.forgecraft.blocks.Breaker;
import nmd.primal.forgecraft.init.ModBlocks;
import nmd.primal.forgecraft.init.ModItems;
import nmd.primal.forgecraft.tiles.TileBreaker;
import nmd.primal.forgecraft.tiles.TileForge;
import org.lwjgl.opengl.GL11;
/**
* Created by mminaie on 4/9/17.
*/
public class TileBreakerRender extends TileEntitySpecialRenderer<TileBreaker>
{
private RenderItem renderItem = Minecraft.getMinecraft().getRenderItem();
@Override
public void renderTileEntityAt(TileBreaker tile, double x, double y, double z, float partialTicks, int destroyStage)
{
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5D, y + 0.95D, z + 0.5D);
GL11.glScalef(1.0f,1.0f,1.0f);
Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
float prevLGTX = OpenGlHelper.lastBrightnessX;
float prevLGTY = OpenGlHelper.lastBrightnessY;
BlockPos pos = tile.getPos();
IBlockState state = this.getWorld().getBlockState(pos);
int bright = tile.getWorld().getCombinedLight(pos.up(), 0);
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, bright % 65536, bright / 65536);
//ItemStack stack0 = tile.getSlotStack(0);
if(state.getValue(Breaker.FACING) == EnumFacing.NORTH) {
GL11.glPushMatrix();
GL11.glRotatef(tile.getCharge(), 1.0f, 0.0f, 0.0f);
renderItem.renderItem(tile.getSlotStack(0), ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, prevLGTX, prevLGTY);
GL11.glPopMatrix();
}
}

View File

@@ -52,21 +52,21 @@ public class TileAnvil extends TileBaseSlot implements ITickable {
if ( ThreadLocalRandom.current().nextInt(0,10000) == 0 ) {
for(int i=0; i<this.getSlotListSize(); i++){
if(this.getSlotStack(i).getItem() == ModItems.ironchunkhot){
if(ThreadLocalRandom.current().nextInt(0,100) == 1){
if(ThreadLocalRandom.current().nextInt(0,1000) == 1){
this.setSlotStack(i, new ItemStack(ModBlocks.ironchunk, 1));
this.updateBlock();
this.markDirty();
}
}
if(this.getSlotStack(i).getItem() == ModItems.ironingotballhot){
if(ThreadLocalRandom.current().nextInt(0,100) == 2){
if(ThreadLocalRandom.current().nextInt(0,1000) == 2){
this.setSlotStack(i, new ItemStack(ModBlocks.ironball, 1));
this.updateBlock();
this.markDirty();
}
}
if(this.getSlotStack(i).getItem() instanceof ToolPart){
if(ThreadLocalRandom.current().nextInt(0,100) == 0){
if(ThreadLocalRandom.current().nextInt(0,1000) == 3){
((ToolPart) this.getSlotStack(i).getItem()).setHot(this.getSlotStack(i), false);
this.updateBlock();
this.markDirty();

View File

@@ -0,0 +1,43 @@
package nmd.primal.forgecraft.tiles;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.NonNullList;
/**
* Created by mminaie on 4/9/17.
*/
public class TileBreaker extends TileBaseSlot {
private float charge;
public float getCharge() {
return charge;
}
public void setCharge(float charge) {
this.charge = charge;
}
public NonNullList<ItemStack> slotList = NonNullList.<ItemStack>withSize(2, ItemStack.EMPTY);
// ***************************************************************************** //
// NBT
// ***************************************************************************** //
@Override
public NBTTagCompound readNBT(NBTTagCompound nbt)
{
super.readNBT(nbt);
this.charge = nbt.getFloat("charge");
return nbt;
}
@Override
public NBTTagCompound writeNBT(NBTTagCompound nbt)
{
nbt.setFloat("charge", this.charge);
super.writeNBT(nbt);
return nbt;
}
}

View File

@@ -0,0 +1,12 @@
{
"variants": {
"active=false,facing=north": { "model": "forgecraft:blockbreaker" },
"active=false,facing=east": { "model": "forgecraft:blockbreaker", "y": 90 },
"active=false,facing=south": { "model": "forgecraft:blockbreaker", "y": 180 },
"active=false,facing=west": { "model": "forgecraft:blockbreaker", "y": 270 },
"active=true,facing=north": { "model": "forgecraft:blockbreakeractive" },
"active=true,facing=east": { "model": "forgecraft:blockbreakeractive", "y": 90 },
"active=true,facing=south": { "model": "forgecraft:blockbreakeractive", "y": 180 },
"active=true,facing=west": { "model": "forgecraft:blockbreakeractive", "y": 270 }
}
}

View File

@@ -0,0 +1,200 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "blocks/planks_oak",
"texture": "blocks/planks_oak",
"texture1": "forgecraft:blocks/leather",
"texture2": "forgecraft:blocks/lever"
},
"elements": [
{
"__comment": "Cube1",
"from": [ 0, 0, 0 ],
"to": [ 6, 2, 16 ],
"faces": {
"down": { "uv": [ 0, 0, 6, 16 ], "texture": "#texture" },
"up": { "uv": [ 0, 0, 6, 16 ], "texture": "#texture" },
"north": { "uv": [ 10, 14, 16, 16 ], "texture": "#texture" },
"south": { "uv": [ 0, 14, 6, 16 ], "texture": "#texture" },
"west": { "uv": [ 0, 14, 16, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Cube2",
"from": [ 6, 0, 2 ],
"to": [ 10, 2, 16 ],
"faces": {
"down": { "uv": [ 6, 0, 10, 14 ], "texture": "#texture" },
"up": { "uv": [ 6, 2, 10, 16 ], "texture": "#texture" },
"north": { "uv": [ 6, 14, 10, 16 ], "texture": "#texture" },
"south": { "uv": [ 6, 14, 10, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Cube3",
"from": [ 10, 0, 0 ],
"to": [ 16, 2, 16 ],
"faces": {
"down": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" },
"up": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" },
"north": { "uv": [ 0, 14, 6, 16 ], "texture": "#texture" },
"south": { "uv": [ 10, 14, 16, 16 ], "texture": "#texture" },
"east": { "uv": [ 0, 14, 16, 16 ], "texture": "#texture" }
}
},
{
"__comment": "PlaneX5",
"from": [ 6, 0, 0 ],
"to": [ 6.001, 2, 2 ],
"faces": {
"east": { "uv": [ 14, 14, 16, 16 ], "texture": "#texture" }
}
},
{
"__comment": "PlaneX6",
"from": [ 10, 0, 0 ],
"to": [ 10.001, 2, 2 ],
"faces": {
"west": { "uv": [ 0, 14, 2, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Cube7",
"from": [ 0, 2, 8 ],
"to": [ 2, 4, 15 ],
"faces": {
"down": { "uv": [ 0, 1, 2, 8 ], "texture": "#texture" },
"up": { "uv": [ 0, 8, 2, 15 ], "texture": "#texture" },
"north": { "uv": [ 14, 12, 16, 14 ], "texture": "#texture" },
"south": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" },
"west": { "uv": [ 8, 12, 15, 14 ], "texture": "#texture" },
"east": { "uv": [ 1, 12, 8, 14 ], "texture": "#texture" }
}
},
{
"__comment": "Cube8",
"from": [ 0, 4, 9 ],
"to": [ 2, 6, 14 ],
"faces": {
"down": { "uv": [ 0, 2, 2, 7 ], "texture": "#texture" },
"up": { "uv": [ 0, 9, 2, 14 ], "texture": "#texture" },
"north": { "uv": [ 14, 10, 16, 12 ], "texture": "#texture" },
"south": { "uv": [ 0, 10, 2, 12 ], "texture": "#texture" },
"west": { "uv": [ 9, 10, 14, 12 ], "texture": "#texture" },
"east": { "uv": [ 2, 10, 7, 12 ], "texture": "#texture" }
}
},
{
"__comment": "Cube9",
"from": [ 0, 6, 10 ],
"to": [ 2, 8, 13 ],
"faces": {
"down": { "uv": [ 0, 3, 2, 6 ], "texture": "#texture" },
"up": { "uv": [ 0, 10, 2, 13 ], "texture": "#texture" },
"north": { "uv": [ 14, 8, 16, 10 ], "texture": "#texture" },
"south": { "uv": [ 0, 8, 2, 10 ], "texture": "#texture" },
"west": { "uv": [ 10, 8, 13, 10 ], "texture": "#texture" },
"east": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" }
}
},
{
"__comment": "Cube7",
"from": [ 14, 2, 8 ],
"to": [ 16, 4, 15 ],
"faces": {
"down": { "uv": [ 0, 0, 2, 7 ], "texture": "#texture" },
"up": { "uv": [ 0, 9, 2, 16 ], "texture": "#texture" },
"north": { "uv": [ 14, 12, 16, 14 ], "texture": "#texture" },
"south": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" },
"west": { "uv": [ 9, 12, 16, 14 ], "texture": "#texture" },
"east": { "uv": [ 0, 12, 7, 14 ], "texture": "#texture" }
}
},
{
"__comment": "Cube8",
"from": [ 14, 4, 9 ],
"to": [ 16, 6, 14 ],
"faces": {
"down": { "uv": [ 0, 1, 2, 6 ], "texture": "#texture" },
"up": { "uv": [ 0, 10, 2, 15 ], "texture": "#texture" },
"north": { "uv": [ 14, 10, 16, 12 ], "texture": "#texture" },
"south": { "uv": [ 0, 10, 2, 12 ], "texture": "#texture" },
"west": { "uv": [ 10, 10, 15, 12 ], "texture": "#texture" },
"east": { "uv": [ 1, 10, 6, 12 ], "texture": "#texture" }
}
},
{
"__comment": "Cube9",
"from": [ 14, 6, 10 ],
"to": [ 16, 8, 13 ],
"faces": {
"down": { "uv": [ 0, 2, 2, 5 ], "texture": "#texture" },
"up": { "uv": [ 0, 11, 2, 14 ], "texture": "#texture" },
"north": { "uv": [ 14, 8, 16, 10 ], "texture": "#texture" },
"south": { "uv": [ 0, 8, 2, 10 ], "texture": "#texture" },
"west": { "uv": [ 11, 8, 14, 10 ], "texture": "#texture" },
"east": { "uv": [ 2, 8, 5, 10 ], "texture": "#texture" }
}
},
{
"__comment": "Cube13",
"from": [ 2, 6.5, 10.5 ],
"to": [ 14, 8, 12 ],
"faces": {
"down": { "uv": [ 2, 1, 14, 3 ], "texture": "#texture1" },
"up": { "uv": [ 2, 13, 14, 15 ], "texture": "#texture1" },
"north": { "uv": [ 2, 8, 14, 10 ], "texture": "#texture1" },
"south": { "uv": [ 2, 8, 14, 10 ], "texture": "#texture1" }
}
},
{
"__comment": "Cube14",
"from": [ 2, 5.5, 12.5 ],
"to": [ 3, 11.5, 13.5 ],
"faces": {
"down": { "uv": [ 15, 2.5, 16, 3.5 ], "texture": "#texture2" },
"up": { "uv": [ 14, 0, 15, 1 ], "texture": "#texture2" },
"north": { "uv": [ 11.5, 0, 12.5, 6 ], "texture": "#texture2" },
"south": { "uv": [ 13, 0, 14, 6 ], "texture": "#texture2" },
"west": { "uv": [ 14, 0, 15, 6 ], "texture": "#texture2" },
"east": { "uv": [ 15, 0, 16, 6 ], "texture": "#texture2" }
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [ 75, 45, 0 ],
"translation": [ 0, 2.5, 0 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"thirdperson_lefthand": {
"rotation": [ 75, 45, 0 ],
"translation": [ 0, 2.5, 0 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"firstperson_righthand": {
"rotation": [ 0, 45, 0 ],
"translation": [ 0, 1, 0 ],
"scale": [ 0.4, 0.4, 0.4 ]
},
"firstperson_lefthand": {
"rotation": [ 0, 45, 0 ],
"translation": [ 0, 1, 0 ],
"scale": [ 0.4, 0.4, 0.4 ]
},
"gui": {
"rotation": [ 30, 225, 0 ],
"translation": [ 0, 2.5, 0 ],
"scale": [ 0.625, 0.625, 0.625 ]
},
"ground": {
"translation": [ 0, 1, 0 ],
"scale": [ 0.25, 0.25, 0.25 ]
},
"fixed": {
"rotation": [ -90, -90, 0 ],
"translation": [ 0, 0, -3 ],
"scale": [ 0.5, 0.5, 0.5 ]
}
}
}

View File

@@ -0,0 +1,200 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "blocks/e_particle",
"texture": "blocks/e_texture",
"texture1": "blocks/checker_test",
"texture2": "blocks/e_texture"
},
"elements": [
{
"__comment": "Cube1",
"from": [ 0, 0, 0 ],
"to": [ 6, 2, 16 ],
"faces": {
"down": { "uv": [ 0, 0, 6, 16 ], "texture": "#texture" },
"up": { "uv": [ 0, 0, 6, 16 ], "texture": "#texture" },
"north": { "uv": [ 10, 14, 16, 16 ], "texture": "#texture" },
"south": { "uv": [ 0, 14, 6, 16 ], "texture": "#texture" },
"west": { "uv": [ 0, 14, 16, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Cube2",
"from": [ 6, 0, 2 ],
"to": [ 10, 2, 16 ],
"faces": {
"down": { "uv": [ 6, 0, 10, 14 ], "texture": "#texture" },
"up": { "uv": [ 6, 2, 10, 16 ], "texture": "#texture" },
"north": { "uv": [ 6, 14, 10, 16 ], "texture": "#texture" },
"south": { "uv": [ 6, 14, 10, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Cube3",
"from": [ 10, 0, 0 ],
"to": [ 16, 2, 16 ],
"faces": {
"down": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" },
"up": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" },
"north": { "uv": [ 0, 14, 6, 16 ], "texture": "#texture" },
"south": { "uv": [ 10, 14, 16, 16 ], "texture": "#texture" },
"east": { "uv": [ 0, 14, 16, 16 ], "texture": "#texture" }
}
},
{
"__comment": "PlaneX5",
"from": [ 6, 0, 0 ],
"to": [ 6.001, 2, 2 ],
"faces": {
"east": { "uv": [ 14, 14, 16, 16 ], "texture": "#texture" }
}
},
{
"__comment": "PlaneX6",
"from": [ 10, 0, 0 ],
"to": [ 10.001, 2, 2 ],
"faces": {
"west": { "uv": [ 0, 14, 2, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Cube7",
"from": [ 0, 2, 8 ],
"to": [ 2, 4, 15 ],
"faces": {
"down": { "uv": [ 0, 1, 2, 8 ], "texture": "#texture" },
"up": { "uv": [ 0, 8, 2, 15 ], "texture": "#texture" },
"north": { "uv": [ 14, 12, 16, 14 ], "texture": "#texture" },
"south": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" },
"west": { "uv": [ 8, 12, 15, 14 ], "texture": "#texture" },
"east": { "uv": [ 1, 12, 8, 14 ], "texture": "#texture" }
}
},
{
"__comment": "Cube8",
"from": [ 0, 4, 9 ],
"to": [ 2, 6, 14 ],
"faces": {
"down": { "uv": [ 0, 2, 2, 7 ], "texture": "#texture" },
"up": { "uv": [ 0, 9, 2, 14 ], "texture": "#texture" },
"north": { "uv": [ 14, 10, 16, 12 ], "texture": "#texture" },
"south": { "uv": [ 0, 10, 2, 12 ], "texture": "#texture" },
"west": { "uv": [ 9, 10, 14, 12 ], "texture": "#texture" },
"east": { "uv": [ 2, 10, 7, 12 ], "texture": "#texture" }
}
},
{
"__comment": "Cube9",
"from": [ 0, 6, 10 ],
"to": [ 2, 8, 13 ],
"faces": {
"down": { "uv": [ 0, 3, 2, 6 ], "texture": "#texture" },
"up": { "uv": [ 0, 10, 2, 13 ], "texture": "#texture" },
"north": { "uv": [ 14, 8, 16, 10 ], "texture": "#texture" },
"south": { "uv": [ 0, 8, 2, 10 ], "texture": "#texture" },
"west": { "uv": [ 10, 8, 13, 10 ], "texture": "#texture" },
"east": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" }
}
},
{
"__comment": "Cube7",
"from": [ 14, 2, 8 ],
"to": [ 16, 4, 15 ],
"faces": {
"down": { "uv": [ 0, 0, 2, 7 ], "texture": "#texture" },
"up": { "uv": [ 0, 9, 2, 16 ], "texture": "#texture" },
"north": { "uv": [ 14, 12, 16, 14 ], "texture": "#texture" },
"south": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" },
"west": { "uv": [ 9, 12, 16, 14 ], "texture": "#texture" },
"east": { "uv": [ 0, 12, 7, 14 ], "texture": "#texture" }
}
},
{
"__comment": "Cube8",
"from": [ 14, 4, 9 ],
"to": [ 16, 6, 14 ],
"faces": {
"down": { "uv": [ 0, 1, 2, 6 ], "texture": "#texture" },
"up": { "uv": [ 0, 10, 2, 15 ], "texture": "#texture" },
"north": { "uv": [ 14, 10, 16, 12 ], "texture": "#texture" },
"south": { "uv": [ 0, 10, 2, 12 ], "texture": "#texture" },
"west": { "uv": [ 10, 10, 15, 12 ], "texture": "#texture" },
"east": { "uv": [ 1, 10, 6, 12 ], "texture": "#texture" }
}
},
{
"__comment": "Cube9",
"from": [ 14, 6, 10 ],
"to": [ 16, 8, 13 ],
"faces": {
"down": { "uv": [ 0, 2, 2, 5 ], "texture": "#texture" },
"up": { "uv": [ 0, 11, 2, 14 ], "texture": "#texture" },
"north": { "uv": [ 14, 8, 16, 10 ], "texture": "#texture" },
"south": { "uv": [ 0, 8, 2, 10 ], "texture": "#texture" },
"west": { "uv": [ 11, 8, 14, 10 ], "texture": "#texture" },
"east": { "uv": [ 2, 8, 5, 10 ], "texture": "#texture" }
}
},
{
"__comment": "Cube13",
"from": [ 2, 6.5, 10.5 ],
"to": [ 14, 8, 12 ],
"faces": {
"down": { "uv": [ 2, 1, 14, 3 ], "texture": "#texture1" },
"up": { "uv": [ 2, 13, 14, 15 ], "texture": "#texture1" },
"north": { "uv": [ 2, 8, 14, 10 ], "texture": "#texture1" },
"south": { "uv": [ 2, 8, 14, 10 ], "texture": "#texture1" }
}
},
{
"__comment": "Cube14",
"from": [ 2, 5.5, 12.5 ],
"to": [ 3, 11.5, 13.5 ],
"faces": {
"down": { "uv": [ 15, 2.5, 16, 3.5 ], "texture": "#texture" },
"up": { "uv": [ 14, 0, 15, 1 ], "texture": "#texture" },
"north": { "uv": [ 11.5, 0, 12.5, 6 ], "texture": "#texture" },
"south": { "uv": [ 13, 0, 14, 6 ], "texture": "#texture" },
"west": { "uv": [ 14, 0, 15, 6 ], "texture": "#texture" },
"east": { "uv": [ 15, 0, 16, 6 ], "texture": "#texture" }
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [ 75, 45, 0 ],
"translation": [ 0, 2.5, 0 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"thirdperson_lefthand": {
"rotation": [ 75, 45, 0 ],
"translation": [ 0, 2.5, 0 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"firstperson_righthand": {
"rotation": [ 0, 45, 0 ],
"translation": [ 0, 1, 0 ],
"scale": [ 0.4, 0.4, 0.4 ]
},
"firstperson_lefthand": {
"rotation": [ 0, 45, 0 ],
"translation": [ 0, 1, 0 ],
"scale": [ 0.4, 0.4, 0.4 ]
},
"gui": {
"rotation": [ 30, 225, 0 ],
"translation": [ 0, 2.5, 0 ],
"scale": [ 0.625, 0.625, 0.625 ]
},
"ground": {
"translation": [ 0, 1, 0 ],
"scale": [ 0.25, 0.25, 0.25 ]
},
"fixed": {
"rotation": [ -90, -90, 0 ],
"translation": [ 0, 0, -3 ],
"scale": [ 0.5, 0.5, 0.5 ]
}
}
}

View File

@@ -0,0 +1,201 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "blocks/planks_oak",
"texture": "blocks/planks_oak",
"texture1": "forgecraft:blocks/leather",
"texture2": "forgecraft:blocks/lever"
},
"elements": [
{
"__comment": "Cube1",
"from": [ 0, 0, 0 ],
"to": [ 6, 2, 16 ],
"faces": {
"down": { "uv": [ 0, 0, 6, 16 ], "texture": "#texture" },
"up": { "uv": [ 0, 0, 6, 16 ], "texture": "#texture" },
"north": { "uv": [ 10, 14, 16, 16 ], "texture": "#texture" },
"south": { "uv": [ 0, 14, 6, 16 ], "texture": "#texture" },
"west": { "uv": [ 0, 14, 16, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Cube2",
"from": [ 6, 0, 2 ],
"to": [ 10, 2, 16 ],
"faces": {
"down": { "uv": [ 6, 0, 10, 14 ], "texture": "#texture" },
"up": { "uv": [ 6, 2, 10, 16 ], "texture": "#texture" },
"north": { "uv": [ 6, 14, 10, 16 ], "texture": "#texture" },
"south": { "uv": [ 6, 14, 10, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Cube3",
"from": [ 10, 0, 0 ],
"to": [ 16, 2, 16 ],
"faces": {
"down": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" },
"up": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" },
"north": { "uv": [ 0, 14, 6, 16 ], "texture": "#texture" },
"south": { "uv": [ 10, 14, 16, 16 ], "texture": "#texture" },
"east": { "uv": [ 0, 14, 16, 16 ], "texture": "#texture" }
}
},
{
"__comment": "PlaneX5",
"from": [ 6, 0, 0 ],
"to": [ 6.001, 2, 2 ],
"faces": {
"east": { "uv": [ 14, 14, 16, 16 ], "texture": "#texture" }
}
},
{
"__comment": "PlaneX6",
"from": [ 10, 0, 0 ],
"to": [ 10.001, 2, 2 ],
"faces": {
"west": { "uv": [ 0, 14, 2, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Cube7",
"from": [ 0, 2, 8 ],
"to": [ 2, 4, 15 ],
"faces": {
"down": { "uv": [ 0, 1, 2, 8 ], "texture": "#texture" },
"up": { "uv": [ 0, 8, 2, 15 ], "texture": "#texture" },
"north": { "uv": [ 14, 12, 16, 14 ], "texture": "#texture" },
"south": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" },
"west": { "uv": [ 8, 12, 15, 14 ], "texture": "#texture" },
"east": { "uv": [ 1, 12, 8, 14 ], "texture": "#texture" }
}
},
{
"__comment": "Cube8",
"from": [ 0, 4, 9 ],
"to": [ 2, 6, 14 ],
"faces": {
"down": { "uv": [ 0, 2, 2, 7 ], "texture": "#texture" },
"up": { "uv": [ 0, 9, 2, 14 ], "texture": "#texture" },
"north": { "uv": [ 14, 10, 16, 12 ], "texture": "#texture" },
"south": { "uv": [ 0, 10, 2, 12 ], "texture": "#texture" },
"west": { "uv": [ 9, 10, 14, 12 ], "texture": "#texture" },
"east": { "uv": [ 2, 10, 7, 12 ], "texture": "#texture" }
}
},
{
"__comment": "Cube9",
"from": [ 0, 6, 10 ],
"to": [ 2, 8, 13 ],
"faces": {
"down": { "uv": [ 0, 3, 2, 6 ], "texture": "#texture" },
"up": { "uv": [ 0, 10, 2, 13 ], "texture": "#texture" },
"north": { "uv": [ 14, 8, 16, 10 ], "texture": "#texture" },
"south": { "uv": [ 0, 8, 2, 10 ], "texture": "#texture" },
"west": { "uv": [ 10, 8, 13, 10 ], "texture": "#texture" },
"east": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" }
}
},
{
"__comment": "Cube7",
"from": [ 14, 2, 8 ],
"to": [ 16, 4, 15 ],
"faces": {
"down": { "uv": [ 0, 0, 2, 7 ], "texture": "#texture" },
"up": { "uv": [ 0, 9, 2, 16 ], "texture": "#texture" },
"north": { "uv": [ 14, 12, 16, 14 ], "texture": "#texture" },
"south": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" },
"west": { "uv": [ 9, 12, 16, 14 ], "texture": "#texture" },
"east": { "uv": [ 0, 12, 7, 14 ], "texture": "#texture" }
}
},
{
"__comment": "Cube8",
"from": [ 14, 4, 9 ],
"to": [ 16, 6, 14 ],
"faces": {
"down": { "uv": [ 0, 1, 2, 6 ], "texture": "#texture" },
"up": { "uv": [ 0, 10, 2, 15 ], "texture": "#texture" },
"north": { "uv": [ 14, 10, 16, 12 ], "texture": "#texture" },
"south": { "uv": [ 0, 10, 2, 12 ], "texture": "#texture" },
"west": { "uv": [ 10, 10, 15, 12 ], "texture": "#texture" },
"east": { "uv": [ 1, 10, 6, 12 ], "texture": "#texture" }
}
},
{
"__comment": "Cube9",
"from": [ 14, 6, 10 ],
"to": [ 16, 8, 13 ],
"faces": {
"down": { "uv": [ 0, 2, 2, 5 ], "texture": "#texture" },
"up": { "uv": [ 0, 11, 2, 14 ], "texture": "#texture" },
"north": { "uv": [ 14, 8, 16, 10 ], "texture": "#texture" },
"south": { "uv": [ 0, 8, 2, 10 ], "texture": "#texture" },
"west": { "uv": [ 11, 8, 14, 10 ], "texture": "#texture" },
"east": { "uv": [ 2, 8, 5, 10 ], "texture": "#texture" }
}
},
{
"__comment": "Cube13",
"from": [ 2, 6.5, 10.5 ],
"to": [ 14, 8, 12 ],
"faces": {
"down": { "uv": [ 2, 1, 14, 3 ], "texture": "#texture1" },
"up": { "uv": [ 2, 13, 14, 15 ], "texture": "#texture1" },
"north": { "uv": [ 2, 8, 14, 10 ], "texture": "#texture1" },
"south": { "uv": [ 2, 8, 14, 10 ], "texture": "#texture1" }
}
},
{
"__comment": "Cube14",
"from": [ 2, 5.5, 12.5 ],
"to": [ 3, 11.5, 13.5 ],
"rotation": { "origin": [ 2, 5.5, 12.5 ], "axis": "x", "angle": 45 },
"faces": {
"down": { "uv": [ 15, 2.5, 16, 3.5 ], "texture": "#texture2" },
"up": { "uv": [ 14, 0, 15, 1 ], "texture": "#texture2" },
"north": { "uv": [ 11.5, 0, 12.5, 6 ], "texture": "#texture2" },
"south": { "uv": [ 13, 0, 14, 6 ], "texture": "#texture2" },
"west": { "uv": [ 14, 0, 15, 6 ], "texture": "#texture2" },
"east": { "uv": [ 15, 0, 16, 6 ], "texture": "#texture2" }
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [ 75, 45, 0 ],
"translation": [ 0, 2.5, 0 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"thirdperson_lefthand": {
"rotation": [ 75, 45, 0 ],
"translation": [ 0, 2.5, 0 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"firstperson_righthand": {
"rotation": [ 0, 45, 0 ],
"translation": [ 0, 1, 0 ],
"scale": [ 0.4, 0.4, 0.4 ]
},
"firstperson_lefthand": {
"rotation": [ 0, 45, 0 ],
"translation": [ 0, 1, 0 ],
"scale": [ 0.4, 0.4, 0.4 ]
},
"gui": {
"rotation": [ 30, 225, 0 ],
"translation": [ 0, 2.5, 0 ],
"scale": [ 0.625, 0.625, 0.625 ]
},
"ground": {
"translation": [ 0, 1, 0 ],
"scale": [ 0.25, 0.25, 0.25 ]
},
"fixed": {
"rotation": [ -90, -90, 0 ],
"translation": [ 0, 0, -3 ],
"scale": [ 0.5, 0.5, 0.5 ]
}
}
}

View File

@@ -0,0 +1,10 @@
{
"forge_marker":1,
"textures": {
"particle": "blocks/planks_oak",
"texture": "blocks/planks_oak",
"texture1": "forgecraft:blocks/leather",
"texture2": "forgecraft:blocks/lever"
},
"parent": "forgecraft:block/blockbreaker"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B