getting no class def error

This commit is contained in:
Mohammad-Ali Minaie
2018-10-14 12:34:08 -04:00
parent 1d45f17f21
commit dbc09ae0b3
58 changed files with 3070 additions and 610 deletions

View File

@@ -1,8 +1,17 @@
# To-Dos
## Bugs
- [ ] Texture mismatch for 4diamond 1 redstone
- [ ] ForgeHammer extend Gallagher
- [x] Check dict name for cluster
- [x] Check block break code for NBTCrucible
- [x] Cooldown for sledgehammer not working
- [x] tune volume down on sledgehammer
- [x] when placing crucibles on the side of a block it replaces the block above
- [ ] Placement bug for crucible from tongs
## Current Feature
- [x] WorkBench
- [ ] Untick Bloomery and Forge
- [ ] Craft Tweaker Support
- [ ] Recipe Handler for Block Breaker
@@ -35,6 +44,8 @@
- [ ] Add forgehammer to oreDict
### Tid-Bits
NonNullList<ItemStack> tempDrops = NonNullList.<ItemStack>create();
ItemStack iron_gear = RecipeHelper.getFirstDictionaryMatch("gearIron", 1);
```
sed -i -- 's/iron/steel/g' *
rm *.json--

View File

@@ -6,7 +6,7 @@ org.gradle.jvmargs=-Xmx3G
mod_group=nmd.primal.forgecraft
mod_name=ForgeCraft
mod_version=1.6.23
mod_version=1.6.25
forge_version=14.23.4.2744
mcp_mappings=snapshot_20171003
mc_version=1.12.2

View File

@@ -7,6 +7,7 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.registries.IForgeRegistry;
import nmd.primal.forgecraft.crafting.CrucibleCrafting;
import nmd.primal.forgecraft.crafting.WorkbenchCrafting;
import nmd.primal.forgecraft.init.ModItems;
//import nmd.primal.forgecraft.Item.ModItems;
@@ -21,7 +22,7 @@ public class ModInfo {
//public static final String MOD_PREFIX = MOD_ID + ":";
public static final String MOD_CHANNEL = MOD_ID;
public static final String MOD_VERSION = "1.6.23";
public static final String MOD_VERSION = "1.6.25";
public static final String MC_VERSIONS = "[1.12.0, 1.13.0)";
public static final String DEPENDENCIES = "required-after:forge@[14.21.1.2400,);" + "required-after:primal@[0.6.69,);";
@@ -55,7 +56,7 @@ public class ModInfo {
{
// In-World Recipes
public static final IForgeRegistry<CrucibleCrafting> CRUCIBLE_CRAFTING = GameRegistry.findRegistry(CrucibleCrafting.class);
public static final IForgeRegistry<WorkbenchCrafting> WORKBENCH_CRAFTING = GameRegistry.findRegistry(WorkbenchCrafting.class);
}
}

View File

@@ -1,161 +0,0 @@
package nmd.primal.forgecraft.blocks.Anvil;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
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.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.EnumFacing;
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.forgecraft.ModInfo;
import nmd.primal.forgecraft.blocks.CustomContainerFacing;
import nmd.primal.forgecraft.tiles.TileAnvil;
import nmd.primal.forgecraft.util.AnvilHandler;
/**
* Created by mminaie on 6/11/17.
*/
public abstract class AnvilBase extends CustomContainerFacing implements AnvilHandler{
private boolean anvil;
public AnvilBase(Material material, String registryName, Float hardness, Boolean anvil) {
super(material, registryName);
setCreativeTab(ModInfo.TAB_FORGECRAFT);
setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
setHardness(hardness);
this.setIsAnvil(anvil);
}
public boolean isAnvil() {
return anvil;
}
public void setIsAnvil(boolean anvil) {
anvil = anvil;
}
@Override
public void breakBlock(World world, BlockPos pos, IBlockState state)
{
if (!world.isRemote && world.getGameRules().getBoolean("doTileDrops")) {
TileAnvil tile = (TileAnvil) world.getTileEntity(pos);
if (tile != null) {
for (ItemStack stack : tile.getSlotList()) {
if (stack != ItemStack.EMPTY) {
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;
stack.setCount(1);
ItemStack dropStack = stack.copy();
System.out.println(dropStack);
dropStack.setCount(1);
EntityItem itemDrop = new EntityItem(world, pos.getX() + offsetX, pos.getY() + offsetY, pos.getZ() + offsetZ, dropStack);
itemDrop.setDefaultPickupDelay();
world.spawnEntity(itemDrop);
}
}
}
}
}
@Override
public TileEntity createNewTileEntity(World worldIn, int meta)
{
return new TileAnvil();
}
@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()), 2);
//}
}
@Override
public int getMetaFromState(IBlockState state) {
int i = 0;
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;
}
return i;
}
@Override
public IBlockState getStateFromMeta(int meta)
{
IBlockState iblockstate = this.getDefaultState();
if (meta == 0){
iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST);
}
if (meta == 1) {
iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST);
}
if (meta == 2) {
iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH);
}
if (meta == 3) {
iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH);
}
return iblockstate;
}
@Override
protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[] {FACING});
}
@Override
public boolean isFullCube(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

@@ -7,14 +7,18 @@ import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.MobEffects;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
@@ -22,10 +26,11 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import nmd.primal.core.api.PrimalAPI;
import nmd.primal.forgecraft.init.ModSounds;
import nmd.primal.forgecraft.items.SledgeHammer;
import nmd.primal.forgecraft.util.ToolMaterialMap;
import javax.annotation.Nullable;
public class Chisel extends CustomFacing {
public class Chisel extends CustomFacing implements ToolMaterialMap {
private AxisAlignedBB boundBoxDown = new AxisAlignedBB(
0.4375D, 0.0D, 0.4375D,
@@ -139,192 +144,198 @@ public class Chisel extends CustomFacing {
if(!world.isRemote){
ItemStack playerStack = player.inventory.getCurrentItem();
if (hand.equals(hand.MAIN_HAND)) {
ItemStack offStack = player.inventory.offHandInventory.get(0);
int toolHarvestLevel = playerStack.getItem().getHarvestLevel(playerStack, "pickaxe", player, state);
if (hand.equals(hand.MAIN_HAND) && offStack == ItemStack.EMPTY) {
if(!player.isSwingInProgress) {
if (playerStack.getItem() instanceof SledgeHammer) {
world.playSound(null, player.posX, player.posY, player.posZ, ModSounds.CHISEL_HIT, SoundCategory.BLOCKS, 0.8F, 0.3F / (PrimalAPI.getRandom().nextFloat() * 0.4F + 0.8F));
playerStack.damageItem(1, player);
if(player.getActivePotionEffect(MobEffects.MINING_FATIGUE ) == null){
if (playerStack.getItem() instanceof SledgeHammer) {
SledgeHammer playerItem = (SledgeHammer) playerStack.getItem();
world.playSound(null, player.posX, player.posY, player.posZ, ModSounds.CHISEL_HIT, SoundCategory.BLOCKS, (float) (PrimalAPI.getRandom().nextDouble(0.5D, 0.8D)), (float) (PrimalAPI.getRandom().nextDouble(0.3D, 1.0D)));
playerStack.damageItem(1, player);
player.addPotionEffect(new PotionEffect(MobEffects.MINING_FATIGUE, (100 - ((materialModifiers.get(playerItem.getMaterial()) * 8) + (materialModifiers.get(this.getRealMaterial()) * 8))), 100));
if (PrimalAPI.getRandom().nextInt(1, 10) != 1) {
if(PrimalAPI.getRandom().nextInt(1,10)!=1) {
if (state.getValue(FACING) == EnumFacing.UP) {
if (state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (1), (i - 1));
IBlockState breakState = world.getBlockState(movePos);
if (state.getValue(PrimalAPI.States.ACTIVE)) {
doBreaking(world, movePos, breakState, player);
}
}
}
world.setBlockState(pos.up(), state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, Boolean.valueOf(false)), 2);
world.setBlockToAir(pos);
return true;
}
if (!state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (1), (i - 1));
if (! (world.getBlockState(movePos).getBlock() instanceof Chisel)) {
if (state.getValue(FACING) == EnumFacing.UP) {
if (state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (1), (i - 1));
IBlockState breakState = world.getBlockState(movePos);
doDamaging(world, movePos, breakState, player);
if (state.getValue(PrimalAPI.States.ACTIVE)) {
doBreaking(world, movePos, breakState, player);
}
}
}
doMoving(world, pos, toolHarvestLevel, state, state.getValue(FACING));
return true;
}
if (!state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (1), (i - 1));
if (!(world.getBlockState(movePos).getBlock() instanceof Chisel)) {
IBlockState breakState = world.getBlockState(movePos);
doDamaging(world, movePos, breakState, player);
}
}
}
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, true), 2);
return true;
}
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, true), 2);
return true;
}
}
if (state.getValue(FACING) == EnumFacing.DOWN) {
if (state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (-1), (i - 1));
IBlockState breakState = world.getBlockState(movePos);
if (state.getValue(PrimalAPI.States.ACTIVE)) {
doBreaking(world, movePos, breakState, player);
}
}
}
world.setBlockState(pos.down(), state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, Boolean.valueOf(false)), 2);
world.setBlockToAir(pos);
return true;
}
if (!state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (-1), (i - 1));
if (! (world.getBlockState(movePos).getBlock() instanceof Chisel)) {
if (state.getValue(FACING) == EnumFacing.DOWN) {
if (state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (-1), (i - 1));
IBlockState breakState = world.getBlockState(movePos);
doDamaging(world, movePos, breakState, player);
if (state.getValue(PrimalAPI.States.ACTIVE)) {
doBreaking(world, movePos, breakState, player);
}
}
}
doMoving(world, pos, toolHarvestLevel, state, state.getValue(FACING));
return true;
}
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, true), 2);
return true;
}
}
if (state.getValue(FACING) == EnumFacing.SOUTH) {
if (state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (i - 1), (1));
IBlockState breakState = world.getBlockState(movePos);
if (state.getValue(PrimalAPI.States.ACTIVE)) {
doBreaking(world, movePos, breakState, player);
if (!state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (-1), (i - 1));
if (!(world.getBlockState(movePos).getBlock() instanceof Chisel)) {
IBlockState breakState = world.getBlockState(movePos);
doDamaging(world, movePos, breakState, player);
}
}
}
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, true), 2);
return true;
}
world.setBlockState(pos.south(), state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, Boolean.valueOf(false)), 2);
world.setBlockToAir(pos);
return true;
}
if (!state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (i - 1), (1));
if (! (world.getBlockState(movePos).getBlock() instanceof Chisel)) {
if (state.getValue(FACING) == EnumFacing.SOUTH) {
if (state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (i - 1), (1));
IBlockState breakState = world.getBlockState(movePos);
doDamaging(world, movePos, breakState, player);
if (state.getValue(PrimalAPI.States.ACTIVE)) {
doBreaking(world, movePos, breakState, player);
}
}
}
doMoving(world, pos, toolHarvestLevel, state, state.getValue(FACING));
return true;
}
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, true), 2);
return true;
}
}
if (state.getValue(FACING) == EnumFacing.NORTH) {
if (state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (i - 1), (-1));
IBlockState breakState = world.getBlockState(movePos);
if (state.getValue(PrimalAPI.States.ACTIVE)) {
doBreaking(world, movePos, breakState, player);
if (!state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (i - 1), (1));
if (!(world.getBlockState(movePos).getBlock() instanceof Chisel)) {
IBlockState breakState = world.getBlockState(movePos);
doDamaging(world, movePos, breakState, player);
}
}
}
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, true), 2);
return true;
}
world.setBlockState(pos.north(), state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, Boolean.valueOf(false)), 2);
world.setBlockToAir(pos);
return true;
}
if (!state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (i - 1), (-1));
if (! (world.getBlockState(movePos).getBlock() instanceof Chisel)) {
if (state.getValue(FACING) == EnumFacing.NORTH) {
if (state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (i - 1), (-1));
IBlockState breakState = world.getBlockState(movePos);
doDamaging(world, movePos, breakState, player);
if (state.getValue(PrimalAPI.States.ACTIVE)) {
doBreaking(world, movePos, breakState, player);
}
}
}
doMoving(world, pos, toolHarvestLevel, state, state.getValue(FACING));
return true;
}
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, true), 2);
return true;
}
}
if (state.getValue(FACING) == EnumFacing.EAST) {
if (state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((1), (i - 1), (a - 1));
IBlockState breakState = world.getBlockState(movePos);
if (state.getValue(PrimalAPI.States.ACTIVE)) {
doBreaking(world, movePos, breakState, player);
if (!state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((a - 1), (i - 1), (-1));
if (!(world.getBlockState(movePos).getBlock() instanceof Chisel)) {
IBlockState breakState = world.getBlockState(movePos);
doDamaging(world, movePos, breakState, player);
}
}
}
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, true), 2);
return true;
}
world.setBlockState(pos.east(), state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, Boolean.valueOf(false)), 2);
world.setBlockToAir(pos);
return true;
}
if (!state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((1), (i - 1), (a - 1));
if (! (world.getBlockState(movePos).getBlock() instanceof Chisel)) {
if (state.getValue(FACING) == EnumFacing.EAST) {
if (state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((1), (i - 1), (a - 1));
IBlockState breakState = world.getBlockState(movePos);
doDamaging(world, movePos, breakState, player);
if (state.getValue(PrimalAPI.States.ACTIVE)) {
doBreaking(world, movePos, breakState, player);
}
}
}
doMoving(world, pos, toolHarvestLevel, state, state.getValue(FACING));
return true;
}
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, true), 2);
return true;
}
}
if (state.getValue(FACING) == EnumFacing.WEST) {
if (state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((-1), (i - 1), (a - 1));
IBlockState breakState = world.getBlockState(movePos);
if (state.getValue(PrimalAPI.States.ACTIVE)) {
doBreaking(world, movePos, breakState, player);
if (!state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((1), (i - 1), (a - 1));
if (!(world.getBlockState(movePos).getBlock() instanceof Chisel)) {
IBlockState breakState = world.getBlockState(movePos);
doDamaging(world, movePos, breakState, player);
}
}
}
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, true), 2);
return true;
}
world.setBlockState(pos.west(), state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, Boolean.valueOf(false)), 2);
world.setBlockToAir(pos);
return true;
}
if (!state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((-1), (i - 1), (a - 1));
if (! (world.getBlockState(movePos).getBlock() instanceof Chisel)) {
if (state.getValue(FACING) == EnumFacing.WEST) {
if (state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((-1), (i - 1), (a - 1));
IBlockState breakState = world.getBlockState(movePos);
doDamaging(world, movePos, breakState, player);
if (state.getValue(PrimalAPI.States.ACTIVE)) {
doBreaking(world, movePos, breakState, player);
}
}
}
doMoving(world, pos, toolHarvestLevel, state, state.getValue(FACING));
return true;
}
if (!state.getValue(PrimalAPI.States.ACTIVE)) {
for (int i = 0; i < 3; i++) {
for (int a = 0; a < 3; a++) {
BlockPos movePos = pos.add((-1), (i - 1), (a - 1));
if (!(world.getBlockState(movePos).getBlock() instanceof Chisel)) {
IBlockState breakState = world.getBlockState(movePos);
doDamaging(world, movePos, breakState, player);
}
}
}
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, true), 2);
return true;
}
world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, true), 2);
return true;
}
}
}
}
}
}
if(offStack != ItemStack.EMPTY) {
String printout = "Is your offhand empty?";
ITextComponent text = new TextComponentString(printout);
player.sendStatusMessage(text, true);
return false;
}
}
return false;
}
@@ -389,6 +400,20 @@ public class Chisel extends CustomFacing {
return true;
}
private void doMoving(World world, BlockPos pos, int toolHarvestLevel, IBlockState state, EnumFacing facing){
if( (world.getBlockState(pos.offset(facing, 2)).getBlock() != Blocks.AIR) ) {
if ((compareHarvestLevel(toolHarvestLevel, world.getBlockState(pos.offset(facing, 1)).getBlock().getHarvestLevel(world.getBlockState(pos.offset(facing, 1))))) ||
(world.getBlockState(pos.offset(facing, 1)).getBlock() == Blocks.AIR)) {
//if(state.getBlock().getBlockHardness(state, world, pos.offset(facing, 1)) > 0) {
world.setBlockState(pos.offset(facing, 1), state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalAPI.States.ACTIVE, Boolean.valueOf(false)), 2);
world.setBlockToAir(pos);
//}
}
} else {
world.destroyBlock(pos, true);
}
}
private void doBreaking(World world, BlockPos movePos, IBlockState state, EntityPlayer player){
if (!(state.getBlock().equals(Blocks.AIR))) {
if(world.getBlockState(movePos).getBlock().getBlockHardness(state, world, movePos)>0) {
@@ -403,14 +428,14 @@ public class Chisel extends CustomFacing {
private void doDamaging(World world, BlockPos movePos, IBlockState state, EntityPlayer player){
if (!(state.getBlock().equals(Blocks.AIR))) {
if(world.getBlockState(movePos).getBlock().getBlockHardness(state, world, movePos)>0) {
if(world.getBlockState(movePos).getBlock().blockHardness>0) {
world.sendBlockBreakProgress(player.getEntityId() + PrimalAPI.getRandom().nextInt(100), movePos, PrimalAPI.getRandom().nextInt(3,10));
}
}
}
private boolean compareHarvestLevel(int inputLevel, int compareHarvest){
if(inputLevel >= compareHarvest){
if(inputLevel >= compareHarvest && compareHarvest > 0){
return true;
} else return false;
}

View File

@@ -1,10 +1,21 @@
package nmd.primal.forgecraft.blocks;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.EnumFacing;
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.forgecraft.ModInfo;
/**
* Created by kitsu on 12/3/2016.
@@ -20,10 +31,89 @@ public abstract class CustomContainerFacing extends BlockContainer {
this.setUnlocalizedName(registryName);
this.setHardness(3.0f);
this.setResistance(4.0f);
setCreativeTab(ModInfo.TAB_FORGECRAFT);
}
protected CustomContainerFacing(Material material, MapColor color)
@Override
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
{
super(material, color);
//if(!worldIn.isRemote) {
worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()), 2);
//}
}
@Override
public int getMetaFromState(IBlockState state) {
int i = 0;
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;
}
return i;
}
@Override
public IBlockState getStateFromMeta(int meta)
{
IBlockState iblockstate = this.getDefaultState();
if (meta == 0){
iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST);
}
if (meta == 1) {
iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST);
}
if (meta == 2) {
iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH);
}
if (meta == 3) {
iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH);
}
return iblockstate;
}
@Override
protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[] {FACING});
}
@Override
public boolean isFullCube(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

@@ -1,4 +1,4 @@
package nmd.primal.forgecraft.blocks.Crucibles;
package nmd.primal.forgecraft.blocks;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.ITileEntityProvider;
@@ -58,7 +58,7 @@ public class NBTCrucible extends BlockContainer implements ITileEntityProvider {
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing face, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
if(hand == player.getActiveHand()) {
if(hand.equals(hand.MAIN_HAND)) {
TileNBTCrucible tile = (TileNBTCrucible) world.getTileEntity(pos);
ItemStack pItem = player.inventory.getCurrentItem().copy();
pItem.setCount(1);
@@ -72,6 +72,7 @@ public class NBTCrucible extends BlockContainer implements ITileEntityProvider {
}
PlayerHelper.playerTakeItem(world, pos, EnumFacing.DOWN, player, player.getActiveHand(), this.getCrucibleItem(world, pos, state, player));
world.setBlockState(pos, this.getReplacementBlock(world, pos, state));
world.markTileEntityForRemoval(tile);
return true;
}
}
@@ -79,22 +80,24 @@ public class NBTCrucible extends BlockContainer implements ITileEntityProvider {
/**SET INGREDIENT ARRAY FOR THE CRUCIBLE NOW**/
if (!player.isSneaking()) {
if (!pItem.isEmpty()) {
if (pItem.getItem() instanceof SlottedTongs) {
return false;
} else {
pItem.setCount(1);
for (int i = 1; i < tile.ingList.size()+1; i++) {
if (tile.ingList.get(i-1).isEmpty()) {
tile.ingList.set(i-1, pItem);
tile.setHot(i);
world.setBlockState(pos, state.withProperty(PrimalAPI.States.LAYERS, i), 2);
player.inventory.getCurrentItem().shrink(1);
tile.update();
tile.markDirty();
return true;
if(!tile.getStatus() || tile.getHot() == 15 || tile.getHot() == 6) {
if (pItem.getItem() instanceof SlottedTongs) {
return false;
} else {
pItem.setCount(1);
for (int i = 1; i < tile.ingList.size() + 1; i++) {
if (tile.ingList.get(i - 1).isEmpty()) {
tile.ingList.set(i - 1, pItem);
tile.setHot(i);
world.setBlockState(pos, state.withProperty(PrimalAPI.States.LAYERS, i), 2);
player.inventory.getCurrentItem().shrink(1);
tile.update();
tile.markDirty();
return true;
}
}
}
}
}
}
}
@@ -139,6 +142,7 @@ public class NBTCrucible extends BlockContainer implements ITileEntityProvider {
}
}
}
return true;
}
}
return false;
@@ -170,6 +174,7 @@ public class NBTCrucible extends BlockContainer implements ITileEntityProvider {
ItemStack dropStack = new ItemStack(ModBlocks.nbtCrucible, 1);
PlayerHelper.spawnItemOnPlayer(world, player, dropStack);
world.setBlockState(pos, this.getReplacementBlock(world, pos, state));
world.markTileEntityForRemoval(tile);
return true;
}
}
@@ -212,11 +217,9 @@ public class NBTCrucible extends BlockContainer implements ITileEntityProvider {
if (tileentity instanceof TileNBTCrucible) {
TileNBTCrucible tile = (TileNBTCrucible) world.getTileEntity(pos);
if(NBTHelper.hasNBT(stack)){
NBTTagCompound tag = stack.getSubCompound("BlockEntityTag").copy();
ItemStack temp = stack.copy();
int i = temp.getItem().getMetadata(stack.getMetadata());
//TODO update this with number instead of the boolean
world.setBlockState(pos, state.withProperty(PrimalAPI.States.LAYERS, tile.getHot()), 2);
NBTTagCompound tag = stack.getTagCompound();
world.setBlockState(pos, state.withProperty(PrimalAPI.States.LAYERS, tile.getHot()), 2);
//tile.readNBT(tag);
}
}
}

View File

@@ -0,0 +1,71 @@
package nmd.primal.forgecraft.blocks.anvil;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import nmd.primal.forgecraft.blocks.CustomContainerFacing;
import nmd.primal.forgecraft.tiles.TileAnvil;
import nmd.primal.forgecraft.util.AnvilHandler;
/**
* Created by mminaie on 6/11/17.
*/
public abstract class AnvilBase extends CustomContainerFacing implements AnvilHandler{
private boolean anvil;
public AnvilBase(Material material, String registryName, Float hardness, Boolean anvil) {
super(material, registryName);
setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
setHardness(hardness);
this.setIsAnvil(anvil);
}
public boolean isAnvil() {
return anvil;
}
public void setIsAnvil(boolean anvil) {
anvil = anvil;
}
@Override
public void breakBlock(World world, BlockPos pos, IBlockState state)
{
if (!world.isRemote && world.getGameRules().getBoolean("doTileDrops")) {
TileAnvil tile = (TileAnvil) world.getTileEntity(pos);
if (tile != null) {
for (ItemStack stack : tile.getSlotList()) {
if (stack != ItemStack.EMPTY) {
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;
stack.setCount(1);
ItemStack dropStack = stack.copy();
dropStack.setCount(1);
EntityItem itemDrop = new EntityItem(world, pos.getX() + offsetX, pos.getY() + offsetY, pos.getZ() + offsetZ, dropStack);
itemDrop.setDefaultPickupDelay();
world.spawnEntity(itemDrop);
}
}
}
}
}
@Override
public TileEntity createNewTileEntity(World worldIn, int meta)
{
return new TileAnvil();
}
}

View File

@@ -1,4 +1,4 @@
package nmd.primal.forgecraft.blocks.Anvil;
package nmd.primal.forgecraft.blocks.anvil;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;

View File

@@ -1,4 +1,4 @@
package nmd.primal.forgecraft.blocks.Anvil;
package nmd.primal.forgecraft.blocks.anvil;
/**
* Created by mminaie on 6/10/17.

View File

@@ -1,4 +1,4 @@
package nmd.primal.forgecraft.blocks.Anvil;
package nmd.primal.forgecraft.blocks.anvil;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;

View File

@@ -34,12 +34,10 @@ import nmd.primal.forgecraft.crafting.CrucibleCrafting;
import nmd.primal.forgecraft.items.SlottedTongs;
import nmd.primal.forgecraft.tiles.TileBloomery;
import java.awt.*;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
import static nmd.primal.forgecraft.items.SlottedTongs.ITEM_HANDLER;
import static org.jline.utils.InfoCmp.Capability.newline;
/**
* Created by mminaie on 6/11/17.

View File

@@ -0,0 +1,262 @@
package nmd.primal.forgecraft.blocks.machine;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import nmd.primal.core.common.helper.PlayerHelper;
import nmd.primal.core.common.items.tools.Gallagher;
import nmd.primal.forgecraft.blocks.CustomContainerFacing;
import nmd.primal.forgecraft.crafting.WorkbenchCrafting;
import nmd.primal.forgecraft.tiles.TileWorkbench;
import javax.annotation.Nullable;
public class Workbench extends CustomContainerFacing {
protected static final AxisAlignedBB boundBoxNorth = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 10 / 16D, 8/16D);
protected static final AxisAlignedBB boundBoxSouth = new AxisAlignedBB(0.0D, 0.0D, 8/16D, 1.0D, 10 / 16D, 1.0D);
protected static final AxisAlignedBB boundBoxEast = new AxisAlignedBB(8/16D, 0.0D, 0.0D, 1.0D, 10 / 16D, 1.0D);
protected static final AxisAlignedBB boundBoxWest = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 8/16D, 10 / 16D, 1.0D);
public Workbench(Material material, String registryName) {
super(material, registryName);
this.setHardness(4.0f);
}
@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) {
if (hand.equals(hand.MAIN_HAND) ) {
TileWorkbench tile = (TileWorkbench) world.getTileEntity(pos);
ItemStack playerStack = player.inventory.getCurrentItem();
if (tile != null) {
ItemStack slot0 = tile.getSlotStack(0);
ItemStack slot1 = tile.getSlotStack(1);
ItemStack slot2 = tile.getSlotStack(2);
ItemStack slot3 = tile.getSlotStack(3);
ItemStack slot4 = tile.getSlotStack(4);
ItemStack slot5 = tile.getSlotStack(5);
ItemStack slot6 = tile.getSlotStack(6);
if (hitY > 0.5D) {
if (!player.isSneaking()) {
/*if (tile.isItemValidForSlot(6, playerStack)) {
if (slot6.isEmpty()) {
tile.setSlotStack(6, playerStack.splitStack(1));
//player.inventory.getCurrentItem().shrink(1);
return true;
}
}*/
if(! (playerStack.getItem() instanceof Gallagher)) {
if (slot4.isEmpty() && slot3.isEmpty() && slot2.isEmpty()) {
if (tile.isItemValidForSlot(5, playerStack)) {
if (slot5.isEmpty()) {
tile.setSlotStack(5, playerStack.splitStack(1));
//player.inventory.getCurrentItem().shrink(1);
return true;
}
}
}
if (tile.isItemValidForSlot(4, playerStack)) {
if (slot4.isEmpty()) {
tile.setSlotStack(4, playerStack.splitStack(1));
//player.inventory.getCurrentItem().shrink(1);
return true;
}
}
if (tile.isItemValidForSlot(3, playerStack)) {
if (slot3.isEmpty()) {
tile.setSlotStack(3, playerStack.splitStack(1));
//player.inventory.getCurrentItem().shrink(1);
return true;
}
}
if (tile.isItemValidForSlot(2, playerStack)) {
if (slot2.isEmpty()) {
tile.setSlotStack(2, playerStack.splitStack(1));
//player.inventory.getCurrentItem().shrink(1);
return true;
}
}
}
if(playerStack.getItem() instanceof Gallagher) {
if (!slot2.isEmpty() && !slot3.isEmpty() && !slot4.isEmpty() && slot5.isEmpty()) {
WorkbenchCrafting recipe = WorkbenchCrafting.getRecipe(slot2, slot3, slot4, slot5);
System.out.println(slot5);
if (recipe != null) {
ItemStack drops = recipe.getOutput();
if (slot3.hasTagCompound()) {
drops.setTagCompound(slot3.getTagCompound());
}
PlayerHelper.spawnItemOnPlayer(world, player, drops);
tile.clearSlot(2);
tile.clearSlot(3);
tile.clearSlot(4);
tile.clearSlot(5);
return true;
}
}
if (slot2.isEmpty() && slot3.isEmpty() && slot4.isEmpty() && !slot5.isEmpty()) {
WorkbenchCrafting recipe = WorkbenchCrafting.getRecipe(slot2, slot3, slot4, slot5);
if (recipe != null) {
ItemStack drops = recipe.getOutput();
if (slot5.hasTagCompound()) {
drops.setTagCompound(slot5.getTagCompound());
}
PlayerHelper.spawnItemOnPlayer(world, player, drops);
tile.clearSlot(2);
tile.clearSlot(3);
tile.clearSlot(4);
tile.clearSlot(5);
return true;
}
}
}
}
if(player.isSneaking()){
if(!slot2.isEmpty()){
PlayerHelper.spawnItemOnPlayer(world, player, slot2);
tile.clearSlot(2);
}
if(!slot3.isEmpty()){
PlayerHelper.spawnItemOnPlayer(world, player, slot3);
tile.clearSlot(3);
}
if(!slot4.isEmpty()){
PlayerHelper.spawnItemOnPlayer(world, player, slot4);
tile.clearSlot(4);
}
if(!slot5.isEmpty()){
PlayerHelper.spawnItemOnPlayer(world, player, slot5);
tile.clearSlot(5);
}
if(!slot6.isEmpty()){
PlayerHelper.spawnItemOnPlayer(world, player, slot6);
tile.clearSlot(6);
}
}
}
if (hitY < 0.5D) {
if (state.getValue(FACING) == EnumFacing.NORTH) {
if (hitX < 0.5) {
return sideInventoryManager(world, player, tile, slot0, 0);
}
if (hitX > 0.5) {
return sideInventoryManager(world, player, tile, slot1, 1);
}
return true;
}
if (state.getValue(FACING) == EnumFacing.SOUTH) {
if (hitX > 0.5) {
return sideInventoryManager(world, player, tile, slot0, 0);
}
if (hitX < 0.5) {
return sideInventoryManager(world, player, tile, slot1, 1);
}
return true;
}
if (state.getValue(FACING) == EnumFacing.EAST) {
if (hitZ < 0.5) {
return sideInventoryManager(world, player, tile, slot0, 0);
}
if (hitZ > 0.5) {
return sideInventoryManager(world, player, tile, slot1, 1);
}
return true;
}
if (state.getValue(FACING) == EnumFacing.WEST) {
if (hitZ > 0.5) {
return sideInventoryManager(world, player, tile, slot0, 0);
}
if (hitZ < 0.5) {
return sideInventoryManager(world, player, tile, slot1, 1);
}
return true;
}
}
}
}
}
return true;
}
private boolean sideInventoryManager(World world, EntityPlayer player, TileWorkbench tile, ItemStack slot, int index)
{
if(!player.isSneaking()) {
ItemStack stack = player.inventory.getCurrentItem();
if (!(stack.isEmpty()) ) {
if( stack.isItemEqual(slot) ) {
if (slot.getCount() < 64) {
if (stack.getCount() + slot.getCount() > 64) {
stack.shrink(64 - slot.getCount());
slot.setCount(64);
return true;
}
if (stack.getCount() + slot.getCount() < 64) {
slot.grow(stack.getCount());
stack.shrink(stack.getCount());
return true;
}
}
}
if (slot.isEmpty()) {
tile.setSlotStack(index, stack);
player.inventory.setInventorySlotContents(player.inventory.currentItem, ItemStack.EMPTY);
return true;
}
}
}
if(player.isSneaking()){
if(!slot.isEmpty()){
PlayerHelper.spawnItemOnPlayer(world, player, tile.getSlotStack(index));
tile.clearSlot(index);
return true;
}
}
return false;
}
@Override
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
{
state = state.getActualState(source, pos);
EnumFacing enumfacing = (EnumFacing)state.getValue(FACING);
switch (enumfacing)
{
case EAST:
default:
return boundBoxEast;
case SOUTH:
return boundBoxSouth;
case WEST:
return boundBoxWest;
case NORTH:
return boundBoxNorth;
}
}
@Nullable
@Override
public TileEntity createNewTileEntity(World worldIn, int meta) {
return new TileWorkbench();
}
}

View File

@@ -17,10 +17,10 @@ import nmd.primal.forgecraft.compat.jei.crucible.CrucibleRecipeHandler;
import nmd.primal.forgecraft.compat.jei.forge.ForgeRecipeCategory;
import nmd.primal.forgecraft.compat.jei.forge.ForgeRecipeChecker;
import nmd.primal.forgecraft.compat.jei.forge.ForgeRecipeHandler;
import nmd.primal.forgecraft.crafting.AnvilCrafting;
import nmd.primal.forgecraft.crafting.CastingCrafting;
import nmd.primal.forgecraft.crafting.CrucibleCrafting;
import nmd.primal.forgecraft.crafting.ForgeCrafting;
import nmd.primal.forgecraft.compat.jei.workbench.WorkbenchRecipeCategory;
import nmd.primal.forgecraft.compat.jei.workbench.WorkbenchRecipeChecker;
import nmd.primal.forgecraft.compat.jei.workbench.WorkbenchRecipeHandler;
import nmd.primal.forgecraft.crafting.*;
import nmd.primal.forgecraft.init.ModBlocks;
import javax.annotation.Nonnull;
@@ -51,7 +51,7 @@ public class ModJEI implements IModPlugin
registry.addRecipeCategories(new CrucibleRecipeCategory(guiHelper));
registry.addRecipeCategories(new AnvilRecipeCategory(guiHelper));
registry.addRecipeCategories(new CastingRecipeCategory(guiHelper));
registry.addRecipeCategories(new WorkbenchRecipeCategory(guiHelper));
}
@Override
@@ -88,7 +88,12 @@ public class ModJEI implements IModPlugin
registry.addRecipes(CastingRecipeChecker.getRecipes(), CastingRecipeCategory.CATEGORY);
registry.addRecipeCatalyst(new ItemStack(ModBlocks.castingform), CastingRecipeCategory.CATEGORY);
//
// Workbench
//
registry.handleRecipes(WorkbenchCrafting.class, new WorkbenchRecipeHandler(), WorkbenchRecipeCategory.CATEGORY);
registry.addRecipes(WorkbenchRecipeChecker.getRecipes(), WorkbenchRecipeCategory.CATEGORY);
registry.addRecipeCatalyst(new ItemStack(ModBlocks.workbench), WorkbenchRecipeCategory.CATEGORY);

View File

@@ -0,0 +1,105 @@
package nmd.primal.forgecraft.compat.jei.workbench;
import mezz.jei.api.IGuiHelper;
import mezz.jei.api.gui.IDrawable;
import mezz.jei.api.gui.IGuiItemStackGroup;
import mezz.jei.api.gui.IRecipeLayout;
import mezz.jei.api.ingredients.IIngredients;
import net.minecraft.client.Minecraft;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import nmd.primal.core.api.PrimalAPI;
import nmd.primal.core.common.helper.CommonUtils;
import nmd.primal.forgecraft.ModInfo;
import nmd.primal.forgecraft.compat.jei.AbstractCategory;
import nmd.primal.forgecraft.init.ModBlocks;
import javax.annotation.Nonnull;
import java.util.Arrays;
import java.util.List;
/**
* Created by mminaie on 9/16/18.
*/
public class WorkbenchRecipeCategory extends AbstractCategory<WorkbenchRecipeWrapper>
{
public static String CATEGORY = CommonUtils.prefix("workbench");
private static ResourceLocation gui_background = new ResourceLocation(ModInfo.MOD_ID,"textures/gui/jei/workbench.png");
private final IDrawable background;
public WorkbenchRecipeCategory(IGuiHelper guiHelper)
{
//background = guiHelper.createDrawable(gui_background, 0, 0, 134, 144, 0, 0, 0, 0);
background = guiHelper.createDrawable(gui_background, 0,0,115,39);
}
@Nonnull
@Override
public String getUid()
{
return CATEGORY;
}
@Nonnull
@Override
public String getTitle()
{
return "jei.category.forgecraft.workbench";
}
@Nonnull
@Override
public IDrawable getBackground()
{
return background;
}
@Override
public void drawExtras(@Nonnull Minecraft minecraft)
{
//progress.draw(minecraft, 67, 18);
}
@Override
public void setRecipe(IRecipeLayout layout, WorkbenchRecipeWrapper recipe, IIngredients ingredients)
{
IGuiItemStackGroup items = layout.getItemStacks();
/***INPUTS***/
items.init(0, true, 1, 1);
List<ItemStack> slot0 = Arrays.asList( recipe.toolPart.getMatchingStacks());
items.set(0,slot0);
items.init(1, true, 20, 1);
List<ItemStack> slot1 = Arrays.asList( recipe.toolHead.getMatchingStacks());
items.set(1,slot1);
items.init(2, true, 39, 1);
List<ItemStack> slot2 = Arrays.asList( recipe.toolPin.getMatchingStacks());
items.set(2,slot2);
items.init(3, true, 39, 20);
List<ItemStack> slot3 = Arrays.asList( recipe.takeApart.getMatchingStacks());
items.set(3,slot3);
/***OUTPUTS***/
items.init(4, false, 96, 11);
items.set(4, recipe.output);
/***EXTRAS***/
items.init(5, false, 66, 20);
ItemStack bench = new ItemStack(Item.getItemFromBlock(ModBlocks.workbench), 1);
items.set(5, bench);
items.init(6, false, 66, 1);
NonNullList<ItemStack> tempDrops = NonNullList.<ItemStack>create();
tempDrops.add(0, new ItemStack(PrimalAPI.Items.STONE_GALLAGHER, 1));
tempDrops.add(1, new ItemStack(PrimalAPI.Items.NETHER_GALLAGHER, 1));
tempDrops.add(2, new ItemStack(PrimalAPI.Items.IRON_GALLAGHER, 1));
tempDrops.add(3, new ItemStack(PrimalAPI.Items.QUARTZ_GALLAGHER, 1));
items.set(6, tempDrops);
}
}

View File

@@ -0,0 +1,24 @@
package nmd.primal.forgecraft.compat.jei.workbench;
import nmd.primal.forgecraft.crafting.WorkbenchCrafting;
import java.util.ArrayList;
import java.util.List;
/**
* Created by mminaie on 9/16/18.
*/
public class WorkbenchRecipeChecker {
public static List<WorkbenchCrafting> getRecipes() {
List<WorkbenchCrafting> recipes = new ArrayList<>();
for (WorkbenchCrafting recipe : WorkbenchCrafting.getRECIPES()) {
if(!recipe.isDisabled()) {
if(!recipe.isHidden()) {
recipes.add(recipe);
}
}
}
return recipes;
}
}

View File

@@ -0,0 +1,18 @@
package nmd.primal.forgecraft.compat.jei.workbench;
import mezz.jei.api.recipe.IRecipeWrapper;
import mezz.jei.api.recipe.IRecipeWrapperFactory;
import nmd.primal.forgecraft.crafting.WorkbenchCrafting;
import javax.annotation.Nonnull;
/**
* Created by mminaie on 9/17/18.
*/
public class WorkbenchRecipeHandler implements IRecipeWrapperFactory<WorkbenchCrafting> {
@Nonnull
@Override
public IRecipeWrapper getRecipeWrapper(@Nonnull WorkbenchCrafting recipe) {
return new WorkbenchRecipeWrapper(recipe);
}
}

View File

@@ -0,0 +1,55 @@
package nmd.primal.forgecraft.compat.jei.workbench;
import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.recipe.IRecipeWrapper;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient;
import nmd.primal.forgecraft.crafting.WorkbenchCrafting;
import javax.annotation.Nonnull;
/**
* Created by mminaie on 9/16/18.
*/
public class WorkbenchRecipeWrapper implements IRecipeWrapper {
protected final WorkbenchCrafting recipe;
protected Ingredient toolPart;
protected Ingredient toolHead;
protected Ingredient toolPin;
protected Ingredient takeApart;
protected ItemStack output;
public WorkbenchRecipeWrapper(WorkbenchCrafting recipe) {
this.recipe = recipe;
this.toolPart = recipe.getToolPart();
this.toolHead = recipe.getToolHead();
this.toolPin = recipe.getToolPin();
this.takeApart = recipe.getTakeApart();
this.output = recipe.getOutput();
}
@Override
public void getIngredients(IIngredients ingredients) {
ingredients.setInput(ItemStack.class, this.toolPart);
ingredients.setInput(ItemStack.class, this.toolHead);
ingredients.setInput(ItemStack.class, this.toolPin);
ingredients.setInput(ItemStack.class, this.takeApart);
ingredients.setOutput(ItemStack.class, this.output);
}
@Override
public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY)
{
//String tempString = new String("To an empty crucible add: " + recipe.getSource().getDisplayName() + ". For details reference the appropriate crucible recipe. Pick up the hot crucible with Stonetongs and right click your casting block.");
//minecraft.fontRenderer.drawSplitString(tempString, 97, 0, 150, Color.black.getRGB());
//minecraft.fontRenderer.drawString(String.valueOf(recipe.getHeatThreshold() + "\u00b0"), 24, 36, Color.red.getRGB());
//minecraft.fontRenderer.drawString(String.valueOf(recipe.getIdealTime()), 26, 13, Color.green.getRGB());
}
}

View File

@@ -1,6 +1,5 @@
package nmd.primal.forgecraft.crafting.CraftingRegistery;
import net.minecraft.block.BlockPlanks;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient;
@@ -353,20 +352,20 @@ public final class RecipesCrucible {
1000).setRecipeName("steel2"));
recipes.register (new CrucibleCrafting(
new OreIngredient("dustMagnetite"),
Ingredient.fromStacks(new ItemStack(Blocks.LEAVES, 1,BlockPlanks.EnumType.JUNGLE.getMetadata())),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CHARCOAL_PURE, 1)),
Ingredient.fromStacks(new ItemStack(Blocks.LEAVES, 1, BlockPlanks.EnumType.JUNGLE.getMetadata())),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CHARCOAL_PURE, 1)),
new ItemStack(PrimalAPI.Items.ORE_CLUSTER_MAGNETITE, 1),
new OreIngredient("oreClusterMagnetite"),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CHARCOAL_PURE, 1)),
new OreIngredient("oreClusterMagnetite"),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CHARCOAL_PURE, 1)),
new OreIngredient("specialCarbon"),
new ItemStack(PrimalAPI.Items.ORE_CLUSTER_MAGNETITE, 1),
new ItemStack(ModItems.wootzingotball, 1),
2100,
1800,
1500).setRecipeName("wootz1"));
1800,
1500).setRecipeName("wootz2"));
recipes.register (new CrucibleCrafting(
Ingredient.fromStacks(new ItemStack(ModItems.brokenwootztool, 1)),
new OreIngredient("nuggetWootz"),
new OreIngredient("nuggetWootz"),
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,

View File

@@ -0,0 +1,377 @@
package nmd.primal.forgecraft.crafting.CraftingRegistery;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.OreIngredient;
import net.minecraftforge.registries.IForgeRegistry;
import nmd.primal.core.api.PrimalAPI;
import nmd.primal.forgecraft.ModInfo;
import nmd.primal.forgecraft.crafting.WorkbenchCrafting;
import nmd.primal.forgecraft.init.ModItems;
@GameRegistry.ObjectHolder(ModInfo.MOD_ID)
@Mod.EventBusSubscriber
public final class RecipesWorkbench {
@SubscribeEvent
public static void registerRecipes(RegistryEvent.Register<WorkbenchCrafting> event) {
PrimalAPI.logger(7, "Registering Recipes: " + WorkbenchCrafting.RECIPE_PREFIX);
final IForgeRegistry<WorkbenchCrafting> recipes = event.getRegistry();
/***COPPER***/
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.copperaxehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.copperaxe, 1)).setRecipeName("copperaxe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.copperaxe, 1)),
new ItemStack(ModItems.copperaxehead, 1)).setRecipeName("copperaxesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.copperhoehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.copperhoe, 1)).setRecipeName("copperhoe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.copperhoe, 1)),
new ItemStack(ModItems.copperhoehead, 1)).setRecipeName("copperhoesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.copperpickaxehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.copperpickaxe, 1)).setRecipeName("copperpickaxe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.copperpickaxe, 1)),
new ItemStack(ModItems.copperpickaxehead, 1)).setRecipeName("copperpickaxesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.coppershovelhead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.coppershovel, 1)).setRecipeName("coppershovel"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.coppershovel, 1)),
new ItemStack(ModItems.coppershovelhead, 1)).setRecipeName("coppershovelsplit"));
/***BRONZE***/
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.bronzeaxehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.bronzeaxe, 1)).setRecipeName("bronzeaxe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.bronzeaxe, 1)),
new ItemStack(ModItems.bronzeaxehead, 1)).setRecipeName("bronzeaxesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.bronzehoehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.bronzehoe, 1)).setRecipeName("bronzehoe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.bronzehoe, 1)),
new ItemStack(ModItems.bronzehoehead, 1)).setRecipeName("bronzehoesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.bronzepickaxehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.bronzepickaxe, 1)).setRecipeName("bronzepickaxe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.bronzepickaxe, 1)),
new ItemStack(ModItems.bronzepickaxehead, 1)).setRecipeName("bronzepickaxesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.bronzeshovelhead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.bronzeshovel, 1)).setRecipeName("bronzeshovel"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.bronzeshovel, 1)),
new ItemStack(ModItems.bronzeshovelhead, 1)).setRecipeName("bronzeshovelsplit"));
/***iron***/
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.ironaxehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.ironaxe, 1)).setRecipeName("ironaxe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.ironaxe, 1)),
new ItemStack(ModItems.ironaxehead, 1)).setRecipeName("ironaxesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.ironhoehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.ironhoe, 1)).setRecipeName("ironhoe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.ironhoe, 1)),
new ItemStack(ModItems.ironhoehead, 1)).setRecipeName("ironhoesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.pickaxehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.ironpickaxe, 1)).setRecipeName("ironpickaxe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.ironpickaxe, 1)),
new ItemStack(ModItems.pickaxehead, 1)).setRecipeName("ironpickaxesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.ironshovelhead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.ironshovel, 1)).setRecipeName("ironshovel"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.ironshovel, 1)),
new ItemStack(ModItems.ironshovelhead, 1)).setRecipeName("ironshovelsplit"));
/***cleaniron***/
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.cleanironaxehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.cleanironaxe, 1)).setRecipeName("cleanironaxe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.cleanironaxe, 1)),
new ItemStack(ModItems.cleanironaxehead, 1)).setRecipeName("cleanironaxesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.cleanironhoehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.cleanironhoe, 1)).setRecipeName("cleanironhoe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.cleanironhoe, 1)),
new ItemStack(ModItems.cleanironhoehead, 1)).setRecipeName("cleanironhoesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.cleanironpickaxehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.cleanironpickaxe, 1)).setRecipeName("cleanironpickaxe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.cleanironpickaxe, 1)),
new ItemStack(ModItems.cleanironpickaxehead, 1)).setRecipeName("cleanironpickaxesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.cleanironshovelhead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.cleanironshovel, 1)).setRecipeName("cleanironshovel"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.cleanironshovel, 1)),
new ItemStack(ModItems.cleanironshovelhead, 1)).setRecipeName("cleanironshovelsplit"));
/***steel***/
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.steelaxehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.steelaxe, 1)).setRecipeName("steelaxe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.steelaxe, 1)),
new ItemStack(ModItems.steelaxehead, 1)).setRecipeName("steelaxesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.steelhoehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.steelhoe, 1)).setRecipeName("steelhoe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.steelhoe, 1)),
new ItemStack(ModItems.steelhoehead, 1)).setRecipeName("steelhoesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.steelpickaxehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.steelpickaxe, 1)).setRecipeName("steelpickaxe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.steelpickaxe, 1)),
new ItemStack(ModItems.steelpickaxehead, 1)).setRecipeName("steelpickaxesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.steelshovelhead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.steelshovel, 1)).setRecipeName("steelshovel"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.steelshovel, 1)),
new ItemStack(ModItems.steelshovelhead, 1)).setRecipeName("steelshovelsplit"));
/***wootz***/
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.wootzaxehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.wootzaxe, 1)).setRecipeName("wootzaxe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.wootzaxe, 1)),
new ItemStack(ModItems.wootzaxehead, 1)).setRecipeName("wootzaxesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.wootzhoehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.wootzhoe, 1)).setRecipeName("wootzhoe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.wootzhoe, 1)),
new ItemStack(ModItems.wootzhoehead, 1)).setRecipeName("wootzhoesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.wootzpickaxehead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.wootzpickaxe, 1)).setRecipeName("wootzpickaxe"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.wootzpickaxe, 1)),
new ItemStack(ModItems.wootzpickaxehead, 1)).setRecipeName("wootzpickaxesplit"));
recipes.register (new WorkbenchCrafting(
new OreIngredient("stickTreatedWood"),
Ingredient.fromStacks(new ItemStack(ModItems.wootzshovelhead, 1)),
new OreIngredient("pinBasic"),
Ingredient.EMPTY,
new ItemStack(ModItems.wootzshovel, 1)).setRecipeName("wootzshovel"));
recipes.register (new WorkbenchCrafting(
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.fromStacks(new ItemStack(ModItems.wootzshovel, 1)),
new ItemStack(ModItems.wootzshovelhead, 1)).setRecipeName("wootzshovelsplit"));
}
}

View File

@@ -0,0 +1,199 @@
package nmd.primal.forgecraft.crafting;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient;
import net.minecraftforge.registries.IForgeRegistry;
import nmd.primal.core.common.recipes.AbstractRecipe;
import nmd.primal.forgecraft.ModInfo;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* Created by mminaie on 11/11/17.
*/
public class WorkbenchCrafting extends AbstractRecipe<WorkbenchCrafting> { //extends AbstractCrafting<CrucibleCrafting> {
// ***************************************************************************** //
// Recipe Handler CrucibleHandler
// ***************************************************************************** //
public static final String RECIPE_PREFIX = "workbench";
public static final IForgeRegistry<WorkbenchCrafting> REGISTRY = ModInfo.Registries.WORKBENCH_CRAFTING;
public static Collection<WorkbenchCrafting> getRECIPES() {
return RECIPES;
}
public static final Collection<WorkbenchCrafting> RECIPES = REGISTRY.getValuesCollection();
private Ingredient toolPart;
private Ingredient toolHead;
private Ingredient toolPin;
private Ingredient takeApart;
private ItemStack output;
public Ingredient getTakeApart() {
return takeApart;
}
public void setTakeApart(Ingredient takeApart) {
this.takeApart = takeApart;
}
public Ingredient getToolPart() {
return toolPart;
}
public void setToolPart(Ingredient toolPart) {
this.toolPart = toolPart;
}
public Ingredient getToolHead() {
return toolHead;
}
public void setToolHead(Ingredient toolHead) {
this.toolHead = toolHead;
}
public Ingredient getToolPin() {
return toolPin;
}
public void setToolPin(Ingredient toolPin) {
this.toolPin = toolPin;
}
public ItemStack getOutput() {
return output;
}
public void setOutput(ItemStack output) {
this.output = output;
}
public List<Ingredient> getIngredientList() {
return ingredientList;
}
public void setIngredientList(List<Ingredient> ingredientList) {
this.ingredientList = ingredientList;
}
private List<Ingredient> ingredientList = new ArrayList<>();
public WorkbenchCrafting(Ingredient i0, Ingredient i1, Ingredient i2, Ingredient i3 , ItemStack output){
super();
this.toolPart = i0;
this.toolHead = i1;
this.toolPin = i2;
this.takeApart = i3;
this.output = output;
}
public static boolean compare(Ingredient ingredient, ItemStack stack){
if(stack == null){
stack = new ItemStack(Items.AIR, 1);
}
if(ingredient == null && stack.isEmpty()) {
return true;
}
if (ingredient.test(ItemStack.EMPTY)) {
if (stack.isEmpty()) {
return true;
}
}
if(ingredient.apply(stack)){
return true;
}
return false;
}
public static boolean isRecipe(ItemStack i0, ItemStack i1, ItemStack i2, ItemStack i3){
for(WorkbenchCrafting recipe : RECIPES){
if(i0 == null){
i0 = ItemStack.EMPTY;
}
if(i1 == null){
i1 = ItemStack.EMPTY;
}
if(i2 == null){
i2 = ItemStack.EMPTY;
}
if(i3 == null){
i3 = ItemStack.EMPTY;
}
if(compare(recipe.toolPart, i0) &&
compare(recipe.toolHead, i1) &&
compare(recipe.toolPin, i2) &&
compare(recipe.takeApart, i3) ){
return true;
}
}
return false;
}
public static WorkbenchCrafting getRecipe(ItemStack i0, ItemStack i1, ItemStack i2, ItemStack i3){
for(WorkbenchCrafting recipe : RECIPES){
if(i0 == null){
i0 = ItemStack.EMPTY;
}
if(i1 == null){
i1 = ItemStack.EMPTY;
}
if(i2 == null){
i2 = ItemStack.EMPTY;
}
if(i3 == null){
i3 = ItemStack.EMPTY;
}
if(recipe.toolPart.apply(i0) && recipe.toolHead.apply(i1) && recipe.toolPin.apply(i2) && recipe.takeApart.apply(i3) ){
return recipe;
}
}
return null;
}
/*public static boolean isValidIngredient(ItemStack checkStack){
for(WorkbenchCrafting recipe : RECIPES) {
if (recipe.ing0.apply(checkStack) ||
recipe.ing1.apply(checkStack) ||
recipe.ing2.apply(checkStack) ||
recipe.ing3.apply(checkStack) ||
recipe.ing4.apply(checkStack)) {
return true;
}
}
return false;
}*/
@Override
public Collection<WorkbenchCrafting> getRecipes() {
return RECIPES;
}
@Override
public String getRecipePrefix() {
return RECIPE_PREFIX;
}
/**
* Shim for getting a recipe directly from correctly formatted name
* @param recipe_name basic recipe name, no prefix or mod id
* @return Recipe object
*/
@Nullable
public static WorkbenchCrafting getRecipe(String recipe_name)
{
return REGISTRY.getValue(getFullRecipeName(RECIPE_PREFIX, recipe_name));
}
}

View File

@@ -11,10 +11,10 @@ import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import nmd.primal.core.api.PrimalAPI;
import nmd.primal.forgecraft.blocks.Anvil.AnvilStone;
import nmd.primal.forgecraft.blocks.Chisel;
import nmd.primal.forgecraft.blocks.Crucibles.NBTCrucible;
import nmd.primal.forgecraft.blocks.YewStave;
import nmd.primal.forgecraft.blocks.anvil.AnvilStone;
import nmd.primal.forgecraft.blocks.NBTCrucible;
import nmd.primal.forgecraft.blocks.machine.*;
/**
@@ -47,6 +47,8 @@ public class ModBlocks {
public static Block stoneanvil;
public static Block ironanvil;
public static Block workbench;
public static Block yewstave;
public static void init() {
@@ -76,6 +78,8 @@ public class ModBlocks {
stoneanvil = new AnvilStone(Material.ANVIL, "stoneanvil", 5.0f, true);
//ironanvil = new AnvilIron(Material.ANVIL, "ironanvil", 6.0f, true);
workbench = new Workbench(Material.WOOD, "toolbench");
yewstave = new YewStave(Material.WOOD, "yewstave", 3.0F);
}
@@ -107,6 +111,8 @@ public class ModBlocks {
registerBlockWithItem(stoneanvil);
//registerBlockWithItem(ironanvil);
registerBlockWithItem(workbench);
registerBlockWithItem(yewstave);
}
@@ -137,6 +143,7 @@ public class ModBlocks {
registerRender(stoneanvil);
//registerRender(ironanvil);
registerRender(workbench);
registerRender(yewstave);

View File

@@ -344,205 +344,6 @@ public class ModCrafting{
" ", " I ", " S ", 'I', "ingotIron", 'S', Blocks.STONE);
/***************************************************************
* TOOL CRAFTING RECIPES
***************************************************************/
/***Pickaxe Crafting***/
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.bronzepickaxe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.bronzepickaxehead, 1, OreDictionary.WILDCARD_VALUE), //new ItemStack( 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.ironpickaxe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.pickaxehead, 1, OreDictionary.WILDCARD_VALUE), //new ItemStack( 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.cleanironpickaxe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.cleanironpickaxehead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.steelpickaxe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.steelpickaxehead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.wootzpickaxe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.wootzpickaxehead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(Items.IRON_PICKAXE), "T", "S",
('T'), ModItems.pickaxehead,
('S'), Items.STICK);
/***Axe Crafting***/
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.bronzeaxe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.bronzeaxehead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.ironaxe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.ironaxehead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.cleanironaxe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.cleanironaxehead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.steelaxe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.steelaxehead,1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.wootzaxe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.wootzaxehead,1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(Items.IRON_AXE), "T", "S",
('T'), ModItems.ironaxehead,
('S'), Items.STICK);
/***Shovel Crafting***/
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.bronzeshovel, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.bronzeshovelhead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.ironshovel, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.ironshovelhead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.cleanironshovel, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.cleanironshovelhead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.steelshovel, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.steelshovelhead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.wootzshovel, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.wootzshovelhead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(Items.IRON_SHOVEL), "T", "S",
('T'), ModItems.ironshovelhead,
('S'), Items.STICK);
/***Hoe Crafting***/
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.bronzehoe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.bronzehoehead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.ironhoe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.ironhoehead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.cleanironhoe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.cleanironhoehead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.steelhoe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.steelhoehead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.wootzhoe, 1), "T", "C", "S",
('T'), new ItemStack(ModItems.wootzhoehead, 1, OreDictionary.WILDCARD_VALUE),
('S'), "stickTreatedWood",
('C'), "cordageGeneral");
RecipeHandler.addShapedOreRecipe(new ItemStack(Items.IRON_HOE), "T", "S",
('T'), ModItems.ironhoehead,
('S'), Items.STICK);
/***************************************************************
* TOOL DISASSEMBLY RECIPES
***************************************************************/
//RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.ironaxehead, 1, OreDictionary.WILDCARD_VALUE),
// " ", " X ", " ", 'X', ModItems.ironaxe);
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.bronzeaxehead, 1),
true, "X", ('X'), new ItemStack(ModItems.bronzeaxe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.bronzepickaxehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.bronzepickaxe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.bronzeshovelhead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.bronzeshovel, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.bronzehoehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.bronzehoe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.ironaxehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.ironaxe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.pickaxehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.ironpickaxe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.ironshovelhead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.ironshovel, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.ironhoehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.ironhoe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.cleanironaxehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.cleanironaxe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.cleanironpickaxehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.cleanironpickaxe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.cleanironshovelhead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.cleanironshovel, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.cleanironhoehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.cleanironhoe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.steelaxehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.steelaxe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.steelpickaxehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.steelpickaxe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.steelshovelhead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.steelshovel, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.steelhoehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.steelhoe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.wootzaxehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.wootzaxe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.wootzpickaxehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.wootzpickaxe, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.wootzshovelhead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.wootzshovel, 1, OreDictionary.WILDCARD_VALUE));
RecipeHandler.addShapedOreRecipe(new ItemStack(ModItems.wootzhoehead, 1, OreDictionary.WILDCARD_VALUE),
true, "X", ('X'), new ItemStack(ModItems.wootzhoe, 1, OreDictionary.WILDCARD_VALUE));
/******************************************************************************
CASTING
******************************************************************************/

View File

@@ -29,8 +29,8 @@ public class ModDictionary {/***************************************************
OreDictionary.registerOre("ingotBronze", ModItems.bronzeingotball);
OreDictionary.registerOre("nuggetBronze", ModItems.bronzechunk);
//if(COMPAT_DICTIONARY_DAMASCUS_STEEL) {
// OreDictionary.registerOre("ingotSteel", ModItems.wootzingotball);
// OreDictionary.registerOre("nuggetSteel", ModItems.wootzchunk);
OreDictionary.registerOre("ingotWootz", ModItems.wootzingotball);
OreDictionary.registerOre("nuggetWootz", ModItems.wootzchunk);
//}
}
}

View File

@@ -9,6 +9,7 @@ import net.minecraftforge.registries.RegistryBuilder;
import nmd.primal.core.api.PrimalAPI;
import nmd.primal.forgecraft.ModInfo;
import nmd.primal.forgecraft.crafting.CrucibleCrafting;
import nmd.primal.forgecraft.crafting.WorkbenchCrafting;
/**
* Created by kitsu on 12/3/2016.
@@ -26,5 +27,13 @@ public class ModRegistries {
registryCrucible.setName(new ResourceLocation(ModInfo.MOD_ID, "recipes_" + CrucibleCrafting.RECIPE_PREFIX));
registryCrucible.setIDRange(0, 1000);
registryCrucible.create();
PrimalAPI.logger(1, "Custom Registry", WorkbenchCrafting.RECIPE_PREFIX);
RegistryBuilder registryWorkbench = new RegistryBuilder();
registryWorkbench.setType(WorkbenchCrafting.class);
registryWorkbench.setName(new ResourceLocation(ModInfo.MOD_ID, "recipes_" + WorkbenchCrafting.RECIPE_PREFIX));
registryWorkbench.setIDRange(0, 1000);
registryWorkbench.create();
}
}

View File

@@ -0,0 +1,19 @@
package nmd.primal.forgecraft.init;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import nmd.primal.forgecraft.renders.blocks.*;
import nmd.primal.forgecraft.tiles.*;
public class ModTileRenders {
public static void init(){
ClientRegistry.bindTileEntitySpecialRenderer(TileForge.class, new TileForgeRender());
ClientRegistry.bindTileEntitySpecialRenderer(TilePistonBellows.class, new TilePistonBellowsRender());
ClientRegistry.bindTileEntitySpecialRenderer(TileBloomery.class, new TileBloomeryRender());
ClientRegistry.bindTileEntitySpecialRenderer(TileAnvil.class, new TileAnvilRender());
ClientRegistry.bindTileEntitySpecialRenderer(TileBreaker.class, new TileBreakerRender());
ClientRegistry.bindTileEntitySpecialRenderer(TileCastingForm.class, new TileCastingformRender());
ClientRegistry.bindTileEntitySpecialRenderer(TileWorkbench.class, new TileWorkbenchRender());
}
}

View File

@@ -17,6 +17,7 @@ public class ModTiles {
registerTileEntity(TileBreaker.class, "breaker");
registerTileEntity(TileCastingForm.class, "castingform");
registerTileEntity(TileNBTCrucible.class, "nbtcrucible");
registerTileEntity(TileWorkbench.class, "workbench");
}
private static void registerTileEntity(Class<? extends TileEntity> tile_class, String baseName) {

View File

@@ -3,29 +3,18 @@ package nmd.primal.forgecraft.items;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.mojang.realmsclient.gui.ChatFormatting;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.MobEffects;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import nmd.primal.core.common.items.tools.Gallagher;
import nmd.primal.core.common.recipes.irecipe.ToolCraftingRecipe;
import nmd.primal.forgecraft.ModInfo;
import nmd.primal.forgecraft.blocks.Anvil.AnvilBase;
import nmd.primal.forgecraft.util.ToolMaterialMap;
import javax.annotation.Nullable;
@@ -49,7 +38,7 @@ public class SledgeHammer extends Gallagher implements ToolMaterialMap {
this.setCreativeTab(ModInfo.TAB_FORGECRAFT);
}
@Override
/*@Override
public void onUpdate(ItemStack stack, World world, Entity entity, int itemSlot, boolean isSelected) {
if(!world.isRemote){
EntityPlayer player = (EntityPlayer) entity;
@@ -78,12 +67,12 @@ public class SledgeHammer extends Gallagher implements ToolMaterialMap {
int tempInt = 0;
player.addPotionEffect(new PotionEffect(MobEffects.MINING_FATIGUE, (100 - ((materialModifiers.get(this.getMaterial()) * 13) + tempInt)), 100));
player.swingArm(hand);
return EnumActionResult.PASS;
return EnumActionResult.SUCCESS;
}
}
}
return EnumActionResult.PASS;
}
return EnumActionResult.FAIL;
}*/
public ToolMaterial getMaterial() {
return material;

View File

@@ -32,8 +32,8 @@ import nmd.primal.core.common.helper.PlayerHelper;
import nmd.primal.core.common.helper.RecipeHelper;
import nmd.primal.core.common.tiles.AbstractTileTank;
import nmd.primal.forgecraft.ModInfo;
import nmd.primal.forgecraft.blocks.Anvil.AnvilBase;
import nmd.primal.forgecraft.blocks.Crucibles.NBTCrucible;
import nmd.primal.forgecraft.blocks.anvil.AnvilBase;
import nmd.primal.forgecraft.blocks.NBTCrucible;
import nmd.primal.forgecraft.blocks.machine.Forge;
import nmd.primal.forgecraft.init.ModItems;
import nmd.primal.forgecraft.items.blocks.ItemNBTCrucible;
@@ -308,9 +308,11 @@ public class SlottedTongs extends Item implements IPickup, AnvilHandler{
if (!(block instanceof Forge)) {
if (slotStack.isEmpty()) {
if (block instanceof NBTCrucible) {
TileNBTCrucible tile = (TileNBTCrucible) world.getTileEntity(pos);
ItemStack tempStack = takeBlock(world, pos, state, face, player, block).copy();
inventory.insertItem(0, tempStack, false);
world.setBlockState(pos, this.getReplacementBlock(world, pos, state));
world.markTileEntityForRemoval(tile);
//itemstack.getItem().updateItemStackNBT(itemstack.getTagCompound());
itemstackItem.markDirty(itemstack);
return EnumActionResult.SUCCESS;

View File

@@ -169,7 +169,7 @@ public class ToolPart extends Item implements ToolNBT{
{
if(item.hasTagCompound())
{
tooltip.add(ChatFormatting.GRAY + "Upgrades left: " + (ToolMaterialMap.materialModifiers.get( this.getMaterial()) - getModifiers(item)));
tooltip.add(ChatFormatting.GRAY + "Upgrades left: " + (ToolMaterialMap.materialModifiers.get(this.toolMaterial) - getModifiers(item)));
if (getEmerald(item)) {
tooltip.add(ChatFormatting.DARK_GREEN + "Emerald");
}

View File

@@ -138,7 +138,7 @@ public abstract class AbstractPickaxe extends ItemPickaxe implements ToolNBT {
{
if(item.hasTagCompound())
{
tooltip.add(ChatFormatting.GRAY + "Total Allowed: " + (ToolMaterialMap.materialModifiers.get(this.toolMaterial) ));
tooltip.add(ChatFormatting.GRAY + "Upgrades left: " + (ToolMaterialMap.materialModifiers.get(this.toolMaterial) - getModifiers(item)));
if (getEmerald(item)) {
tooltip.add(ChatFormatting.DARK_GREEN + "Emerald");
}

View File

@@ -27,7 +27,7 @@ import javax.annotation.Nullable;
*/
public class Longbow extends BaseItem {
int mod=15;
int mod=10;
int time=0;
public Longbow(String name) {
@@ -140,7 +140,8 @@ public class Longbow extends BaseItem {
{
ItemArrow itemarrow = (ItemArrow)((ItemArrow)(itemstack.getItem() instanceof ItemArrow ? itemstack.getItem() : Items.ARROW));
EntityArrow entityarrow = itemarrow.createArrow(worldIn, itemstack, entityplayer);
entityarrow.shoot(entityplayer, entityplayer.rotationPitch, entityplayer.rotationYaw, 0.0F, f * 6.0F, 1.0F);
entityarrow.setDamage(entityarrow.getDamage()+(entityarrow.getDamage()*f));
entityarrow.shoot(entityplayer, entityplayer.rotationPitch, entityplayer.rotationYaw, 0.0F, f * 6.0F, 0.5F);
if (f >= 1.0F)
{
@@ -179,7 +180,7 @@ public class Longbow extends BaseItem {
public static float getArrowVelocity(int charge)
{
float f = (float)charge / 120;
float f = (float)charge / 90;
if (f > 1.0F)
{

View File

@@ -2,12 +2,10 @@ package nmd.primal.forgecraft.proxy;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.item.Item;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import nmd.primal.forgecraft.init.ModBlocks;
import nmd.primal.forgecraft.init.ModItems;
import nmd.primal.forgecraft.init.ModTileRenders;
import nmd.primal.forgecraft.models.ModelPlateHelmet;
import nmd.primal.forgecraft.renders.blocks.*;
import nmd.primal.forgecraft.tiles.*;
import java.util.HashMap;
import java.util.Map;
@@ -38,12 +36,7 @@ public class ClientProxy implements CommonProxy {
//@Override
public void registerTileRendering()
{
ClientRegistry.bindTileEntitySpecialRenderer(TileForge.class, new TileForgeRender());
ClientRegistry.bindTileEntitySpecialRenderer(TilePistonBellows.class, new TilePistonBellowsRender());
ClientRegistry.bindTileEntitySpecialRenderer(TileBloomery.class, new TileBloomeryRender());
ClientRegistry.bindTileEntitySpecialRenderer(TileAnvil.class, new TileAnvilRender());
ClientRegistry.bindTileEntitySpecialRenderer(TileBreaker.class, new TileBreakerRender());
ClientRegistry.bindTileEntitySpecialRenderer(TileCastingForm.class, new TileCastingformRender());
ModTileRenders.init();
}
public void registerModels(){

View File

@@ -13,8 +13,8 @@ import net.minecraft.item.Item;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import nmd.primal.core.api.PrimalAPI;
import nmd.primal.forgecraft.blocks.Anvil.AnvilBase;
import nmd.primal.forgecraft.blocks.Anvil.AnvilStone;
import nmd.primal.forgecraft.blocks.anvil.AnvilBase;
import nmd.primal.forgecraft.blocks.anvil.AnvilStone;
import nmd.primal.forgecraft.init.ModItems;
import nmd.primal.forgecraft.items.BaseMultiItem;
import nmd.primal.forgecraft.tiles.TileAnvil;

View File

@@ -0,0 +1,381 @@
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.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import nmd.primal.forgecraft.blocks.machine.Workbench;
import nmd.primal.forgecraft.tiles.TileWorkbench;
import org.lwjgl.opengl.GL11;
/**
* Created by kitsu on 12/4/2016.
*/
public class TileWorkbenchRender extends TileEntitySpecialRenderer<TileWorkbench>
{
private RenderItem renderItem = Minecraft.getMinecraft().getRenderItem();
@Override
public void render(TileWorkbench tile, double x, double y, double z, float partialTicks, int destroyStage, float alpha)
{
BlockPos pos = tile.getPos();
IBlockState state = this.getWorld().getBlockState(pos);
if (state.getBlock() instanceof Workbench) {
GL11.glPushMatrix();
GL11.glTranslated(x, y, z);
//GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F);
Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
float prevLGTX = OpenGlHelper.lastBrightnessX;
float prevLGTY = OpenGlHelper.lastBrightnessY;
int bright = tile.getWorld().getCombinedLight(pos.up(), 0);
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, bright % 65536, bright / 65536);
ItemStack stack0 = tile.getSlotStack(0);
ItemStack stack1 = tile.getSlotStack(1);
ItemStack stack2 = tile.getSlotStack(2);
ItemStack stack3 = tile.getSlotStack(3);
ItemStack stack4 = tile.getSlotStack(4);
ItemStack stack5 = tile.getSlotStack(5);
ItemStack stack6 = tile.getSlotStack(6);
if (state.getValue(Workbench.FACING) == EnumFacing.NORTH) {
if (!stack0.isEmpty()) {
boolean is_block = stack0.getItem() instanceof ItemBlock;
float scale = is_block ? 0.5F : 0.3F;
double trans = is_block ? 0.3125D : 0.3125D;
double yTrans = is_block ? 0.3D : 0.3D;
GL11.glPushMatrix();
GL11.glTranslated(trans, yTrans, 0.25D);
GL11.glScalef(scale, scale, scale);
GL11.glRotated(180.0F, 0.0F, 1.0F, 0.0F);
renderItem.renderItem(stack0, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if (!stack1.isEmpty()) {
boolean is_block = stack1.getItem() instanceof ItemBlock;
float scale = is_block ? 0.5F : 0.3F;
double trans = is_block ? 0.3125D : 0.3125D;
double yTrans = is_block ? 0.3D : 0.3D;
GL11.glPushMatrix();
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(trans+0.375D, yTrans, 0.25D);
GL11.glScalef(scale, scale, scale);
GL11.glRotated(180.0F, 0.0F, 1.0F, 0.0F);
renderItem.renderItem(stack1, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if(!stack2.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.4375, 0.71875D, 0.26D);
GL11.glScalef(0.7F, 1F, 0.55F);
GL11.glRotated(-45.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack2, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if(!stack3.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.37D, 0.27D, 0.21D);
GL11.glScalef(1F, 1F, 1F);
GL11.glRotated(-90.0F, 0.0F, 1.0F, 0.0F);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack3, ItemCameraTransforms.TransformType.HEAD);
GL11.glPopMatrix();
}
if(!stack4.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.85, 0.71875D, 0.25D);
GL11.glScalef(0.3F, 0.3F, 0.3F);
GL11.glRotated(45.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack4, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if(!stack5.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.48D, 0.3D, -0.15D);
GL11.glScalef(1F, 1F, 1F);
GL11.glRotated(-90.0F, 0.0F, 1.0F, 0.0F);
//GL11.glRotated(-90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack5, ItemCameraTransforms.TransformType.HEAD);
GL11.glPopMatrix();
}
}
if (state.getValue(Workbench.FACING) == EnumFacing.SOUTH) {
if (!stack0.isEmpty()) {
boolean is_block = stack0.getItem() instanceof ItemBlock;
float scale = is_block ? 0.5F : 0.3F;
double trans = is_block ? 0.3125D : 0.3125D;
double yTrans = is_block ? 0.3D : 0.3D;
GL11.glPushMatrix();
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(trans+0.375D, yTrans, 0.75D);
GL11.glScalef(scale, scale, scale);
renderItem.renderItem(stack0, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if (!stack1.isEmpty()) {
boolean is_block = stack1.getItem() instanceof ItemBlock;
float scale = is_block ? 0.5F : 0.3F;
double trans = is_block ? 0.3125D : 0.3125D;
double yTrans = is_block ? 0.3D : 0.3D;
GL11.glPushMatrix();
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(trans, yTrans, 0.75D);
GL11.glScalef(scale, scale, scale);
renderItem.renderItem(stack1, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if(!stack2.isEmpty()){
GL11.glPushMatrix();
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.5625, 0.71875D, 0.7925D);
GL11.glScalef(0.7F, 1F, 0.55F);
GL11.glRotated(-45.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack2, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if(!stack3.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.55, 0.27D, 0.77D);
GL11.glScalef(1F, 1F, 1F);
GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack3, ItemCameraTransforms.TransformType.HEAD);
GL11.glPopMatrix();
}
if(!stack4.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.175, 0.71875D, 0.78D);
GL11.glScalef(0.3F, 0.3F, 0.3F);
GL11.glRotated(45.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack4, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if(!stack5.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.52D, 0.3D, 1.15D);
GL11.glScalef(1F, 1F, 1F);
GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F);
//GL11.glRotated(-90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack5, ItemCameraTransforms.TransformType.HEAD);
GL11.glPopMatrix();
}
}
if (state.getValue(Workbench.FACING) == EnumFacing.EAST) {
if (!stack0.isEmpty()) {
boolean is_block = stack0.getItem() instanceof ItemBlock;
float scale = is_block ? 0.5F : 0.3F;
double trans = is_block ? 0.3125D : 0.3125D;
double yTrans = is_block ? 0.3D : 0.3D;
GL11.glPushMatrix();
GL11.glTranslated(0.75D, yTrans, trans);
GL11.glScalef(scale, scale, scale);
GL11.glRotated(90F, 0.0F, 1.0F, 0.0F);
renderItem.renderItem(stack0, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if (!stack1.isEmpty()) {
boolean is_block = stack1.getItem() instanceof ItemBlock;
float scale = is_block ? 0.5F : 0.3F;
double trans = is_block ? 0.3125D : 0.3125D;
double yTrans = is_block ? 0.3D : 0.3D;
GL11.glPushMatrix();
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.75D, yTrans, trans+0.375D);
GL11.glScalef(scale, scale, scale);
GL11.glRotated(90F, 0.0F, 1.0F, 0.0F);
renderItem.renderItem(stack1, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if(!stack2.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.7925D, 0.71875D, 0.4375);
GL11.glScalef(0.55F, 1F, 0.7F);
GL11.glRotated(45F, 0.0F, 1.0F, 0.0F);
GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack2, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if(!stack3.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.75, 0.27D, 0.4D);
GL11.glScalef(1F, 1F, 1F);
GL11.glRotated(180.0F, 0.0F, 1.0F, 0.0F);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack3, ItemCameraTransforms.TransformType.HEAD);
GL11.glPopMatrix();
}
if(!stack4.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.755, 0.71875D, 0.8D);
GL11.glScalef(0.3F, 0.3F, 0.3F);
GL11.glRotated(-45.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack4, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if(!stack5.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(1.15D, 0.3D, 0.485D);
GL11.glScalef(1F, 1F, 1F);
GL11.glRotated(180.0F, 0.0F, 1.0F, 0.0F);
//GL11.glRotated(-90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack5, ItemCameraTransforms.TransformType.HEAD);
GL11.glPopMatrix();
}
}
if (state.getValue(Workbench.FACING) == EnumFacing.WEST) {
if (!stack0.isEmpty()) {
boolean is_block = stack0.getItem() instanceof ItemBlock;
float scale = is_block ? 0.5F : 0.3F;
double trans = is_block ? 0.3125D : 0.3125D;
double yTrans = is_block ? 0.3D : 0.3D;
GL11.glPushMatrix();
GL11.glTranslated(0.25D, yTrans, trans+0.375D);
GL11.glScalef(scale, scale, scale);
GL11.glRotated(-90F, 0.0F, 1.0F, 0.0F);
renderItem.renderItem(stack0, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if (!stack1.isEmpty()) {
boolean is_block = stack1.getItem() instanceof ItemBlock;
float scale = is_block ? 0.5F : 0.3F;
double trans = is_block ? 0.3125D : 0.3125D;
double yTrans = is_block ? 0.3D : 0.3D;
GL11.glPushMatrix();
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.25D, yTrans, trans);
GL11.glScalef(scale, scale, scale);
GL11.glRotated(-90F, 0.0F, 1.0F, 0.0F);
renderItem.renderItem(stack1, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if(!stack2.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.255D, 0.71875D, 0.565);
GL11.glScalef(0.55F, 1F, 0.7F);
GL11.glRotated(45F, 0.0F, 1.0F, 0.0F);
GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack2, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if(!stack3.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.235, 0.27D, 0.6D);
GL11.glScalef(1F, 1F, 1F);
//GL11.glRotated(-180.0F, 0.0F, 1.0F, 0.0F);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack3, ItemCameraTransforms.TransformType.HEAD);
GL11.glPopMatrix();
}
if(!stack4.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(0.2175, 0.71875D, 0.185D);
GL11.glScalef(0.3F, 0.3F, 0.3F);
GL11.glRotated(-45.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack4, ItemCameraTransforms.TransformType.FIXED);
GL11.glPopMatrix();
}
if(!stack5.isEmpty()){
GL11.glPushMatrix();
//System.out.println(stack2);
//GL11.glRotated(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslated(-0.138D, 0.3D, 0.52D);
GL11.glScalef(1F, 1F, 1F);
//GL11.glRotated(180.0F, 0.0F, 1.0F, 0.0F);
//GL11.glRotated(-90.0F, 1.0F, 0.0F, 0.0F);
renderItem.renderItem(stack5, ItemCameraTransforms.TransformType.HEAD);
GL11.glPopMatrix();
}
}
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, prevLGTX, prevLGTY);
GL11.glPopMatrix();
}
}
}

View File

@@ -14,7 +14,7 @@ import net.minecraft.world.World;
import nmd.primal.core.api.PrimalAPI;
import nmd.primal.core.common.helper.FireHelper;
import nmd.primal.core.common.helper.RecipeHelper;
import nmd.primal.forgecraft.blocks.Crucibles.NBTCrucible;
import nmd.primal.forgecraft.blocks.NBTCrucible;
import nmd.primal.forgecraft.blocks.machine.BloomeryBase;
import nmd.primal.forgecraft.crafting.CrucibleCrafting;
import nmd.primal.forgecraft.init.ModItems;

View File

@@ -0,0 +1,57 @@
package nmd.primal.forgecraft.tiles;
import net.minecraft.item.ItemStack;
import nmd.primal.core.common.helper.RecipeHelper;
import nmd.primal.forgecraft.items.parts.ToolPart;
import nmd.primal.forgecraft.items.tools.CustomAxe;
import nmd.primal.forgecraft.items.tools.CustomHoe;
import nmd.primal.forgecraft.items.tools.CustomPickaxe;
import nmd.primal.forgecraft.items.tools.CustomShovel;
public class TileWorkbench extends TileBaseSlot{
public boolean isItemValidForSlot(int index, ItemStack stack) {
/*if(index == 0){
if(RecipeHelper.isOreName(stack.getItem(), "stickTreatedWood") ||
RecipeHelper.isOreName(stack.getItem(), "stickLacquer") ||
RecipeHelper.isOreName(stack.getItem(), "cordageGeneral")){
return true;
}
}
if(index == 1){
if(RecipeHelper.isOreName(stack.getItem(), "stickTreatedWood") ||
RecipeHelper.isOreName(stack.getItem(), "stickLacquer") ||
RecipeHelper.isOreName(stack.getItem(), "cordageGeneral")){
return true;
}
}*/
if(index == 2){
if(RecipeHelper.isOreName(stack.getItem(), "stickTreatedWood") || RecipeHelper.isOreName(stack.getItem(), "stickLacquer")){
return true;
}
}
/*if(index == 3){
if (RecipeHelper.isOreName(stack.getItem(), "cordageGeneral")) {
return true;
}
}*/
if(index == 3){
if ( (stack.getItem() instanceof ToolPart)) {
return true;
}
}
if(index == 4){
if (RecipeHelper.isOreName(stack.getItem(), "pinBasic")) {
return true;
}
}
if(index == 5){
if(stack.getItem() instanceof CustomAxe ||
stack.getItem() instanceof CustomHoe ||
stack.getItem() instanceof CustomPickaxe ||
stack.getItem() instanceof CustomShovel){
return true;
}
}
return false;
}
}

View File

@@ -182,6 +182,20 @@ public interface ForgeHandler {
return true;
}
}
if (RecipeHelper.isOreName(pItem, "ingotWootz")) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(ModItems.wootzingotball, 1));
player.inventory.getCurrentItem().shrink(1);
return true;
}
}
if (RecipeHelper.isOreName(pItem, "nuggetWootz")) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(ModItems.wootzchunk, 1));
player.inventory.getCurrentItem().shrink(1);
return true;
}
}
}
return false;

View File

@@ -0,0 +1,18 @@
{
"forge_marker":1,
"defaults": {
"textures": {
"particle": "blocks/planks_oak",
"texture": "blocks/planks_oak",
"texture1": "blocks/planks_big_oak",
"texture2": "forgecraft:blocks/stone_slab"
},
"parent": "forgecraft:workbench"
},
"variants": {
"facing=north": { "model": "forgecraft:workbench" },
"facing=east": { "model": "forgecraft:workbench", "y": 90 },
"facing=south": { "model": "forgecraft:workbench", "y": 180 },
"facing=west": { "model": "forgecraft:workbench", "y": 270 }
}
}

View File

@@ -27,6 +27,8 @@ tile.ironchisel.name=Wrought Iron Chisel
tile.copperchisel.name=Copper Chisel
tile.bronzechisel.name=Bronze Chisel
tile.toolbench.name=Tool Bench
item.bronzeingotball.name=Bronze Ingot
item.bronzechunk.name=Bronze Chunk
item.ironingotball.name=Wrought Iron Ingot
@@ -154,8 +156,11 @@ jei.category.forgecraft.crucible=Crucible Crafting
jei.category.forgecraft.anvil=Anvil Crafting
jei.category.forgecraft.casting=Casting
jei.category.forgecraft.forging=Forging
jei.category.forgecraft.workbench=Tool Bench
jei.category.forgecraft.toolbench=Tool Bench
jei.info.forgecraft.crucible=Crucible Crafting
jei.info.forgecraft.anvil=Anvil Crafting
jei.info.forgecraft.casting=Casting
jei.info.forgecraft.forging=Forging
jei.info.forgecraft.forging=Forging
jei.info.forgecraft.workbench=Tool Bench

View File

@@ -0,0 +1,371 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "blocks/e_particle",
"texture": "blocks/e_texture"
},
"elements": [
{
"__comment": "Box21",
"from": [ 6, 0, 1 ],
"to": [ 10, 1, 2 ],
"faces": {
"down": { "uv": [ 6, 14, 10, 15 ], "texture": "#texture" },
"up": { "uv": [ 6, 1, 10, 2 ], "texture": "#texture" },
"north": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture" },
"west": { "uv": [ 1, 15, 2, 16 ], "texture": "#texture" },
"east": { "uv": [ 14, 15, 15, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box22",
"from": [ 4, 0, 2 ],
"to": [ 12, 1, 3 ],
"faces": {
"down": { "uv": [ 4, 13, 12, 14 ], "texture": "#texture" },
"up": { "uv": [ 4, 2, 12, 3 ], "texture": "#texture" },
"north": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" },
"west": { "uv": [ 2, 15, 3, 16 ], "texture": "#texture" },
"east": { "uv": [ 13, 15, 14, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box21",
"from": [ 2, 0, 5 ],
"to": [ 3, 1, 9 ],
"faces": {
"down": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture", "rotation": 90 },
"up": { "uv": [ 6, 0, 10, 1 ], "texture": "#texture", "rotation": 270 },
"north": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture" },
"south": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture" },
"west": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box22",
"from": [ 3, 0, 3 ],
"to": [ 4, 1, 11 ],
"faces": {
"down": { "uv": [ 4, 14, 12, 15 ], "texture": "#texture", "rotation": 90 },
"up": { "uv": [ 4, 1, 12, 2 ], "texture": "#texture", "rotation": 270 },
"north": { "uv": [ 14, 15, 15, 16 ], "texture": "#texture" },
"south": { "uv": [ 1, 15, 2, 16 ], "texture": "#texture" },
"west": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box21",
"from": [ 13, 0, 5 ],
"to": [ 14, 1, 9 ],
"faces": {
"down": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture", "rotation": 270 },
"up": { "uv": [ 6, 0, 10, 1 ], "texture": "#texture", "rotation": 90 },
"north": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture" },
"south": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture" },
"east": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box22",
"from": [ 12, 0, 3 ],
"to": [ 13, 1, 11 ],
"faces": {
"down": { "uv": [ 4, 14, 12, 15 ], "texture": "#texture", "rotation": 270 },
"up": { "uv": [ 4, 1, 12, 2 ], "texture": "#texture", "rotation": 90 },
"north": { "uv": [ 1, 15, 2, 16 ], "texture": "#texture" },
"south": { "uv": [ 14, 15, 15, 16 ], "texture": "#texture" },
"east": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box21",
"from": [ 6, 0, 12 ],
"to": [ 10, 1, 13 ],
"faces": {
"down": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture", "rotation": 180 },
"up": { "uv": [ 6, 0, 10, 1 ], "texture": "#texture", "rotation": 180 },
"south": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture" },
"west": { "uv": [ 15, 15, 16, 16 ], "texture": "#texture" },
"east": { "uv": [ 0, 15, 1, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box22",
"from": [ 4, 0, 11 ],
"to": [ 12, 1, 12 ],
"faces": {
"down": { "uv": [ 4, 14, 12, 15 ], "texture": "#texture", "rotation": 180 },
"up": { "uv": [ 4, 1, 12, 2 ], "texture": "#texture", "rotation": 180 },
"south": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" },
"west": { "uv": [ 14, 15, 15, 16 ], "texture": "#texture" },
"east": { "uv": [ 1, 15, 2, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box29",
"from": [ 4, 0, 3 ],
"to": [ 12, 1, 11 ],
"faces": {
"down": { "uv": [ 4, 5, 12, 13 ], "texture": "#texture" },
"up": { "uv": [ 4, 3, 12, 11 ], "texture": "#texture" }
}
},
{
"__comment": "Box35",
"from": [ 4, 1, 1 ],
"to": [ 6, 2, 2 ],
"faces": {
"down": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture" },
"up": { "uv": [ 4, 1, 6, 2 ], "texture": "#texture" },
"north": { "uv": [ 10, 14, 12, 15 ], "texture": "#texture" },
"south": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture" },
"west": { "uv": [ 1, 14, 2, 15 ], "texture": "#texture" },
"east": { "uv": [ 14, 14, 15, 15 ], "texture": "#texture" }
}
},
{
"__comment": "Box35",
"from": [ 10, 1, 1 ],
"to": [ 12, 2, 2 ],
"faces": {
"down": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture" },
"up": { "uv": [ 4, 1, 6, 2 ], "texture": "#texture" },
"north": { "uv": [ 10, 14, 12, 15 ], "texture": "#texture" },
"south": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture" },
"west": { "uv": [ 1, 14, 2, 15 ], "texture": "#texture" },
"east": { "uv": [ 14, 14, 15, 15 ], "texture": "#texture" }
}
},
{
"__comment": "Box21",
"from": [ 6, 1, 0 ],
"to": [ 10, 2, 1 ],
"faces": {
"down": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture" },
"up": { "uv": [ 6, 0, 10, 1 ], "texture": "#texture" },
"north": { "uv": [ 6, 14, 10, 15 ], "texture": "#texture" },
"south": { "uv": [ 6, 14, 10, 15 ], "texture": "#texture" },
"west": { "uv": [ 0, 14, 1, 15 ], "texture": "#texture" },
"east": { "uv": [ 15, 14, 16, 15 ], "texture": "#texture" }
}
},
{
"__comment": "Box21",
"from": [ 1, 1, 5 ],
"to": [ 2, 2, 9 ],
"faces": {
"down": { "uv": [ 6, 14, 10, 15 ], "texture": "#texture", "rotation": 90 },
"up": { "uv": [ 6, 1, 10, 2 ], "texture": "#texture", "rotation": 270 },
"north": { "uv": [ 14, 15, 15, 16 ], "texture": "#texture" },
"south": { "uv": [ 1, 15, 2, 16 ], "texture": "#texture" },
"west": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture" },
"east": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box35",
"from": [ 2, 1, 9 ],
"to": [ 3, 2, 11 ],
"faces": {
"down": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture", "rotation": 90 },
"up": { "uv": [ 4, 1, 6, 2 ], "texture": "#texture", "rotation": 270 },
"north": { "uv": [ 14, 14, 15, 15 ], "texture": "#texture" },
"south": { "uv": [ 1, 14, 2, 15 ], "texture": "#texture" },
"west": { "uv": [ 10, 14, 12, 15 ], "texture": "#texture" },
"east": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture" }
}
},
{
"__comment": "Box35",
"from": [ 2, 1, 3 ],
"to": [ 3, 2, 5 ],
"faces": {
"down": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture", "rotation": 90 },
"up": { "uv": [ 4, 1, 6, 2 ], "texture": "#texture", "rotation": 270 },
"north": { "uv": [ 14, 14, 15, 15 ], "texture": "#texture" },
"south": { "uv": [ 1, 14, 2, 15 ], "texture": "#texture" },
"west": { "uv": [ 10, 14, 12, 15 ], "texture": "#texture" },
"east": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture" }
}
},
{
"__comment": "Box21",
"from": [ 14, 1, 5 ],
"to": [ 15, 2, 9 ],
"faces": {
"down": { "uv": [ 6, 14, 10, 15 ], "texture": "#texture", "rotation": 270 },
"up": { "uv": [ 6, 1, 10, 2 ], "texture": "#texture", "rotation": 90 },
"north": { "uv": [ 1, 15, 2, 16 ], "texture": "#texture" },
"south": { "uv": [ 14, 15, 15, 16 ], "texture": "#texture" },
"west": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture" },
"east": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box35",
"from": [ 13, 1, 3 ],
"to": [ 14, 2, 5 ],
"faces": {
"down": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture", "rotation": 270 },
"up": { "uv": [ 4, 1, 6, 2 ], "texture": "#texture", "rotation": 90 },
"north": { "uv": [ 1, 14, 2, 15 ], "texture": "#texture" },
"south": { "uv": [ 14, 14, 15, 15 ], "texture": "#texture" },
"west": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture" },
"east": { "uv": [ 10, 14, 12, 15 ], "texture": "#texture" }
}
},
{
"__comment": "Box35",
"from": [ 13, 1, 9 ],
"to": [ 14, 2, 11 ],
"faces": {
"down": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture", "rotation": 270 },
"up": { "uv": [ 4, 1, 6, 2 ], "texture": "#texture", "rotation": 90 },
"north": { "uv": [ 1, 14, 2, 15 ], "texture": "#texture" },
"south": { "uv": [ 14, 14, 15, 15 ], "texture": "#texture" },
"west": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture" },
"east": { "uv": [ 10, 14, 12, 15 ], "texture": "#texture" }
}
},
{
"__comment": "Box35",
"from": [ 10, 1, 12 ],
"to": [ 12, 2, 13 ],
"faces": {
"down": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture", "rotation": 180 },
"up": { "uv": [ 4, 1, 6, 2 ], "texture": "#texture", "rotation": 180 },
"north": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture" },
"south": { "uv": [ 10, 14, 12, 15 ], "texture": "#texture" },
"west": { "uv": [ 14, 14, 15, 15 ], "texture": "#texture" },
"east": { "uv": [ 1, 14, 2, 15 ], "texture": "#texture" }
}
},
{
"__comment": "Box21",
"from": [ 6, 1, 13 ],
"to": [ 10, 2, 14 ],
"faces": {
"down": { "uv": [ 6, 14, 10, 15 ], "texture": "#texture", "rotation": 180 },
"up": { "uv": [ 6, 1, 10, 2 ], "texture": "#texture", "rotation": 180 },
"north": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture" },
"south": { "uv": [ 6, 15, 10, 16 ], "texture": "#texture" },
"west": { "uv": [ 14, 15, 15, 16 ], "texture": "#texture" },
"east": { "uv": [ 1, 15, 2, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box35",
"from": [ 4, 1, 12 ],
"to": [ 6, 2, 13 ],
"faces": {
"down": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture", "rotation": 180 },
"up": { "uv": [ 4, 1, 6, 2 ], "texture": "#texture", "rotation": 180 },
"north": { "uv": [ 4, 14, 6, 15 ], "texture": "#texture" },
"south": { "uv": [ 10, 14, 12, 15 ], "texture": "#texture" },
"west": { "uv": [ 14, 14, 15, 15 ], "texture": "#texture" },
"east": { "uv": [ 1, 14, 2, 15 ], "texture": "#texture" }
}
},
{
"__comment": "Box47",
"from": [ 3, 1, 2 ],
"to": [ 4, 2, 3 ],
"faces": {
"down": { "uv": [ 3, 13, 4, 14 ], "texture": "#texture" },
"up": { "uv": [ 3, 2, 4, 3 ], "texture": "#texture" },
"north": { "uv": [ 12, 14, 13, 15 ], "texture": "#texture" },
"south": { "uv": [ 3, 14, 4, 15 ], "texture": "#texture" },
"west": { "uv": [ 2, 14, 3, 15 ], "texture": "#texture" },
"east": { "uv": [ 13, 14, 14, 15 ], "texture": "#texture" }
}
},
{
"__comment": "Box47",
"from": [ 3, 1, 11 ],
"to": [ 4, 2, 12 ],
"faces": {
"down": { "uv": [ 3, 13, 4, 14 ], "texture": "#texture" },
"up": { "uv": [ 3, 2, 4, 3 ], "texture": "#texture" },
"north": { "uv": [ 12, 14, 13, 15 ], "texture": "#texture" },
"south": { "uv": [ 3, 14, 4, 15 ], "texture": "#texture" },
"west": { "uv": [ 2, 14, 3, 15 ], "texture": "#texture" },
"east": { "uv": [ 13, 14, 14, 15 ], "texture": "#texture" }
}
},
{
"__comment": "Box47",
"from": [ 12, 1, 11 ],
"to": [ 13, 2, 12 ],
"faces": {
"down": { "uv": [ 3, 13, 4, 14 ], "texture": "#texture" },
"up": { "uv": [ 3, 2, 4, 3 ], "texture": "#texture" },
"north": { "uv": [ 12, 14, 13, 15 ], "texture": "#texture" },
"south": { "uv": [ 3, 14, 4, 15 ], "texture": "#texture" },
"west": { "uv": [ 2, 14, 3, 15 ], "texture": "#texture" },
"east": { "uv": [ 13, 14, 14, 15 ], "texture": "#texture" }
}
},
{
"__comment": "Box47",
"from": [ 12, 1, 2 ],
"to": [ 13, 2, 3 ],
"faces": {
"down": { "uv": [ 3, 13, 4, 14 ], "texture": "#texture" },
"up": { "uv": [ 3, 2, 4, 3 ], "texture": "#texture" },
"north": { "uv": [ 12, 14, 13, 15 ], "texture": "#texture" },
"south": { "uv": [ 3, 14, 4, 15 ], "texture": "#texture" },
"west": { "uv": [ 2, 14, 3, 15 ], "texture": "#texture" },
"east": { "uv": [ 13, 14, 14, 15 ], "texture": "#texture" }
}
},
{
"__comment": "Box51",
"from": [ 7.5, 0, 13 ],
"to": [ 8.5, 1, 21.5 ],
"rotation": { "origin": [ 7.5, 0, 13 ], "axis": "x", "angle": -22.5 },
"faces": {
"down": { "uv": [ 7.5, 0, 8.5, 3 ], "texture": "#texture" },
"up": { "uv": [ 7.5, 13, 8.5, 16 ], "texture": "#texture" },
"south": { "uv": [ 7.5, 15, 8.5, 16 ], "texture": "#texture" },
"west": { "uv": [ 13, 15, 16, 16 ], "texture": "#texture" },
"east": { "uv": [ 0, 15, 3, 16 ], "texture": "#texture" }
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [ 113, 0, 0 ],
"translation": [ 0, 8, 9.1437 ]
},
"thirdperson_lefthand": {
"rotation": [ 113, 0, 0 ],
"translation": [ 0, 8, 9.1437 ]
},
"firstperson_righthand": {
"rotation": [ 113, 0, 0 ],
"translation": [ 0, 8, 9.143 ]
},
"firstperson_lefthand": {
"rotation": [ 113, 0, 0 ],
"translation": [ 0, 8, 9.143 ]
},
"gui": {
"rotation": [ 30, 45, 0 ],
"translation": [ 0, 2, 0 ],
"scale": [ 0.625, 0.625, 0.625 ]
},
"head": {
"rotation": [ 0, 0, 180 ],
"translation": [ 0, 0, 1 ],
"scale": [ 1.1, 1.1, 1.1 ]
},
"ground": {
"translation": [ 0, 2, 0 ],
"scale": [ 0.25, 0.25, 0.25 ]
},
"fixed": {
"rotation": [ -90, 180, 0 ],
"translation": [ 0, 0, -7 ]
}
}
}

View File

@@ -0,0 +1,175 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "blocks/e_particle",
"texture": "blocks/stone_slab",
"texture1": "blocks/planks_oak"
},
"elements": [
{
"__comment": "Box1",
"from": [ 0, 0, 0 ],
"to": [ 16, 2, 6 ],
"faces": {
"down": { "uv": [ 0, 10, 16, 16 ], "texture": "#texture" },
"up": { "uv": [ 0, 0, 16, 6 ], "texture": "#texture" },
"north": { "uv": [ 0, 14, 16, 16 ], "texture": "#texture" },
"south": { "uv": [ 0, 14, 16, 16 ], "texture": "#texture" },
"west": { "uv": [ 0, 14, 6, 16 ], "texture": "#texture" },
"east": { "uv": [ 10, 14, 16, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box2",
"from": [ 2, 2, 0.5 ],
"to": [ 3, 13, 1.5 ],
"faces": {
"down": { "uv": [ 3.5, 15, 4.5, 16 ], "texture": "#texture1" },
"up": { "uv": [ 3.5, 0, 4.5, 1 ], "texture": "#texture1" },
"north": { "uv": [ 11.5, 3, 12.5, 14 ], "texture": "#texture1" },
"south": { "uv": [ 3.5, 3, 4.5, 14 ], "texture": "#texture1" },
"west": { "uv": [ 0, 3, 1, 14 ], "texture": "#texture1" },
"east": { "uv": [ 15, 3, 16, 14 ], "texture": "#texture1" }
}
},
{
"__comment": "Box2",
"from": [ 13, 2, 0.5 ],
"to": [ 14, 13, 1.5 ],
"faces": {
"down": { "uv": [ 3.5, 15, 4.5, 16 ], "texture": "#texture1" },
"up": { "uv": [ 3.5, 0, 4.5, 1 ], "texture": "#texture1" },
"north": { "uv": [ 11.5, 3, 12.5, 14 ], "texture": "#texture1" },
"south": { "uv": [ 3.5, 3, 4.5, 14 ], "texture": "#texture1" },
"west": { "uv": [ 0, 3, 1, 14 ], "texture": "#texture1" },
"east": { "uv": [ 15, 3, 16, 14 ], "texture": "#texture1" }
}
},
{
"__comment": "Box4",
"from": [ 1, 12, 0.5 ],
"to": [ 2, 13, 3.5 ],
"faces": {
"down": { "uv": [ 2.5, 13, 3.5, 16 ], "texture": "#texture1" },
"up": { "uv": [ 2.5, 0, 3.5, 3 ], "texture": "#texture1" },
"north": { "uv": [ 12.5, 3, 13.5, 4 ], "texture": "#texture1" },
"south": { "uv": [ 2.5, 3, 3.5, 4 ], "texture": "#texture1" },
"west": { "uv": [ 0, 3, 3, 4 ], "texture": "#texture1" },
"east": { "uv": [ 13, 3, 16, 4 ], "texture": "#texture1" }
}
},
{
"__comment": "Box4",
"from": [ 3, 12, 0.5 ],
"to": [ 4, 13, 3.5 ],
"faces": {
"down": { "uv": [ 2.5, 13, 3.5, 16 ], "texture": "#texture1" },
"up": { "uv": [ 2.5, 0, 3.5, 3 ], "texture": "#texture1" },
"north": { "uv": [ 12.5, 3, 13.5, 4 ], "texture": "#texture1" },
"south": { "uv": [ 2.5, 3, 3.5, 4 ], "texture": "#texture1" },
"west": { "uv": [ 0, 3, 3, 4 ], "texture": "#texture1" },
"east": { "uv": [ 13, 3, 16, 4 ], "texture": "#texture1" }
}
},
{
"__comment": "Box4",
"from": [ 14, 12, 0.5 ],
"to": [ 15, 13, 3.5 ],
"faces": {
"down": { "uv": [ 2.5, 13, 3.5, 16 ], "texture": "#texture1" },
"up": { "uv": [ 2.5, 0, 3.5, 3 ], "texture": "#texture1" },
"north": { "uv": [ 12.5, 3, 13.5, 4 ], "texture": "#texture1" },
"south": { "uv": [ 2.5, 3, 3.5, 4 ], "texture": "#texture1" },
"west": { "uv": [ 0, 3, 3, 4 ], "texture": "#texture1" },
"east": { "uv": [ 13, 3, 16, 4 ], "texture": "#texture1" }
}
},
{
"__comment": "Box4",
"from": [ 12, 12, 0.5 ],
"to": [ 13, 13, 3.5 ],
"faces": {
"down": { "uv": [ 2.5, 13, 3.5, 16 ], "texture": "#texture1" },
"up": { "uv": [ 2.5, 0, 3.5, 3 ], "texture": "#texture1" },
"north": { "uv": [ 12.5, 3, 13.5, 4 ], "texture": "#texture1" },
"south": { "uv": [ 2.5, 3, 3.5, 4 ], "texture": "#texture1" },
"west": { "uv": [ 0, 3, 3, 4 ], "texture": "#texture1" },
"east": { "uv": [ 13, 3, 16, 4 ], "texture": "#texture1" }
}
},
{
"__comment": "Box2",
"from": [ 7.5, 2, 0.5 ],
"to": [ 8.5, 13, 1.5 ],
"faces": {
"down": { "uv": [ 3.5, 15, 4.5, 16 ], "texture": "#texture1" },
"up": { "uv": [ 3.5, 0, 4.5, 1 ], "texture": "#texture1" },
"north": { "uv": [ 11.5, 3, 12.5, 14 ], "texture": "#texture1" },
"south": { "uv": [ 3.5, 3, 4.5, 14 ], "texture": "#texture1" },
"west": { "uv": [ 0, 3, 1, 14 ], "texture": "#texture1" },
"east": { "uv": [ 15, 3, 16, 14 ], "texture": "#texture1" }
}
},
{
"__comment": "Box4",
"from": [ 6.5, 12, 0.5 ],
"to": [ 7.5, 13, 3.5 ],
"faces": {
"down": { "uv": [ 2.5, 13, 3.5, 16 ], "texture": "#texture1" },
"up": { "uv": [ 2.5, 0, 3.5, 3 ], "texture": "#texture1" },
"north": { "uv": [ 12.5, 3, 13.5, 4 ], "texture": "#texture1" },
"south": { "uv": [ 2.5, 3, 3.5, 4 ], "texture": "#texture1" },
"west": { "uv": [ 0, 3, 3, 4 ], "texture": "#texture1" },
"east": { "uv": [ 13, 3, 16, 4 ], "texture": "#texture1" }
}
},
{
"__comment": "Box4",
"from": [ 8.5, 12, 0.5 ],
"to": [ 9.5, 13, 3.5 ],
"faces": {
"down": { "uv": [ 2.5, 13, 3.5, 16 ], "texture": "#texture1" },
"up": { "uv": [ 2.5, 0, 3.5, 3 ], "texture": "#texture1" },
"north": { "uv": [ 12.5, 3, 13.5, 4 ], "texture": "#texture1" },
"south": { "uv": [ 2.5, 3, 3.5, 4 ], "texture": "#texture1" },
"west": { "uv": [ 0, 3, 3, 4 ], "texture": "#texture1" },
"east": { "uv": [ 13, 3, 16, 4 ], "texture": "#texture1" }
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [ 75, 45, 0 ],
"translation": [ 2.75, 1.8, 2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"thirdperson_lefthand": {
"rotation": [ 75, 45, 0 ],
"translation": [ 2.75, 1.8, 2.75 ],
"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, 45, 0 ],
"translation": [ 2.19, -0.655, 0 ],
"scale": [ 0.625, 0.625, 0.625 ]
},
"ground": {
"translation": [ 0, 3, 0 ],
"scale": [ 0.25, 0.25, 0.25 ]
},
"fixed": {
"rotation": [ 0, 180, 0 ],
"translation": [ 0, 0, -5.6 ]
}
}
}

View File

@@ -0,0 +1,392 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "blocks/planks_oak",
"texture": "blocks/planks_oak",
"texture1": "blocks/planks_big_oak",
"texture2": "forgecraft:blocks/stone_slab"
},
"elements": [
{
"__comment": "Box11",
"from": [ 0, 8, 0 ],
"to": [ 16, 10, 8 ],
"faces": {
"down": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture2" },
"up": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture2" },
"north": { "uv": [ 0, 6, 16, 8 ], "texture": "#texture2" },
"south": { "uv": [ 0, 6, 16, 8 ], "texture": "#texture2" },
"west": { "uv": [ 0, 6, 8, 8 ], "texture": "#texture2" },
"east": { "uv": [ 8, 6, 16, 8 ], "texture": "#texture2" }
}
},
{
"__comment": "Box12",
"from": [ 0, 10, 0 ],
"to": [ 13.5, 10.5, 8 ],
"faces": {
"up": { "uv": [ 0, 2, 13.5, 10 ], "texture": "#texture1" },
"north": { "uv": [ 2.5, 5.5, 16, 6 ], "texture": "#texture1" },
"south": { "uv": [ 0, 5.5, 13.5, 6 ], "texture": "#texture1" },
"west": { "uv": [ 0, 5.5, 8, 6 ], "texture": "#texture1" },
"east": { "uv": [ 8, 5.5, 16, 6 ], "texture": "#texture1" }
}
},
{
"__comment": "Box17",
"from": [ 0, 11, 0 ],
"to": [ 11.5, 11.5, 3 ],
"faces": {
"up": { "uv": [ 0, 8, 11.5, 11 ], "texture": "#texture1" },
"north": { "uv": [ 4.5, 4.5, 16, 5 ], "texture": "#texture1" },
"south": { "uv": [ 0, 4.5, 11.5, 5 ], "texture": "#texture1" },
"west": { "uv": [ 0, 4.5, 3, 5 ], "texture": "#texture1" },
"east": { "uv": [ 11, 4.5, 14, 5 ], "texture": "#texture1" }
}
},
{
"__comment": "Box17",
"from": [ 0, 11, 4.5 ],
"to": [ 11.5, 11.5, 8 ],
"faces": {
"up": { "uv": [ 0, 12, 11.5, 15.5 ], "texture": "#texture1" },
"north": { "uv": [ 4.5, 4.5, 16, 5 ], "texture": "#texture1" },
"south": { "uv": [ 0, 4.5, 11.5, 5 ], "texture": "#texture1" },
"west": { "uv": [ 4.5, 4.5, 8, 5 ], "texture": "#texture1" },
"east": { "uv": [ 8, 4.5, 11.5, 5 ], "texture": "#texture1" }
}
},
{
"__comment": "Box19",
"from": [ 0, 11, 3 ],
"to": [ 1, 12, 4.5 ],
"faces": {
"up": { "uv": [ 0, 3, 1, 4.5 ], "texture": "#texture1" },
"north": { "uv": [ 15, 4, 16, 5 ], "texture": "#texture1" },
"south": { "uv": [ 0, 4, 1, 5 ], "texture": "#texture1" },
"west": { "uv": [ 3, 4, 4.5, 5 ], "texture": "#texture1" },
"east": { "uv": [ 11.5, 4, 13, 5 ], "texture": "#texture1" }
}
},
{
"__comment": "Box12",
"from": [ 0, 10.5, 0 ],
"to": [ 12.5, 11, 8 ],
"faces": {
"up": { "uv": [ 3.5, 6.5, 16, 14.5 ], "texture": "#texture1" },
"north": { "uv": [ 3.5, 5, 16, 5.5 ], "texture": "#texture1" },
"south": { "uv": [ 0, 5, 12.5, 5.5 ], "texture": "#texture1" },
"west": { "uv": [ 0, 5, 8, 5.5 ], "texture": "#texture1" },
"east": { "uv": [ 8, 5, 16, 5.5 ], "texture": "#texture1" }
}
},
{
"__comment": "Box17",
"from": [ 0, 11.5, 4.5 ],
"to": [ 10.5, 12, 8 ],
"faces": {
"up": { "uv": [ 0, 0, 3.5, 10.5 ], "texture": "#texture1", "rotation": 90 },
"north": { "uv": [ 5.5, 4, 16, 4.5 ], "texture": "#texture1" },
"south": { "uv": [ 0, 4, 10.5, 4.5 ], "texture": "#texture1" },
"west": { "uv": [ 4.5, 4, 8, 4.5 ], "texture": "#texture1" },
"east": { "uv": [ 8, 4, 11.5, 4.5 ], "texture": "#texture1" }
}
},
{
"__comment": "Box17",
"from": [ 0, 11.5, 0 ],
"to": [ 10.5, 12, 3 ],
"faces": {
"up": { "uv": [ 0, 0, 10.5, 3 ], "texture": "#texture1" },
"north": { "uv": [ 5.5, 4, 16, 4.5 ], "texture": "#texture1" },
"south": { "uv": [ 0, 4, 10.5, 4.5 ], "texture": "#texture1" },
"west": { "uv": [ 0, 4, 3, 4.5 ], "texture": "#texture1" },
"east": { "uv": [ 5, 8, 8, 8.5 ], "texture": "#texture1" }
}
},
{
"__comment": "Box17",
"from": [ 0, 0, 0 ],
"to": [ 2, 8, 2 ],
"faces": {
"down": { "uv": [ 0, 14, 2, 16 ], "texture": "#texture" },
"north": { "uv": [ 8, 8, 10, 16 ], "texture": "#texture" },
"south": { "uv": [ 10, 8, 12, 16 ], "texture": "#texture" },
"west": { "uv": [ 12, 8, 14, 16 ], "texture": "#texture" },
"east": { "uv": [ 14, 8, 16, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box17",
"from": [ 14, 0, 0 ],
"to": [ 16, 8, 2 ],
"faces": {
"down": { "uv": [ 14, 14, 16, 16 ], "texture": "#texture" },
"north": { "uv": [ 0, 8, 2, 16 ], "texture": "#texture" },
"south": { "uv": [ 2.5, 8, 4.5, 16 ], "texture": "#texture" },
"west": { "uv": [ 4, 8, 6, 16 ], "texture": "#texture" },
"east": { "uv": [ 6, 8, 8, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box17",
"from": [ 0, 0, 6 ],
"to": [ 2, 8, 8 ],
"faces": {
"down": { "uv": [ 0, 8, 2, 10 ], "texture": "#texture" },
"north": { "uv": [ 14, 0, 16, 8 ], "texture": "#texture" },
"south": { "uv": [ 12, 0, 14, 8 ], "texture": "#texture" },
"west": { "uv": [ 10, 0, 12, 8 ], "texture": "#texture" },
"east": { "uv": [ 8, 0, 10, 8 ], "texture": "#texture" }
}
},
{
"__comment": "Box17",
"from": [ 14, 0, 6 ],
"to": [ 16, 8, 8 ],
"faces": {
"down": { "uv": [ 14, 8, 16, 10 ], "texture": "#texture" },
"north": { "uv": [ 0, 0, 2, 8 ], "texture": "#texture" },
"south": { "uv": [ 2, 0, 4, 8 ], "texture": "#texture" },
"west": { "uv": [ 4, 0, 6, 8 ], "texture": "#texture" },
"east": { "uv": [ 6, 0, 8, 8 ], "texture": "#texture" }
}
},
{
"__comment": "Box21",
"from": [ 2, 1, 0.5 ],
"to": [ 14, 2, 1.5 ],
"faces": {
"down": { "uv": [ 3, 9, 15, 10 ], "texture": "#texture1" },
"up": { "uv": [ 2, 6, 14, 7 ], "texture": "#texture1" },
"north": { "uv": [ 2, 14, 14, 15 ], "texture": "#texture1" },
"south": { "uv": [ 2, 14, 14, 15 ], "texture": "#texture1" }
}
},
{
"__comment": "Box21",
"from": [ 2, 1, 6.5 ],
"to": [ 14, 2, 7.5 ],
"faces": {
"down": { "uv": [ 2, 8.5, 14, 9.5 ], "texture": "#texture1" },
"up": { "uv": [ 2, 6, 14, 7 ], "texture": "#texture1" },
"north": { "uv": [ 2, 14, 14, 15 ], "texture": "#texture1" },
"south": { "uv": [ 2, 14, 14, 15 ], "texture": "#texture1" }
}
},
{
"__comment": "Box23",
"from": [ 0.5, 1, 2 ],
"to": [ 1.5, 2, 6 ],
"faces": {
"down": { "uv": [ 0.5, 10, 1.5, 14 ], "texture": "#texture1" },
"up": { "uv": [ 0, 0, 1, 4 ], "texture": "#texture1" },
"west": { "uv": [ 2, 14, 6, 15 ], "texture": "#texture1" },
"east": { "uv": [ 10, 14, 14, 15 ], "texture": "#texture1" }
}
},
{
"__comment": "Box23",
"from": [ 14.5, 1, 2 ],
"to": [ 15.5, 2, 6 ],
"faces": {
"down": { "uv": [ 14.5, 10, 15.5, 14 ], "texture": "#texture1" },
"up": { "uv": [ 14.5, 6, 15.5, 10 ], "texture": "#texture1" },
"west": { "uv": [ 2, 14, 6, 15 ], "texture": "#texture1" },
"east": { "uv": [ 10, 14, 14, 15 ], "texture": "#texture1" }
}
},
{
"__comment": "Box23",
"from": [ 2.5, 1, 1.5 ],
"to": [ 3.5, 2, 6.5 ],
"faces": {
"down": { "uv": [ 2.5, 9.5, 3.5, 14.5 ], "texture": "#texture1" },
"up": { "uv": [ 0, 4, 1, 9 ], "texture": "#texture1" },
"west": { "uv": [ 1.5, 14, 6.5, 15 ], "texture": "#texture1" },
"east": { "uv": [ 9.5, 14, 14.5, 15 ], "texture": "#texture1" }
}
},
{
"__comment": "Box23",
"from": [ 4.5, 1, 1.5 ],
"to": [ 5.5, 2, 6.5 ],
"faces": {
"down": { "uv": [ 4.5, 9.5, 5.5, 14.5 ], "texture": "#texture1" },
"up": { "uv": [ 0, 9, 1, 14 ], "texture": "#texture1" },
"west": { "uv": [ 1.5, 14, 6.5, 15 ], "texture": "#texture1" },
"east": { "uv": [ 9.5, 14, 14.5, 15 ], "texture": "#texture1" }
}
},
{
"__comment": "Box23",
"from": [ 6.5, 1, 1.5 ],
"to": [ 7.5, 2, 6.5 ],
"faces": {
"down": { "uv": [ 6.5, 9.5, 7.5, 14.5 ], "texture": "#texture1" },
"up": { "uv": [ 1, 0, 2, 5 ], "texture": "#texture1" },
"west": { "uv": [ 1.5, 14, 6.5, 15 ], "texture": "#texture1" },
"east": { "uv": [ 9.5, 14, 14.5, 15 ], "texture": "#texture1" }
}
},
{
"__comment": "Box23",
"from": [ 8.5, 1, 1.5 ],
"to": [ 9.5, 2, 6.5 ],
"faces": {
"down": { "uv": [ 8.5, 9.5, 9.5, 14.5 ], "texture": "#texture1" },
"up": { "uv": [ 1, 5, 2, 10 ], "texture": "#texture1" },
"west": { "uv": [ 1.5, 14, 6.5, 15 ], "texture": "#texture1" },
"east": { "uv": [ 9.5, 14, 14.5, 15 ], "texture": "#texture1" }
}
},
{
"__comment": "Box23",
"from": [ 10.5, 1, 1.5 ],
"to": [ 11.5, 2, 6.5 ],
"faces": {
"down": { "uv": [ 10.5, 9.5, 11.5, 14.5 ], "texture": "#texture1" },
"up": { "uv": [ 1, 10, 2, 15 ], "texture": "#texture1" },
"west": { "uv": [ 1.5, 14, 6.5, 15 ], "texture": "#texture1" },
"east": { "uv": [ 9.5, 14, 14.5, 15 ], "texture": "#texture1" }
}
},
{
"__comment": "Box23",
"from": [ 12.5, 1, 1.5 ],
"to": [ 13.5, 2, 6.5 ],
"faces": {
"down": { "uv": [ 12.5, 9.5, 13.5, 14.5 ], "texture": "#texture1" },
"up": { "uv": [ 2, 0, 3, 5 ], "texture": "#texture1" },
"west": { "uv": [ 1.5, 14, 6.5, 15 ], "texture": "#texture1" },
"east": { "uv": [ 9.5, 14, 14.5, 15 ], "texture": "#texture1" }
}
},
{
"__comment": "Box23",
"from": [ 0.5, 3.5, 2 ],
"to": [ 1.5, 4.5, 6 ],
"faces": {
"down": { "uv": [ 0.5, 10, 1.5, 14 ], "texture": "#texture1" },
"up": { "uv": [ 3, 2, 4, 6 ], "texture": "#texture1" },
"west": { "uv": [ 2, 11, 6, 12 ], "texture": "#texture1" },
"east": { "uv": [ 10, 11, 14, 12 ], "texture": "#texture1" }
}
},
{
"__comment": "Box23",
"from": [ 0.5, 6, 2 ],
"to": [ 1.5, 7, 6 ],
"faces": {
"down": { "uv": [ 0.5, 10, 1.5, 14 ], "texture": "#texture1" },
"up": { "uv": [ 7, 0, 8, 4 ], "texture": "#texture1" },
"west": { "uv": [ 2, 10, 6, 11 ], "texture": "#texture1" },
"east": { "uv": [ 10, 10, 14, 11 ], "texture": "#texture1" }
}
},
{
"__comment": "Box23",
"from": [ 14.5, 3.5, 2 ],
"to": [ 15.5, 4.5, 6 ],
"faces": {
"down": { "uv": [ 0.5, 10, 1.5, 14 ], "texture": "#texture1" },
"up": { "uv": [ 7, 0, 8, 4 ], "texture": "#texture1" },
"west": { "uv": [ 2, 10, 6, 11 ], "texture": "#texture1" },
"east": { "uv": [ 10, 10, 14, 11 ], "texture": "#texture1" }
}
},
{
"__comment": "Box23",
"from": [ 14.5, 6, 2 ],
"to": [ 15.5, 7, 6 ],
"faces": {
"down": { "uv": [ 0.5, 10, 1.5, 14 ], "texture": "#texture1" },
"up": { "uv": [ 3, 2, 4, 6 ], "texture": "#texture1" },
"west": { "uv": [ 2, 11, 6, 12 ], "texture": "#texture1" },
"east": { "uv": [ 10, 11, 14, 12 ], "texture": "#texture1" }
}
},
{
"__comment": "Box21",
"from": [ 2, 3.5, 0.5 ],
"to": [ 14, 4.5, 1.5 ],
"faces": {
"down": { "uv": [ 2, 14.5, 14, 15.5 ], "texture": "#texture1" },
"up": { "uv": [ 2, 1, 14, 2 ], "texture": "#texture1" },
"north": { "uv": [ 2, 12, 14, 13 ], "texture": "#texture1" },
"south": { "uv": [ 2, 10, 14, 11 ], "texture": "#texture1" }
}
},
{
"__comment": "Box21",
"from": [ 2, 6, 0.5 ],
"to": [ 14, 7, 1.5 ],
"faces": {
"down": { "uv": [ 2, 14.5, 14, 15.5 ], "texture": "#texture1" },
"up": { "uv": [ 3, 5, 15, 6 ], "texture": "#texture1" },
"north": { "uv": [ 2, 9, 14, 10 ], "texture": "#texture1" },
"south": { "uv": [ 2, 9, 14, 10 ], "texture": "#texture1" }
}
},
{
"__comment": "Box37",
"from": [ 0.5, 8.5, 8 ],
"to": [ 1, 9.5, 9 ],
"faces": {
"down": { "uv": [ 0.5, 7, 1, 8 ], "texture": "#texture1" },
"up": { "uv": [ 0.5, 8, 1, 9 ], "texture": "#texture1" },
"north": { "uv": [ 15, 6.5, 15.5, 7.5 ], "texture": "#texture1" },
"south": { "uv": [ 0.5, 6.5, 1, 7.5 ], "texture": "#texture1" },
"west": { "uv": [ 8, 6.5, 9, 7.5 ], "texture": "#texture1" },
"east": { "uv": [ 7, 6.5, 8, 7.5 ], "texture": "#texture1" }
}
},
{
"__comment": "Box37",
"from": [ 2, 8.5, 8 ],
"to": [ 2.5, 9.5, 9 ],
"faces": {
"down": { "uv": [ 2, 7, 2.5, 8 ], "texture": "#texture1" },
"up": { "uv": [ 2, 8, 2.5, 9 ], "texture": "#texture1" },
"north": { "uv": [ 13.5, 6.5, 14, 7.5 ], "texture": "#texture1" },
"south": { "uv": [ 2, 6.5, 2.5, 7.5 ], "texture": "#texture1" },
"west": { "uv": [ 8, 6.5, 9, 7.5 ], "texture": "#texture1" },
"east": { "uv": [ 7, 6.5, 8, 7.5 ], "texture": "#texture1" }
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [ 75, 45, 0 ],
"translation": [ 2.0869, 1.1086, 0.6956 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"thirdperson_lefthand": {
"rotation": [ 75, 45, 0 ],
"translation": [ 2.0869, 1.1086, 0.6956 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"firstperson_righthand": {
"rotation": [ 0, -45, 0 ],
"scale": [ 0.4, 0.4, 0.4 ]
},
"firstperson_lefthand": {
"rotation": [ 0, -45, 0 ],
"scale": [ 0.4, 0.4, 0.4 ]
},
"gui": {
"rotation": [ 30, 45, 0 ],
"translation": [ 1.3916, 0, 0 ],
"scale": [ 0.625, 0.625, 0.625 ]
},
"ground": {
"translation": [ 0, 3, 0 ],
"scale": [ 0.25, 0.25, 0.25 ]
},
"fixed": {
"rotation": [ 0, 180, 0 ],
"translation": [ 0, 0, -2.781 ],
"scale": [ 0.5, 0.5, 0.5 ]
}
}
}

View File

@@ -1,11 +1,11 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "forgecraft:items/iron_ingot",
"particle": "items/iron_ingot",
"texture": "blocks/planks_oak",
"texture1": "forgecraft:items/iron_ingot"
"texture1": "items/iron_ingot"
},
"elements": [
"elements": [
{
"__comment": "Cube1",
"from": [ 8, 0, 7.5 ],
@@ -93,6 +93,10 @@
"rotation": [ 0, 0, -45 ],
"translation": [ -0.75, 0, 8 ]
},
"head": {
"rotation": [ -90, 0, 0 ],
"translation": [ 5.69, 7.2, -1.3 ]
},
"ground": {
"rotation": [ 90, 0, 0 ],
"translation": [ 0, -3.5, 0 ]

View File

@@ -1,11 +1,11 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "forgecraft:items/iron_ingot",
"particle": "items/iron_ingot",
"texture": "blocks/planks_oak",
"texture1": "forgecraft:items/iron_ingot"
"texture1": "items/iron_ingot"
},
"elements": [
"elements": [
{
"__comment": "Cube6",
"from": [ 8, 0, 6.5 ],
@@ -81,6 +81,9 @@
"translation": [ -0.25, 0, 8 ],
"scale": [ 2, 2, 2 ]
},
"head": {
"translation": [ 0, 14.4, -5.2 ]
},
"ground": {
"translation": [ 0, 4, 0 ]
},

View File

@@ -0,0 +1,104 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "blocks/e_particle",
"texture": "blocks/e_texture"
},
"elements": [
{
"__comment": "Box1",
"from": [ 7, 0, 7.5 ],
"to": [ 8.5, 6, 8.5 ],
"faces": {
"down": { "uv": [ 7, 7.5, 8.5, 8.5 ], "texture": "#texture" },
"up": { "uv": [ 7, 7.5, 8.5, 8.5 ], "texture": "#texture" },
"north": { "uv": [ 7.5, 10, 9, 16 ], "texture": "#texture" },
"south": { "uv": [ 7, 10, 8.5, 16 ], "texture": "#texture" },
"west": { "uv": [ 7.5, 10, 8.5, 16 ], "texture": "#texture" },
"east": { "uv": [ 7.5, 10, 8.5, 16 ], "texture": "#texture" }
}
},
{
"__comment": "Box2",
"from": [ 7.5, 5, 7 ],
"to": [ 8, 5.5, 7.5 ],
"faces": {
"down": { "uv": [ 7.5, 8.5, 8, 9 ], "texture": "#texture" },
"up": { "uv": [ 7.5, 7, 8, 7.5 ], "texture": "#texture" },
"north": { "uv": [ 8, 10.5, 8.5, 11 ], "texture": "#texture" },
"south": { "uv": [ 7.5, 10.5, 8, 11 ], "texture": "#texture" },
"west": { "uv": [ 7, 10.5, 7.5, 11 ], "texture": "#texture" },
"east": { "uv": [ 8.5, 10.5, 9, 11 ], "texture": "#texture" }
}
},
{
"__comment": "Box3",
"from": [ 7, 4.5, 6.5 ],
"to": [ 8.5, 6, 7 ],
"faces": {
"down": { "uv": [ 7, 9, 8.5, 9.5 ], "texture": "#texture" },
"up": { "uv": [ 7, 6.5, 8.5, 7 ], "texture": "#texture" },
"north": { "uv": [ 7.5, 10, 9, 11.5 ], "texture": "#texture" },
"south": { "uv": [ 7, 10, 8.5, 11.5 ], "texture": "#texture" },
"west": { "uv": [ 6.5, 10, 7, 11.5 ], "texture": "#texture" },
"east": { "uv": [ 9, 10, 9.5, 11.5 ], "texture": "#texture" }
}
},
{
"__comment": "Box4",
"from": [ 7, 5.5, 8 ],
"to": [ 7.5, 6, 9.5 ],
"rotation": { "origin": [ 7, 5.5, 8 ], "axis": "x", "angle": 22.5 },
"faces": {
"down": { "uv": [ 7, 6, 7.5, 7.5 ], "texture": "#texture" },
"up": { "uv": [ 7, 8.5, 7.5, 10 ], "texture": "#texture" },
"north": { "uv": [ 8.5, 10, 9, 10.5 ], "texture": "#texture" },
"south": { "uv": [ 7, 10, 7.5, 10.5 ], "texture": "#texture" },
"west": { "uv": [ 8.5, 10, 10, 10.5 ], "texture": "#texture" },
"east": { "uv": [ 6, 10, 7.5, 10.5 ], "texture": "#texture" }
}
},
{
"__comment": "Box4",
"from": [ 8, 5.5, 8 ],
"to": [ 8.5, 6, 9.5 ],
"rotation": { "origin": [ 7, 5.5, 8 ], "axis": "x", "angle": 22.5 },
"faces": {
"down": { "uv": [ 7, 6.5, 7.5, 7.5 ], "texture": "#texture" },
"up": { "uv": [ 7, 8.5, 7.5, 9.5 ], "texture": "#texture" },
"north": { "uv": [ 8.5, 15, 9, 16 ], "texture": "#texture" },
"south": { "uv": [ 7, 15, 7.5, 16 ], "texture": "#texture" },
"west": { "uv": [ 8.5, 15, 9.5, 16 ], "texture": "#texture" },
"east": { "uv": [ 6.5, 15, 7.5, 16 ], "texture": "#texture" }
}
}
],
"display": {
"thirdperson_righthand": {
"translation": [ 0, 6, 0.6 ]
},
"thirdperson_lefthand": {
"translation": [ 0, 6, 0.6 ]
},
"firstperson_righthand": {
"translation": [ 1.13, 6.7, 1.13 ],
"scale": [ 0.7, 1, 1 ]
},
"firstperson_lefthand": {
"translation": [ 1.13, 6.7, 1.13 ],
"scale": [ 0.7, 1, 1 ]
},
"gui": {
"rotation": [ 0, 90, 0 ],
"translation": [ 0, 4.5, 0 ]
},
"ground": {
"translation": [ 0, 2, 0 ],
"scale": [ 0.5, 0.5, 0.5 ]
},
"fixed": {
"rotation": [ 0, -90, 0 ],
"translation": [ 0, 4, 0 ]
}
}
}

View File

@@ -1,11 +1,11 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "forgecraft:items/iron_ingot",
"particle": "items/iron_ingot",
"texture": "blocks/planks_oak",
"texture1": "forgecraft:items/iron_ingot"
"texture1": "items/iron_ingot"
},
"elements": [
"elements": [
{
"__comment": "Cube2",
"from": [ 7, 13, 3 ],
@@ -110,6 +110,10 @@
"gui": {
"rotation": [ 90, 45, -90 ]
},
"head": {
"rotation": [ -90, 90, 0 ],
"translation": [ 6.16, 7.2, -1.33 ]
},
"ground": {
"rotation": [ 90, 90, 0 ],
"translation": [ 0, -3, 0 ]

View File

@@ -1,11 +1,11 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "forgecraft:items/iron_ingot",
"texture": "forgecraft:items/iron_ingot",
"texture1": "forgecraft:items/iron_ingot"
"particle": "items/iron_ingot",
"texture": "items/iron_ingot",
"texture1": "items/iron_ingot"
},
"elements": [
"elements": [
{
"__comment": "Cube2",
"from": [ 5.5, 0, 7 ],
@@ -107,6 +107,9 @@
"gui": {
"translation": [ -0.25, 7, 8 ]
},
"head": {
"translation": [ -2.75, 14.208, -5.7 ]
},
"ground": {
"translation": [ 0, 4, 0 ]
},

View File

@@ -1,11 +1,11 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "forgecraft:items/iron_ingot",
"particle": "items/iron_ingot",
"texture": "blocks/planks_oak",
"texture1": "forgecraft:items/iron_ingot"
"texture1": "items/iron_ingot"
},
"elements": [
"elements": [
{
"__comment": "Cube1",
"from": [ 7.5, 0, 7 ],
@@ -86,6 +86,10 @@
"rotation": [ 90, 45, -90 ],
"translation": [ -0.75, -0.75, 0 ]
},
"head": {
"rotation": [ -90, 90, 0 ],
"translation": [ 6.18, 7.17, -1.3 ]
},
"ground": {
"rotation": [ 0, 0, 90 ],
"translation": [ 0, -3, 0 ]

View File

@@ -1,11 +1,11 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "forgecraft:items/iron_ingot",
"particle": "items/iron_ingot",
"texture": "blocks/planks_oak",
"texture1": "forgecraft:items/iron_ingot"
"texture1": "items/iron_ingot"
},
"elements": [
"elements": [
{
"__comment": "Cube4",
"from": [ 7, 13, 4.5 ],
@@ -100,6 +100,10 @@
"rotation": [ 90, -45, 90 ],
"translation": [ 3.5, -3.5, 0 ]
},
"head": {
"rotation": [ 0, -90, 90 ],
"translation": [ 0, 7.2, -0.7 ]
},
"ground": {
"rotation": [ 180, 0, 0 ],
"translation": [ 0, 2, 0 ]

View File

@@ -5,7 +5,7 @@
"texture": "items/iron_ingot",
"texture1": "blocks/e_texture"
},
"elements": [
"elements": [
{
"__comment": "Cube1",
"from": [ 7, 12.5, 7.5 ],
@@ -149,6 +149,10 @@
"gui": {
"rotation": [ 0, 0, -45 ]
},
"head": {
"rotation": [ -90, 0, 0 ],
"translation": [ 6.17, 7.17, -1.33 ]
},
"ground": {
"rotation": [ 90, 180, 0 ],
"translation": [ 0, -2, 0 ]

View File

@@ -1,11 +1,11 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "forgecraft:items/iron_ingot",
"particle": "items/iron_ingot",
"texture": "blocks/planks_oak",
"texture1": "forgecraft:items/iron_ingot"
"texture1": "items/iron_ingot"
},
"elements": [
"elements": [
{
"__comment": "Cube1",
"from": [ 7, -0.5, 5 ],
@@ -147,6 +147,9 @@
"rotation": [ 90, 0, 0 ],
"translation": [ -0.25, 0, 8 ]
},
"head": {
"translation": [ 0, 15.304, -6.7 ]
},
"ground": {
"translation": [ 0, 4, 0 ]
},

View File

@@ -0,0 +1,10 @@
{
"forge_marker":1,
"textures": {
"particle": "blocks/planks_oak",
"texture": "blocks/planks_oak",
"texture1": "blocks/planks_big_oak",
"texture2": "forgecraft:blocks/stone_slab"
},
"parent": "forgecraft:block/workbench"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@@ -2,7 +2,7 @@
"modid": "forgecraft",
"name": "Kitsu's Forgecraft",
"description": "Forged with sweat and blood",
"version": "1.6.23",
"version": "1.6.25",
"mcversion": "1.12.2",
"url": "",
"updateUrl": "",