diff --git a/1.11/gradle.properties b/1.11/gradle.properties index 5876b65f..49d3bb6e 100644 --- a/1.11/gradle.properties +++ b/1.11/gradle.properties @@ -5,7 +5,7 @@ org.gradle.jvmargs=-Xmx3G mod_group=nmd.primal.forgecraft mod_name=ForgeCraft -mod_version=1.2.23 +mod_version=1.2.30 forge_version=13.20.0.2311 mcp_mappings=snapshot_20170121 mc_version=1.11.2 diff --git a/1.11/src/main/java/nmd/primal/forgecraft/ModInfo.java b/1.11/src/main/java/nmd/primal/forgecraft/ModInfo.java index 08ce8f53..3806a06f 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/ModInfo.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/ModInfo.java @@ -16,7 +16,7 @@ public class ModInfo { public static final String MOD_NAME = "Kitsu's ForgeCraft"; //public static final String MOD_PREFIX = MOD_ID + ":"; public static final String MOD_CHANNEL = MOD_ID; - public static final String MOD_VERSION = "1.2.23"; + public static final String MOD_VERSION = "1.2.30"; public static final String MC_VERSIONS = "[1.11.0, 1.12.0)"; public static final String DEPENDENCIES = "required-after:forge@[13.20.0.2226,);" + "required-after:primal@[0.4,);"; diff --git a/1.11/src/main/java/nmd/primal/forgecraft/blocks/AnvilBase.java b/1.11/src/main/java/nmd/primal/forgecraft/blocks/AnvilBase.java new file mode 100644 index 00000000..6b0c7f04 --- /dev/null +++ b/1.11/src/main/java/nmd/primal/forgecraft/blocks/AnvilBase.java @@ -0,0 +1,147 @@ +package nmd.primal.forgecraft.blocks; + +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.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.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); + setUnlocalizedName(registryName); + setRegistryName(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) + { + AnvilHandler.doDrops(world, pos); + super.breakBlock(world, pos, state); + } + + @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 isFullyOpaque(IBlockState state) + { + return false; + } + + @Override + public boolean isOpaqueCube(IBlockState state) + { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) + { + return true; + } + + @Override + public EnumBlockRenderType getRenderType(IBlockState state) + { + return EnumBlockRenderType.MODEL; + } + + +} diff --git a/1.11/src/main/java/nmd/primal/forgecraft/blocks/AnvilIron.java b/1.11/src/main/java/nmd/primal/forgecraft/blocks/AnvilIron.java index 307539a8..a8a090de 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/blocks/AnvilIron.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/blocks/AnvilIron.java @@ -1,7 +1,78 @@ package nmd.primal.forgecraft.blocks; +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.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumBlockRenderType; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import nmd.primal.core.api.PrimalItems; +import nmd.primal.core.api.PrimalMaterials; +import nmd.primal.core.common.items.tools.WorkMallet; +import nmd.primal.forgecraft.CommonUtils; +import nmd.primal.forgecraft.ModInfo; +import nmd.primal.forgecraft.init.ModBlocks; +import nmd.primal.forgecraft.init.ModItems; +import nmd.primal.forgecraft.items.BaseMultiItem; +import nmd.primal.forgecraft.tiles.TileAnvil; +import nmd.primal.forgecraft.util.AnvilHandler; + /** * Created by mminaie on 6/10/17. */ -public class AnvilIron { +public class AnvilIron extends AnvilBase implements AnvilHandler { + + public AnvilIron(Material material, String registryName, Float hardness, Boolean anvil) { + super(material, registryName, hardness, anvil); + + } + + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitx, float hity, float hitz) { + + /****************************************************************************** + Crafting AnvilStone Recipes + *****************************************************************************/ + if (!world.isRemote) { + ItemStack pItem = player.inventory.getCurrentItem(); + TileAnvil tile = (TileAnvil) world.getTileEntity(pos); + if (tile != null) { + if ((pItem.getItem() instanceof WorkMallet) || (pItem.getItem() == ModItems.forgehammer)) { + String[] tempArray = new String[25]; + for (int i = 0; i < 25; i++) { + tempArray[i] = tile.getSlotStack(i).getItem().getRegistryName().toString(); + } + /*for (int i = 0; i < 25; i++) { + if (tile.getSlotStack(i).getItem() instanceof BaseMultiItem) { + if (((BaseMultiItem) tile.getSlotStack(i).getItem()).getMaterial(tile.getSlotStack(i).getItem()) != PrimalMaterials.TOOL_BASIC_STEEL + || ((BaseMultiItem) tile.getSlotStack(i).getItem()).getMaterial(tile.getSlotStack(i).getItem()) != PrimalMaterials.TOOL_CLEAN_IRON + || ((BaseMultiItem) tile.getSlotStack(i).getItem()).getMaterial(tile.getSlotStack(i).getItem()) != PrimalMaterials.TOOL_WROUGHT_IRON + ) { + world.setBlockState(pos, Blocks.AIR.getDefaultState(), 2); + CommonUtils.spawnItemEntityFromWorld(world, pos, new ItemStack(PrimalItems.ROCK_STONE, 3)); + CommonUtils.spawnItemEntityFromWorld(world, pos, new ItemStack(ModBlocks.ironball, 1)); + this.breakBlock(world, pos, state); + } + } + }*/ + doAnvilRecipe(pItem, tempArray, world, tile, pos, player); + return true; + } + doAnvilInventoryManager(pItem, world, tile, pos, hitx, hity, hitz, state, player); + return true; + } + } + return false; + } } diff --git a/1.11/src/main/java/nmd/primal/forgecraft/blocks/AnvilStone.java b/1.11/src/main/java/nmd/primal/forgecraft/blocks/AnvilStone.java index 88d4a26d..849172b7 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/blocks/AnvilStone.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/blocks/AnvilStone.java @@ -41,50 +41,15 @@ import java.util.concurrent.ThreadLocalRandom; /** * Created by mminaie on 3/4/17. */ -public class AnvilStone extends CustomContainerFacing implements AnvilHandler { +public class AnvilStone extends AnvilBase { -/* - double[] normalMin = {0.0625, 0.25, 0.4375, 0.625, 0.8125}; - - public double getNormalMin(Integer x) { - return normalMin[x]; - } - - double[] normalMax = {0.1875, 0.375, 0.5625, 0.75, 0.9375}; - - public double getNormalMax(Integer x) { - return normalMax[x]; - } - - double[] reverseMin = {0.8125, 0.625, 0.4375, 0.25, 0.0625}; - - public double getReverseMin(Integer x) { - return reverseMin[x]; - } - - double[] reverseMax = {0.9375, 0.75, 0.5625, 0.375, 0.1875}; - - public double getReverseMax(Integer x) { - return reverseMax[x]; - } -*/ - public AnvilStone(Material material, String registryName, Float hardness) { - super(material); - setUnlocalizedName(registryName); - setRegistryName(registryName); - setCreativeTab(ModInfo.TAB_FORGECRAFT); - setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH)); - setHardness(hardness); + public AnvilStone(Material material, String registryName, Float hardness, Boolean anvil) { + super(material, registryName, hardness, anvil); } @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitx, float hity, float hitz) { - /*if (!player.isSwingInProgress) { - player.swingArm(hand); - }*/ - - /****************************************************************************** Crafting AnvilStone Recipes *****************************************************************************/ @@ -116,124 +81,4 @@ public class AnvilStone extends CustomContainerFacing implements AnvilHandler { } return false; } - - @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 != null) { - float offset = 0.7F; - double offsetX = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D; - double offsetY = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D; - double offsetZ = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D; - EntityItem item = new EntityItem(world, pos.getX() + offsetX, pos.getY() + offsetY, pos.getZ() + offsetZ, stack); - item.setDefaultPickupDelay(); - world.spawnEntity(item); - } - } - } - } - - super.breakBlock(world, pos, state); - } - - @Override - public TileEntity createNewTileEntity(World worldIn, int meta) - { - return new 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 isFullyOpaque(IBlockState state) - { - return false; - } - - @Override - public boolean isOpaqueCube(IBlockState state) - { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) - { - return true; - } - - @Override - public EnumBlockRenderType getRenderType(IBlockState state) - { - return EnumBlockRenderType.MODEL; - } - } diff --git a/1.11/src/main/java/nmd/primal/forgecraft/blocks/Bloomery.java b/1.11/src/main/java/nmd/primal/forgecraft/blocks/Bloomery.java index 7f415f62..0de824a6 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/blocks/Bloomery.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/blocks/Bloomery.java @@ -12,6 +12,7 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.init.SoundEvents; +import net.minecraft.item.ItemSpade; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.*; @@ -23,6 +24,9 @@ import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import nmd.primal.core.api.PrimalItems; +import nmd.primal.core.api.PrimalStates; +import nmd.primal.core.common.crafting.FireSource; +import nmd.primal.core.common.helper.PlayerHelper; import nmd.primal.forgecraft.CommonUtils; import nmd.primal.forgecraft.ModInfo; import nmd.primal.forgecraft.crafting.BloomeryCrafting; @@ -38,7 +42,7 @@ import static nmd.primal.core.common.helper.FireHelper.makeSmoke; */ public class Bloomery extends CustomContainerFacing implements ITileEntityProvider { - public static final PropertyBool ACTIVE = PropertyBool.create("active"); + //public static final PropertyBool PrimalStates.ACTIVE = PropertyBool.create("PrimalStates.ACTIVE"); public static final PropertyBool COVERED = PropertyBool.create("covered"); public Bloomery(Material material, String registryName) { @@ -47,7 +51,7 @@ public class Bloomery extends CustomContainerFacing implements ITileEntityProvid setRegistryName(registryName); //setRegistryName(ModInfo.ForgecraftBlocks.FIREBOX.getRegistryName()); setCreativeTab(ModInfo.TAB_FORGECRAFT); - setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVE, Boolean.valueOf(false))); + setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(false))); setHardness(3.0f); } @@ -62,7 +66,7 @@ public class Bloomery extends CustomContainerFacing implements ITileEntityProvid { this.updateTick(world, pos, state, random); if(!world.isRemote){ - if(state.getValue(ACTIVE) == true) { + if(state.getValue(PrimalStates.ACTIVE) == true) { makeSmoke(world, pos); } } @@ -79,18 +83,8 @@ public class Bloomery extends CustomContainerFacing implements ITileEntityProvid ItemStack tileItem1 = tile.getSlotStack(1); if(pItem.isEmpty()) { - - if (player.isSneaking()) { - if (!tileItem.isEmpty()) { - CommonUtils.spawnItemEntity(world, player, tile.getSlotStack(0)); - tile.setSlotStack(0, ItemStack.EMPTY); - tile.markDirty(); - tile.updateBlock(); - return true; - } - } if(!player.isSneaking()){ - if(world.getBlockState(pos).getValue(ACTIVE) == true){ + if(world.getBlockState(pos).getValue(PrimalStates.ACTIVE) == true){ Integer bloomeryHeat = tile.getHeat(); Integer idealTemp = null; Integer cookCounter = tile.getCookCounter(); @@ -119,11 +113,8 @@ public class Bloomery extends CustomContainerFacing implements ITileEntityProvid } } if(tile.getSlotStack(0) != ItemStack.EMPTY) { - if((pItem.getItem() == Items.FLINT_AND_STEEL) || - (pItem.getItem() == PrimalItems.FIRE_BOW) || - pItem.getItem() == PrimalItems.TORCH_WOOD_LIT || - pItem.getItem() == PrimalItems.TORCH_NETHER_LIT ) { - world.setBlockState(pos, state.withProperty(ACTIVE, true), 2); + if((FireSource.useSource(world, pos, player, pItem, hand, facing, hitX, hitY, hitZ))) { + world.setBlockState(pos, state.withProperty(PrimalStates.ACTIVE, true), 2); tile.setHeat(100); tile.markDirty(); tile.updateBlock(); @@ -169,6 +160,16 @@ public class Bloomery extends CustomContainerFacing implements ITileEntityProvid return true; } } + if (player.isSneaking()) { + if (!tile.getSlotStack(0).isEmpty()) { + if(player.inventory.getCurrentItem().getItem() instanceof ItemSpade) { + ItemStack returnStack = tile.getSlotStack(0).copy(); + PlayerHelper.spawnItemOnPlayer(world, player, returnStack); + tile.clearSlot(0); + return true; + } + } + } } } return false; @@ -179,7 +180,7 @@ public class Bloomery extends CustomContainerFacing implements ITileEntityProvid public int getLightValue(IBlockState state, IBlockAccess world, BlockPos pos) { int lightState =0; - if(state.getValue(ACTIVE) == true){ + if(state.getValue(PrimalStates.ACTIVE) == true){ lightState = 10; } return lightState; @@ -199,7 +200,7 @@ public class Bloomery extends CustomContainerFacing implements ITileEntityProvid public boolean isFireSource(World world, BlockPos pos, EnumFacing side) { if(!world.isRemote){ - if(world.getBlockState(pos).getValue(ACTIVE)==true){ + if(world.getBlockState(pos).getValue(PrimalStates.ACTIVE)==true){ return true; } } @@ -210,7 +211,7 @@ public class Bloomery extends CustomContainerFacing implements ITileEntityProvid public void onEntityCollidedWithBlock(World world, BlockPos pos, IBlockState state, Entity ent) { if(ent instanceof EntityPlayer){ - if(state.getValue(ACTIVE) == true){ + if(state.getValue(PrimalStates.ACTIVE) == true){ ent.setFire(1); } } @@ -248,7 +249,7 @@ public class Bloomery extends CustomContainerFacing implements ITileEntityProvid public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { if(!worldIn.isRemote){ - worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()).withProperty(ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(false)), 2); + worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(false)), 2); } } @@ -257,67 +258,67 @@ public class Bloomery extends CustomContainerFacing implements ITileEntityProvid public int getMetaFromState(IBlockState state) { int i = 0; - if( state.getValue(FACING) == EnumFacing.EAST && state.getValue(ACTIVE) == false && state.getValue(COVERED) == false){ + if( state.getValue(FACING) == EnumFacing.EAST && state.getValue(PrimalStates.ACTIVE) == false && state.getValue(COVERED) == false){ i = 0; return i; } - if( state.getValue(FACING) == EnumFacing.WEST && state.getValue(ACTIVE) == false && state.getValue(COVERED) == false){ + if( state.getValue(FACING) == EnumFacing.WEST && state.getValue(PrimalStates.ACTIVE) == false && state.getValue(COVERED) == false){ i = 1; return i; } - if( state.getValue(FACING) == EnumFacing.SOUTH && state.getValue(ACTIVE) == false && state.getValue(COVERED) == false){ + if( state.getValue(FACING) == EnumFacing.SOUTH && state.getValue(PrimalStates.ACTIVE) == false && state.getValue(COVERED) == false){ i = 2; return i; } - if( state.getValue(FACING) == EnumFacing.NORTH && state.getValue(ACTIVE) == false && state.getValue(COVERED) == false){ + if( state.getValue(FACING) == EnumFacing.NORTH && state.getValue(PrimalStates.ACTIVE) == false && state.getValue(COVERED) == false){ i = 3; return i; } - if( state.getValue(FACING) == EnumFacing.EAST && state.getValue(ACTIVE) == true && state.getValue(COVERED) == false){ + if( state.getValue(FACING) == EnumFacing.EAST && state.getValue(PrimalStates.ACTIVE) == true && state.getValue(COVERED) == false){ i = 4; return i; } - if( state.getValue(FACING) == EnumFacing.WEST && state.getValue(ACTIVE) == true && state.getValue(COVERED) == false){ + if( state.getValue(FACING) == EnumFacing.WEST && state.getValue(PrimalStates.ACTIVE) == true && state.getValue(COVERED) == false){ i = 5; return i; } - if( state.getValue(FACING) == EnumFacing.SOUTH && state.getValue(ACTIVE) == true && state.getValue(COVERED) == false){ + if( state.getValue(FACING) == EnumFacing.SOUTH && state.getValue(PrimalStates.ACTIVE) == true && state.getValue(COVERED) == false){ i = 6; return i; } - if( state.getValue(FACING) == EnumFacing.NORTH && state.getValue(ACTIVE) == true && state.getValue(COVERED) == false){ + if( state.getValue(FACING) == EnumFacing.NORTH && state.getValue(PrimalStates.ACTIVE) == true && state.getValue(COVERED) == false){ i = 7; return i; } - if( state.getValue(FACING) == EnumFacing.EAST && state.getValue(ACTIVE) == true && state.getValue(COVERED) == true){ + if( state.getValue(FACING) == EnumFacing.EAST && state.getValue(PrimalStates.ACTIVE) == true && state.getValue(COVERED) == true){ i = 8; return i; } - if( state.getValue(FACING) == EnumFacing.WEST && state.getValue(ACTIVE) == true && state.getValue(COVERED) == true){ + if( state.getValue(FACING) == EnumFacing.WEST && state.getValue(PrimalStates.ACTIVE) == true && state.getValue(COVERED) == true){ i = 9; return i; } - if( state.getValue(FACING) == EnumFacing.SOUTH && state.getValue(ACTIVE) == true && state.getValue(COVERED) == true){ + if( state.getValue(FACING) == EnumFacing.SOUTH && state.getValue(PrimalStates.ACTIVE) == true && state.getValue(COVERED) == true){ i = 10; return i; } - if( state.getValue(FACING) == EnumFacing.NORTH && state.getValue(ACTIVE) == true && state.getValue(COVERED) == true){ + if( state.getValue(FACING) == EnumFacing.NORTH && state.getValue(PrimalStates.ACTIVE) == true && state.getValue(COVERED) == true){ i = 11; return i; } - if( state.getValue(FACING) == EnumFacing.EAST && state.getValue(ACTIVE) == false && state.getValue(COVERED) == true){ + if( state.getValue(FACING) == EnumFacing.EAST && state.getValue(PrimalStates.ACTIVE) == false && state.getValue(COVERED) == true){ i = 12; return i; } - if( state.getValue(FACING) == EnumFacing.WEST && state.getValue(ACTIVE) == false && state.getValue(COVERED) == true){ + if( state.getValue(FACING) == EnumFacing.WEST && state.getValue(PrimalStates.ACTIVE) == false && state.getValue(COVERED) == true){ i = 13; return i; } - if( state.getValue(FACING) == EnumFacing.SOUTH && state.getValue(ACTIVE) == false && state.getValue(COVERED) == true){ + if( state.getValue(FACING) == EnumFacing.SOUTH && state.getValue(PrimalStates.ACTIVE) == false && state.getValue(COVERED) == true){ i = 14; return i; } - if( state.getValue(FACING) == EnumFacing.NORTH && state.getValue(ACTIVE) == false && state.getValue(COVERED) == true){ + if( state.getValue(FACING) == EnumFacing.NORTH && state.getValue(PrimalStates.ACTIVE) == false && state.getValue(COVERED) == true){ i = 15; return i; } @@ -330,59 +331,59 @@ public class Bloomery extends CustomContainerFacing implements ITileEntityProvid IBlockState iblockstate = this.getDefaultState(); if (meta == 0){ - iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(false)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(false)); } if (meta == 1) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(false)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(false)); } if (meta == 2) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(false)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(false)); } if (meta == 3) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(false)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(false)); } if (meta == 4) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(false)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(false)); } if (meta == 5) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(false)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(false)); } if (meta == 6) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(false)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(false)); } if (meta == 7) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(false)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(false)); } if (meta == 8) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(true)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(true)); } if (meta == 9) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(true)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(true)); } if (meta == 10) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(true)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(true)); } if (meta == 11) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(true)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(true)).withProperty(COVERED, Boolean.valueOf(true)); } if (meta == 12) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(true)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(true)); } if (meta == 13) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(true)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(true)); } if (meta == 14) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(true)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(true)); } if (meta == 15) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(true)); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(PrimalStates.ACTIVE, Boolean.valueOf(false)).withProperty(COVERED, Boolean.valueOf(true)); } return iblockstate; } @Override protected BlockStateContainer createBlockState() { - return new BlockStateContainer(this, new IProperty[] {FACING, ACTIVE, COVERED}); + return new BlockStateContainer(this, new IProperty[] {FACING, PrimalStates.ACTIVE, COVERED}); } @Override @@ -420,7 +421,7 @@ public class Bloomery extends CustomContainerFacing implements ITileEntityProvid @SuppressWarnings("incomplete-switch") public void randomDisplayTick(IBlockState state, World world, BlockPos pos, Random rand) { - if(state.getValue(Forge.ACTIVE) == true) + if(state.getValue(PrimalStates.ACTIVE) == true) { double d0 = (double)pos.getX() + 0.5D; double d1 = (double)pos.getY() + 0.2D; diff --git a/1.11/src/main/java/nmd/primal/forgecraft/blocks/Breaker.java b/1.11/src/main/java/nmd/primal/forgecraft/blocks/Breaker.java index 6f54004a..da131f84 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/blocks/Breaker.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/blocks/Breaker.java @@ -2,13 +2,11 @@ package nmd.primal.forgecraft.blocks; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; -import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumBlockRenderType; @@ -19,29 +17,23 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import nmd.primal.core.api.PrimalItems; -import nmd.primal.core.common.helper.PlayerHelper; +import nmd.primal.core.api.PrimalStates; import nmd.primal.core.common.items.tools.WorkMallet; -import nmd.primal.forgecraft.CommonUtils; import nmd.primal.forgecraft.ModInfo; import nmd.primal.forgecraft.tiles.TileBreaker; import nmd.primal.forgecraft.util.BreakerHandler; -import java.util.concurrent.ThreadLocalRandom; - /** * Created by mminaie on 4/9/17. */ public class Breaker extends CustomContainerFacing implements BreakerHandler { - public static final PropertyBool ACTIVE = PropertyBool.create("active"); - public Breaker(Material material, String registryName, Float hardness) { super(material); setUnlocalizedName(registryName); setRegistryName(registryName); setCreativeTab(ModInfo.TAB_FORGECRAFT); - setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVE, false)); + setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(PrimalStates.ACTIVE, false)); setHardness(hardness); } @@ -63,18 +55,18 @@ public class Breaker extends CustomContainerFacing implements BreakerHandler { } }*/ - if(state.getValue(ACTIVE) == true && player.isSneaking() && pItem.isEmpty()){ - world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(ACTIVE, false)); + if(state.getValue(PrimalStates.ACTIVE) == true && player.isSneaking() && pItem.isEmpty()){ + world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalStates.ACTIVE, false)); doBreaking(world, state, pos, tile); tile.setCharge(0); return true; } if(!player.isSneaking() && pItem.isEmpty()) { - if (!state.getValue(ACTIVE)) { - world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(ACTIVE, true), 2); + if (!state.getValue(PrimalStates.ACTIVE)) { + world.setBlockState(pos, state.withProperty(FACING, state.getValue(FACING)).withProperty(PrimalStates.ACTIVE, true), 2); return true; } - if(state.getValue(ACTIVE)) { + if(state.getValue(PrimalStates.ACTIVE)) { if (tile.getCharge() < 181) { tile.setCharge(tile.getCharge() + 2.0f); tile.updateBlock(); @@ -133,7 +125,7 @@ public class Breaker extends CustomContainerFacing implements BreakerHandler { public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { //if(!worldIn.isRemote) { - worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()).withProperty(ACTIVE, false), 2); + worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()).withProperty(PrimalStates.ACTIVE, false), 2); //} } @@ -141,7 +133,7 @@ public class Breaker extends CustomContainerFacing implements BreakerHandler { public int getMetaFromState(IBlockState state) { int i = 0; - if(state.getValue(ACTIVE ) == false) { + if(state.getValue(PrimalStates.ACTIVE ) == false) { if (state.getValue(FACING) == EnumFacing.EAST) { i = 0; return i; @@ -160,7 +152,7 @@ public class Breaker extends CustomContainerFacing implements BreakerHandler { } } - if(state.getValue(ACTIVE)) { + if(state.getValue(PrimalStates.ACTIVE)) { if (state.getValue(FACING) == EnumFacing.EAST) { i = 4; return i; @@ -187,35 +179,35 @@ public class Breaker extends CustomContainerFacing implements BreakerHandler { IBlockState iblockstate = this.getDefaultState(); if (meta == 0){ - iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(ACTIVE, false); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(PrimalStates.ACTIVE, false); } if (meta == 1) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(ACTIVE, false); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(PrimalStates.ACTIVE, false); } if (meta == 2) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(ACTIVE, false); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(PrimalStates.ACTIVE, false); } if (meta == 3) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVE, false); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(PrimalStates.ACTIVE, false); } if (meta == 4){ - iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(ACTIVE, true); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.EAST).withProperty(PrimalStates.ACTIVE, true); } if (meta == 5) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(ACTIVE, true); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.WEST).withProperty(PrimalStates.ACTIVE, true); } if (meta == 6) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(ACTIVE, true); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.SOUTH).withProperty(PrimalStates.ACTIVE, true); } if (meta == 7) { - iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(ACTIVE, true); + iblockstate = iblockstate.withProperty(FACING, EnumFacing.NORTH).withProperty(PrimalStates.ACTIVE, true); } return iblockstate; } @Override protected BlockStateContainer createBlockState() { - return new BlockStateContainer(this, new IProperty[] {ACTIVE, FACING}); + return new BlockStateContainer(this, new IProperty[] {PrimalStates.ACTIVE, FACING}); } @Override diff --git a/1.11/src/main/java/nmd/primal/forgecraft/blocks/Crucible.java b/1.11/src/main/java/nmd/primal/forgecraft/blocks/Crucible.java index 68e8355e..1f98dd68 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/blocks/Crucible.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/blocks/Crucible.java @@ -80,7 +80,8 @@ public class Crucible extends Block { { if(!world.isRemote){ - spawnItemEntityFromWorld(world, pos, new ItemStack(ModBlocks.emptycrucible, 1)); + if(this.getUnlocalizedName().equals("tile.emptycruciblecracked")){} else spawnItemEntityFromWorld(world, pos, new ItemStack(ModBlocks.emptycrucible, 1)); + if(StringUtils.isEmpty(this.getUnlocalizedName()) == false) { if(checkDrops(this.getUnlocalizedName()) != null) { if (checkDrops(this.getUnlocalizedName()).equals(this.getUnlocalizedName())) { @@ -118,6 +119,9 @@ public class Crucible extends Block { if(name.equals("tile.rawwootzcrucible")){ string = this.getUnlocalizedName(); } + if(name.equals("tile.emptycruciblecracked")){ + string = this.getUnlocalizedName(); + } return string; } @@ -139,6 +143,8 @@ public class Crucible extends Block { return Item.getItemFromBlock(ModBlocks.wootzball); } else if (name.equals("tile.rawcleanironcrucible")){ return PrimalItems.GOLDEN_STICK; + }else if (name.equals("tile.emptycruciblecracked")){ + return Items.CLAY_BALL; } else return Items.AIR; } diff --git a/1.11/src/main/java/nmd/primal/forgecraft/blocks/Forge.java b/1.11/src/main/java/nmd/primal/forgecraft/blocks/Forge.java index 52f5bf37..82a3958d 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/blocks/Forge.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/blocks/Forge.java @@ -13,6 +13,7 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.init.SoundEvents; +import net.minecraft.item.ItemSpade; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.*; @@ -25,6 +26,8 @@ import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import nmd.primal.core.api.PrimalItems; +import nmd.primal.core.common.crafting.FireSource; +import nmd.primal.core.common.helper.PlayerHelper; import nmd.primal.forgecraft.CommonUtils; import nmd.primal.forgecraft.ModInfo; import nmd.primal.forgecraft.items.parts.ToolPart; @@ -91,19 +94,18 @@ public class Forge extends CustomContainerFacing implements ITileEntityProvider/ /*********************** FUEL SLOT CODE ***********************/ - if(pItem.isEmpty()) { - if (player.isSneaking()) { - if (!fuelItem.isEmpty()) { - if(facing == EnumFacing.NORTH || facing == EnumFacing.SOUTH || facing == EnumFacing.EAST || facing == EnumFacing.WEST ) { - //System.out.println(); - CommonUtils.spawnItemEntity(world, player, tile.getSlotStack(0)); - tile.setSlotStack(0, ItemStack.EMPTY); - tile.markDirty(); - tile.updateBlock(); - return true; - } + + if (player.isSneaking()) { + if (!tile.getSlotStack(0).isEmpty()) { + if(player.inventory.getCurrentItem().getItem() instanceof ItemSpade) { + ItemStack returnStack = tile.getSlotStack(0).copy(); + PlayerHelper.spawnItemOnPlayer(world, player, returnStack); + tile.clearSlot(0); + return true; } } + } + if(pItem.isEmpty()) { if(!player.isSneaking()){ if(world.getBlockState(pos).getValue(ACTIVE) == true){ Integer tempInt = tile.getHeat(); @@ -115,7 +117,7 @@ public class Forge extends CustomContainerFacing implements ITileEntityProvider/ } } } - if((pItem.getItem() == Items.FLINT_AND_STEEL) || (pItem.getItem() == PrimalItems.FIRE_BOW) || pItem.getItem() == PrimalItems.TORCH_WOOD_LIT || pItem.getItem() == PrimalItems.TORCH_NETHER_LIT ) { + if((FireSource.useSource(world, pos, player, pItem, hand, facing, hitX, hitY, hitZ))) { world.setBlockState(pos, state.withProperty(ACTIVE, true), 2); tile.setHeat(100); tile.markDirty(); diff --git a/1.11/src/main/java/nmd/primal/forgecraft/blocks/IngotBall.java b/1.11/src/main/java/nmd/primal/forgecraft/blocks/IngotBall.java index 7a209aac..9b73dc79 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/blocks/IngotBall.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/blocks/IngotBall.java @@ -1,5 +1,6 @@ package nmd.primal.forgecraft.blocks; +import net.minecraft.block.BlockDynamicLiquid; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyBool; @@ -7,6 +8,7 @@ import net.minecraft.block.state.BlockStateContainer; 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.SoundEvents; import net.minecraft.item.ItemStack; import net.minecraft.util.SoundCategory; @@ -14,6 +16,8 @@ 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.api.PrimalStates; +import nmd.primal.core.common.helper.PlayerHelper; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; @@ -25,7 +29,7 @@ public class IngotBall extends BlockCustomBase { protected static AxisAlignedBB boundBoxLarge = new AxisAlignedBB(6/16D, 0.0D, 6/16D, 10/16D, 4/16D, 10/16D); protected static AxisAlignedBB boundBoxSmall = new AxisAlignedBB(7/16D, 0.0D, 7/16D, 9/16D, 2/16D, 9/16D); - public static final PropertyBool ACTIVE = PropertyBool.create("active"); + //public static final PropertyBool ACTIVE = PropertyBool.create("active"); private String type; public IngotBall(Material material, String registryName, Float hardness, String type){ @@ -49,19 +53,32 @@ public class IngotBall extends BlockCustomBase { public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { //System.out.println(stack.getItemDamage()); - worldIn.setBlockState(pos, state.withProperty(ACTIVE, Boolean.valueOf(false)), 2); + worldIn.setBlockState(pos, state.withProperty(PrimalStates.ACTIVE, Boolean.valueOf(false)), 2); //System.out.println(state.getValue(ACTIVE)); } + public void onBlockDestroyedByPlayer(World world, BlockPos pos, IBlockState state) + { + + if(!world.isRemote){ + if(state.getValue(PrimalStates.ACTIVE)){ + world.setBlockState(pos, Blocks.FLOWING_LAVA.getDefaultState().withProperty(BlockDynamicLiquid.LEVEL, 1), 3); + } + if(!state.getValue(PrimalStates.ACTIVE)){ + PlayerHelper.spawnItemOnGround(world, pos, new ItemStack(this, 1)); + } + } + } + @Override public int getMetaFromState(IBlockState state) { int i = 0; - if( state.getValue(ACTIVE) == false) { + if( state.getValue(PrimalStates.ACTIVE) == false) { i = 0; return i; } - if( state.getValue(ACTIVE) == true) { + if( state.getValue(PrimalStates.ACTIVE) == true) { i = 1; return i; } @@ -74,17 +91,17 @@ public class IngotBall extends BlockCustomBase { IBlockState iblockstate = this.getDefaultState(); if (meta == 0){ - iblockstate = iblockstate.withProperty(ACTIVE, Boolean.valueOf(false)); + iblockstate = iblockstate.withProperty(PrimalStates.ACTIVE, Boolean.valueOf(false)); } if (meta == 1) { - iblockstate = iblockstate.withProperty(ACTIVE, Boolean.valueOf(true)); + iblockstate = iblockstate.withProperty(PrimalStates.ACTIVE, Boolean.valueOf(true)); } return iblockstate; } @Override protected BlockStateContainer createBlockState() { - return new BlockStateContainer(this, new IProperty[] {ACTIVE}); + return new BlockStateContainer(this, new IProperty[] {PrimalStates.ACTIVE}); } @Override @@ -93,8 +110,8 @@ public class IngotBall extends BlockCustomBase { this.updateTick(world, pos, state, random); if(!world.isRemote){ if ( ThreadLocalRandom.current().nextInt(0,4) == 0) { - if(state.getValue(ACTIVE) == true) { - world.setBlockState(pos, state.withProperty(ACTIVE, Boolean.valueOf(false)), 2); + if(state.getValue(PrimalStates.ACTIVE) == true) { + world.setBlockState(pos, state.withProperty(PrimalStates.ACTIVE, Boolean.valueOf(false)), 2); world.playSound((EntityPlayer) null, pos, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 1.0F, world.rand.nextFloat() * 0.4F + 0.8F); } } diff --git a/1.11/src/main/java/nmd/primal/forgecraft/blocks/PistonBellows.java b/1.11/src/main/java/nmd/primal/forgecraft/blocks/PistonBellows.java index f0762ab4..b357bd3e 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/blocks/PistonBellows.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/blocks/PistonBellows.java @@ -16,6 +16,7 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import nmd.primal.core.api.PrimalStates; import nmd.primal.forgecraft.ModInfo; import nmd.primal.forgecraft.init.ModBlocks; import nmd.primal.forgecraft.init.ModSounds; @@ -94,7 +95,7 @@ public class PistonBellows extends CustomContainerFacing { } if (world.getBlockState(tempPos).getBlock() == ModBlocks.bloomery) { TileBloomery tile = (TileBloomery) world.getTileEntity(tempPos); - if ((world.getBlockState(tempPos).getValue(Bloomery.ACTIVE) == true) + if ((world.getBlockState(tempPos).getValue(PrimalStates.ACTIVE) == true) && (world.getBlockState(tempPos).getValue(Bloomery.FACING) == EnumFacing.EAST)) { if (tile != null) { //System.out.println(world.getBlockState(tempPos).getValue(Forge.FACING)); @@ -125,7 +126,7 @@ public class PistonBellows extends CustomContainerFacing { } if (world.getBlockState(tempPos).getBlock() == ModBlocks.bloomery) { TileBloomery tile = (TileBloomery) world.getTileEntity(tempPos); - if ((world.getBlockState(tempPos).getValue(Bloomery.ACTIVE) == true) + if ((world.getBlockState(tempPos).getValue(PrimalStates.ACTIVE) == true) && (world.getBlockState(tempPos).getValue(Bloomery.FACING) == EnumFacing.WEST)) { if (tile != null) { //System.out.println(world.getBlockState(tempPos).getValue(Forge.FACING)); @@ -156,7 +157,7 @@ public class PistonBellows extends CustomContainerFacing { } if (world.getBlockState(tempPos).getBlock() == ModBlocks.bloomery) { TileBloomery tile = (TileBloomery) world.getTileEntity(tempPos); - if ((world.getBlockState(tempPos).getValue(Bloomery.ACTIVE) == true) + if ((world.getBlockState(tempPos).getValue(PrimalStates.ACTIVE) == true) && (world.getBlockState(tempPos).getValue(Bloomery.FACING) == EnumFacing.SOUTH)) { if (tile != null) { //System.out.println(world.getBlockState(tempPos).getValue(Forge.FACING)); @@ -187,7 +188,7 @@ public class PistonBellows extends CustomContainerFacing { } if (world.getBlockState(tempPos).getBlock() == ModBlocks.bloomery) { TileBloomery tile = (TileBloomery) world.getTileEntity(tempPos); - if ((world.getBlockState(tempPos).getValue(Bloomery.ACTIVE) == true) + if ((world.getBlockState(tempPos).getValue(PrimalStates.ACTIVE) == true) && (world.getBlockState(tempPos).getValue(Bloomery.FACING) == EnumFacing.NORTH)) { if (tile != null) { //System.out.println(world.getBlockState(tempPos).getValue(Forge.FACING)); @@ -396,7 +397,7 @@ public class PistonBellows extends CustomContainerFacing { } if (world.getBlockState(tempPos).getBlock() instanceof Bloomery) { TileBloomery tile = (TileBloomery) world.getTileEntity(tempPos); - if ((world.getBlockState(tempPos).getValue(Bloomery.ACTIVE) == true) && (world.getBlockState(tempPos).getValue(Bloomery.FACING) == EnumFacing.EAST)) { + if ((world.getBlockState(tempPos).getValue(PrimalStates.ACTIVE) == true) && (world.getBlockState(tempPos).getValue(Bloomery.FACING) == EnumFacing.EAST)) { makeEmbers(world, tempPos, world.rand); } } @@ -413,7 +414,7 @@ public class PistonBellows extends CustomContainerFacing { } if (world.getBlockState(tempPos).getBlock() instanceof Bloomery) { TileBloomery tile = (TileBloomery) world.getTileEntity(tempPos); - if ((world.getBlockState(tempPos).getValue(Bloomery.ACTIVE) == true) && (world.getBlockState(tempPos).getValue(Bloomery.FACING) == EnumFacing.WEST)) { + if ((world.getBlockState(tempPos).getValue(PrimalStates.ACTIVE) == true) && (world.getBlockState(tempPos).getValue(Bloomery.FACING) == EnumFacing.WEST)) { makeEmbers(world, tempPos, world.rand); } } @@ -430,7 +431,7 @@ public class PistonBellows extends CustomContainerFacing { } if (world.getBlockState(tempPos).getBlock() instanceof Bloomery) { TileBloomery tile = (TileBloomery) world.getTileEntity(tempPos); - if ((world.getBlockState(tempPos).getValue(Bloomery.ACTIVE) == true) && (world.getBlockState(tempPos).getValue(Bloomery.FACING) == EnumFacing.SOUTH)) { + if ((world.getBlockState(tempPos).getValue(PrimalStates.ACTIVE) == true) && (world.getBlockState(tempPos).getValue(Bloomery.FACING) == EnumFacing.SOUTH)) { makeEmbers(world, tempPos, world.rand); } } @@ -447,7 +448,7 @@ public class PistonBellows extends CustomContainerFacing { } if (world.getBlockState(tempPos).getBlock() instanceof Bloomery) { TileBloomery tile = (TileBloomery) world.getTileEntity(tempPos); - if ((world.getBlockState(tempPos).getValue(Bloomery.ACTIVE) == true) && (world.getBlockState(tempPos).getValue(Bloomery.FACING) == EnumFacing.NORTH)) { + if ((world.getBlockState(tempPos).getValue(PrimalStates.ACTIVE) == true) && (world.getBlockState(tempPos).getValue(Bloomery.FACING) == EnumFacing.NORTH)) { makeEmbers(world, tempPos, world.rand); } } diff --git a/1.11/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java b/1.11/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java index 4d8dcb0c..5c64bcc9 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java @@ -156,7 +156,7 @@ public class ModBlocks { return true; }*/ if (pItem instanceof WorkMallet || pItem.equals(ModItems.forgehammer)) { - if(world.getBlockState(belowPos).getBlock().equals(ModBlocks.stoneanvil)) { + if(world.getBlockState(belowPos).getBlock() instanceof AnvilBase) { TileAnvil tile = (TileAnvil) world.getTileEntity(belowPos); @@ -209,7 +209,7 @@ public class ModBlocks { return true; } if (pItem instanceof WorkMallet || pItem.equals(ModItems.forgehammer)) { - if(world.getBlockState(belowPos).getBlock() instanceof AnvilStone) { + if(world.getBlockState(belowPos).getBlock() instanceof AnvilBase) { TileAnvil tile = (TileAnvil) world.getTileEntity(belowPos); @@ -261,7 +261,7 @@ public class ModBlocks { return true; } if (pItem instanceof WorkMallet || pItem.equals(ModItems.forgehammer)) { - if(world.getBlockState(belowPos).getBlock() instanceof AnvilStone) { + if(world.getBlockState(belowPos).getBlock() instanceof AnvilBase) { TileAnvil tile = (TileAnvil) world.getTileEntity(belowPos); @@ -313,7 +313,7 @@ public class ModBlocks { return true; } if (pItem instanceof WorkMallet || pItem.equals(ModItems.forgehammer)) { - if(world.getBlockState(belowPos).getBlock() instanceof AnvilStone) { + if(world.getBlockState(belowPos).getBlock() instanceof AnvilBase) { TileAnvil tile = (TileAnvil) world.getTileEntity(belowPos); @@ -354,8 +354,8 @@ public class ModBlocks { steelchunk = new IngotBall(Material.IRON, "steelchunk", 6.0f, "chunk"); //steel_ingot steelchunk.json steelchunkhot.json - done wootzchunk = new IngotBall(Material.IRON, "wootzchunk", 6.0f, "chunk"); //wootz_ingot wootzchunk.json wootzchunkhot.json - done - stoneanvil = new AnvilStone(Material.ANVIL, "stoneanvil", 5.0f); - ironanvil = new AnvilStone(Material.ANVIL, "ironanvil", 6.0f); + stoneanvil = new AnvilStone(Material.ANVIL, "stoneanvil", 5.0f, true); + ironanvil = new AnvilIron(Material.ANVIL, "ironanvil", 6.0f, true); //ironballitemcool = new ItemBlockIngotBall(ironball); //ironballitemhot = new ItemBlockIngotBall(ironball); diff --git a/1.11/src/main/java/nmd/primal/forgecraft/init/ModItems.java b/1.11/src/main/java/nmd/primal/forgecraft/init/ModItems.java index 4c8123e4..8d552839 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/init/ModItems.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/init/ModItems.java @@ -167,14 +167,14 @@ public class ModItems { /********** INGOTS AND CHUNKS **********/ - ironingotballhot = new BaseMultiItem("ironingothot", PrimalMaterials.TOOL_WROUGHT_IRON); - ironchunkhot = new BaseMultiItem("ironchunkhot", PrimalMaterials.TOOL_WROUGHT_IRON); - ironcleaningotballhot= new BaseMultiItem("ironcleaningotballhot", PrimalMaterials.TOOL_CLEAN_IRON); - ironcleanchunkhot= new BaseMultiItem("ironcleanchunkhot", PrimalMaterials.TOOL_CLEAN_IRON); - steelingotballhot= new BaseMultiItem("steelingotballhot", PrimalMaterials.TOOL_BASIC_STEEL); - steelchunkhot= new BaseMultiItem("steelchunkhot", PrimalMaterials.TOOL_BASIC_STEEL); - wootzingotballhot= new BaseMultiItem("wootzingotballhot", PrimalMaterials.TOOL_WOOTZ_STEEL); - wootzchunkhot= new BaseMultiItem("wootzchunkhot", PrimalMaterials.TOOL_WOOTZ_STEEL); + ironingotballhot = new BaseMultiItem("ironingothot", PrimalMaterials.TOOL_WROUGHT_IRON, 6); + ironchunkhot = new BaseMultiItem("ironchunkhot", PrimalMaterials.TOOL_WROUGHT_IRON, 7); + ironcleaningotballhot= new BaseMultiItem("ironcleaningotballhot", PrimalMaterials.TOOL_CLEAN_IRON, 15); + ironcleanchunkhot= new BaseMultiItem("ironcleanchunkhot", PrimalMaterials.TOOL_CLEAN_IRON, 16); + steelingotballhot= new BaseMultiItem("steelingotballhot", PrimalMaterials.TOOL_BASIC_STEEL, 24); + steelchunkhot= new BaseMultiItem("steelchunkhot", PrimalMaterials.TOOL_BASIC_STEEL, 25); + wootzingotballhot= new BaseMultiItem("wootzingotballhot", PrimalMaterials.TOOL_WOOTZ_STEEL, 33); + wootzchunkhot= new BaseMultiItem("wootzchunkhot", PrimalMaterials.TOOL_WOOTZ_STEEL, 34); //forgingmanual = new ItemForgingManual(); //test = new ItemTest("ironsword"); diff --git a/1.11/src/main/java/nmd/primal/forgecraft/items/BaseMultiItem.java b/1.11/src/main/java/nmd/primal/forgecraft/items/BaseMultiItem.java index 0a923c89..233c5972 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/items/BaseMultiItem.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/items/BaseMultiItem.java @@ -8,15 +8,21 @@ import net.minecraft.item.Item; public class BaseMultiItem extends BaseItem { private Item.ToolMaterial mat; + private int ID; - public BaseMultiItem( String registryName, Item.ToolMaterial material) { + public BaseMultiItem( String registryName, Item.ToolMaterial material, Integer ID) { setUnlocalizedName(registryName); setRegistryName(registryName); mat = material; + this.ID = ID; + } public Item.ToolMaterial getMaterial(Item item){ return mat; } + public int getID() { + return ID; + } } diff --git a/1.11/src/main/java/nmd/primal/forgecraft/items/ItemStoneTongs.java b/1.11/src/main/java/nmd/primal/forgecraft/items/ItemStoneTongs.java index fea31eb4..5c4794ab 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/items/ItemStoneTongs.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/items/ItemStoneTongs.java @@ -14,6 +14,7 @@ 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.api.PrimalStates; import nmd.primal.forgecraft.ModInfo; import nmd.primal.forgecraft.blocks.Crucible; import nmd.primal.forgecraft.blocks.CrucibleHot; @@ -110,6 +111,19 @@ public class ItemStoneTongs extends Item { 27 | Hot Steel Axe Head 28 | Hot Steel Shovel Head 29 | Hot Steel Hoe Head + + ================================ + + 30 | Hot Wootz Crucible + 31 | Hot Cooked Wootz Crucible + 32 | Hot Failed Wootz Crucible + 33 | Hot Wootz Ingot + 34 | Hot Wootz Chunk + -------------------------------- + 35 | Hot Wootz Pickaxe Head + 36 | Hot Wootz Axe Head + 37 | Hot Wootz Shovel Head + 38 | Hot Wootz Hoe Head */ if(!world.isRemote) { @@ -122,7 +136,7 @@ public class ItemStoneTongs extends Item { *****/ if (world.getBlockState(pos).getBlock() != ModBlocks.bloomery) { if (world.getBlockState(pos).getBlock() instanceof IngotBall) { - if(world.getBlockState(pos).getValue(IngotBall.ACTIVE) == true) { + if(world.getBlockState(pos).getValue(PrimalStates.ACTIVE) == true) { if (world.getBlockState(pos).getBlock() == ModBlocks.ironball) { itemstack.getTagCompound().setInteger("type", 6); world.setBlockToAir(pos); @@ -296,11 +310,11 @@ public class ItemStoneTongs extends Item { itemstack.getTagCompound().setInteger("type", 0); return EnumActionResult.SUCCESS; case 6: - world.setBlockState(tempPos, ModBlocks.ironball.getDefaultState().withProperty(IngotBall.ACTIVE, true), 3); + world.setBlockState(tempPos, ModBlocks.ironball.getDefaultState().withProperty(PrimalStates.ACTIVE, true), 3); itemstack.getTagCompound().setInteger("type", 0); return EnumActionResult.SUCCESS; case 7: - world.setBlockState(tempPos, ModBlocks.ironchunk.getDefaultState().withProperty(IngotBall.ACTIVE, true), 3); + world.setBlockState(tempPos, ModBlocks.ironchunk.getDefaultState().withProperty(PrimalStates.ACTIVE, true), 3); itemstack.getTagCompound().setInteger("type", 0); return EnumActionResult.SUCCESS; case 8: @@ -333,11 +347,11 @@ public class ItemStoneTongs extends Item { itemstack.getTagCompound().setInteger("type", 0); return EnumActionResult.SUCCESS; case 15: - world.setBlockState(tempPos, ModBlocks.ironcleanball.getDefaultState().withProperty(IngotBall.ACTIVE, true), 3); + world.setBlockState(tempPos, ModBlocks.ironcleanball.getDefaultState().withProperty(PrimalStates.ACTIVE, true), 3); itemstack.getTagCompound().setInteger("type", 0); return EnumActionResult.SUCCESS; case 16: - world.setBlockState(tempPos, ModBlocks.ironcleanchunk.getDefaultState().withProperty(IngotBall.ACTIVE, true), 3); + world.setBlockState(tempPos, ModBlocks.ironcleanchunk.getDefaultState().withProperty(PrimalStates.ACTIVE, true), 3); itemstack.getTagCompound().setInteger("type", 0); return EnumActionResult.SUCCESS; case 17: @@ -370,11 +384,11 @@ public class ItemStoneTongs extends Item { itemstack.getTagCompound().setInteger("type", 0); return EnumActionResult.SUCCESS; case 24: - world.setBlockState(tempPos, ModBlocks.steelball.getDefaultState().withProperty(IngotBall.ACTIVE, true), 3); + world.setBlockState(tempPos, ModBlocks.steelball.getDefaultState().withProperty(PrimalStates.ACTIVE, true), 3); itemstack.getTagCompound().setInteger("type", 0); return EnumActionResult.SUCCESS; case 25: - world.setBlockState(tempPos, ModBlocks.steelchunk.getDefaultState().withProperty(IngotBall.ACTIVE, true), 3); + world.setBlockState(tempPos, ModBlocks.steelchunk.getDefaultState().withProperty(PrimalStates.ACTIVE, true), 3); itemstack.getTagCompound().setInteger("type", 0); return EnumActionResult.SUCCESS; } diff --git a/1.11/src/main/java/nmd/primal/forgecraft/items/tools/CustomAxe.java b/1.11/src/main/java/nmd/primal/forgecraft/items/tools/CustomAxe.java index 36497605..9ac9a5ec 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/items/tools/CustomAxe.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/items/tools/CustomAxe.java @@ -262,6 +262,8 @@ public class CustomAxe extends ItemAxe implements ToolNBT { setRedstoneLevel(item, 0); setLapisLevel(item, 0); setModifiers(item, 0); + } + if( this.getMaxDamage(item) - this.getDamage(item) < 5 ){ } } diff --git a/1.11/src/main/java/nmd/primal/forgecraft/renders/blocks/TileAnvilRender.java b/1.11/src/main/java/nmd/primal/forgecraft/renders/blocks/TileAnvilRender.java index 1c4e409c..7d88304c 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/renders/blocks/TileAnvilRender.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/renders/blocks/TileAnvilRender.java @@ -14,6 +14,7 @@ import net.minecraft.item.Item; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import nmd.primal.core.api.PrimalItems; +import nmd.primal.forgecraft.blocks.AnvilBase; import nmd.primal.forgecraft.blocks.AnvilStone; import nmd.primal.forgecraft.blocks.IngotBall; import nmd.primal.forgecraft.init.ModItems; @@ -40,7 +41,7 @@ public class TileAnvilRender extends TileEntitySpecialRenderer BlockPos pos = tile.getPos(); IBlockState state = this.getWorld().getBlockState(pos); - if (state.getBlock() instanceof AnvilStone) { + if (state.getBlock() instanceof AnvilBase) { GL11.glPushMatrix(); GL11.glTranslated(x, y + 1.5D, z); @@ -87,7 +88,7 @@ public class TileAnvilRender extends TileEntitySpecialRenderer */ - if (state.getValue(AnvilStone.FACING) == EnumFacing.NORTH) { + if (state.getValue(AnvilBase.FACING) == EnumFacing.NORTH) { int counter = 0; for (int i = 0; i < 5; i++) { for (int a = 0; a < 5; a++) { diff --git a/1.11/src/main/java/nmd/primal/forgecraft/tiles/TileBaseSlot.java b/1.11/src/main/java/nmd/primal/forgecraft/tiles/TileBaseSlot.java index 53854590..91c977ea 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/tiles/TileBaseSlot.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/tiles/TileBaseSlot.java @@ -74,8 +74,16 @@ public abstract class TileBaseSlot extends BaseTile { public void clearSlots() { this.slotList.clear(); + this.markDirty(); + this.updateBlock(); } + public void clearSlot(int index) { + this.slotList.set(index, ItemStack.EMPTY); + this.markDirty(); + this.updateBlock(); + + } // ***************************************************************************** // // NBT diff --git a/1.11/src/main/java/nmd/primal/forgecraft/tiles/TileBloomery.java b/1.11/src/main/java/nmd/primal/forgecraft/tiles/TileBloomery.java index 8ee9d94c..f89ce1cf 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/tiles/TileBloomery.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/tiles/TileBloomery.java @@ -9,6 +9,7 @@ import net.minecraft.util.ITickable; import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import nmd.primal.core.api.PrimalStates; import nmd.primal.core.common.helper.CommonUtils; import nmd.primal.core.common.helper.ParticleHelper; import nmd.primal.forgecraft.blocks.Bloomery; @@ -35,7 +36,7 @@ public class TileBloomery extends TileBaseSlot implements ITickable { World world = this.getWorld(); if(!world.isRemote){ IBlockState state = world.getBlockState(this.pos); - if(state.getValue(Bloomery.ACTIVE) == true){ + if(state.getValue(PrimalStates.ACTIVE) == true){ if(this.getHeat() < 100){ this.setHeat(100); } @@ -46,7 +47,7 @@ public class TileBloomery extends TileBaseSlot implements ITickable { //IBlockState state = world.getBlockState(this.pos); BlockPos abovePos = new BlockPos(this.getPos().getX(), this.getPos().getY()+1, this.getPos().getZ()); - if (world.getBlockState(this.getPos()).getValue(Bloomery.ACTIVE)) { + if (world.getBlockState(this.getPos()).getValue(PrimalStates.ACTIVE)) { if (this.getSlotStack(0) == ItemStack.EMPTY) { world.setBlockState(this.getPos(), state.withProperty(Forge.ACTIVE, false), 2); this.markDirty(); @@ -139,7 +140,7 @@ public class TileBloomery extends TileBaseSlot implements ITickable { } private void heatManager(Integer h, IBlockState state, ItemStack stack, World world, BlockPos pos){ - if(state.getValue(Bloomery.ACTIVE) == true){ + if(state.getValue(PrimalStates.ACTIVE) == true){ if(!stack.isEmpty()) { if(h > 0) { this.setHeat(h - 25); @@ -152,7 +153,7 @@ public class TileBloomery extends TileBaseSlot implements ITickable { world.setBlockState(pos, state.withProperty(Forge.ACTIVE, false), 2); } } - if(state.getValue(Bloomery.ACTIVE) == false){ + if(state.getValue(PrimalStates.ACTIVE) == false){ if(h > 50){ this.setHeat(h - 50); } diff --git a/1.11/src/main/java/nmd/primal/forgecraft/util/AnvilHandler.java b/1.11/src/main/java/nmd/primal/forgecraft/util/AnvilHandler.java index 41e8d430..6c30e8a6 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/util/AnvilHandler.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/util/AnvilHandler.java @@ -2,6 +2,7 @@ package nmd.primal.forgecraft.util; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.EnumDyeColor; @@ -17,7 +18,9 @@ import nmd.primal.core.common.items.tools.WorkMallet; import nmd.primal.forgecraft.CommonUtils; import nmd.primal.forgecraft.blocks.IngotBall; import nmd.primal.forgecraft.crafting.AnvilCrafting; +import nmd.primal.forgecraft.init.ModBlocks; import nmd.primal.forgecraft.init.ModItems; +import nmd.primal.forgecraft.items.BaseMultiItem; import nmd.primal.forgecraft.items.ForgeHammer; import nmd.primal.forgecraft.items.parts.ToolPart; import nmd.primal.forgecraft.tiles.TileAnvil; @@ -169,9 +172,9 @@ public interface AnvilHandler { -/***************************************************************************** - Adding and Removing Inventory With Tongs - *****************************************************************************/ + /***************************************************************************** + Adding and Removing Inventory With Tongs + *****************************************************************************/ default boolean doAnvilInventoryManager(ItemStack pItem, World world, TileAnvil tile, BlockPos pos, float hitx, float hity, float hitz, IBlockState state, EntityPlayer player) { if ( (!(pItem.getItem() instanceof WorkMallet)) || (!(pItem.getItem() instanceof ForgeHammer)) ) { @@ -721,4 +724,56 @@ public interface AnvilHandler { return false; } + static void doDrops(World world, BlockPos pos) { + if (!world.isRemote && world.getGameRules().getBoolean("doTileDrops")) { + TileAnvil tile = (TileAnvil) world.getTileEntity(pos); + if (tile != null) { + for (ItemStack stack : tile.getSlotList()) { + if (stack != null) { + float offset = 0.7F; + double offsetX = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D; + double offsetY = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D; + double offsetZ = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D; + ItemStack dropStack = null; + if (stack.getItem() instanceof BaseMultiItem) { + BaseMultiItem item = (BaseMultiItem) stack.getItem(); + + switch (item.getID()) { + case 6: + dropStack = new ItemStack(ModBlocks.ironball, 1); + break; + case 7: + dropStack = new ItemStack(ModBlocks.ironchunk, 1); + break; + case 15: + dropStack = new ItemStack(ModBlocks.ironcleanball, 1); + break; + case 16: + dropStack = new ItemStack(ModBlocks.ironcleanchunk, 1); + break; + case 24: + dropStack = new ItemStack(ModBlocks.steelball, 1); + break; + case 25: + dropStack = new ItemStack(ModBlocks.steelchunk, 1); + break; + case 33: + dropStack = new ItemStack(ModBlocks.wootzball, 1); + break; + case 34: + dropStack = new ItemStack(ModBlocks.wootzchunk, 1); + break; + } + + } else { + dropStack = stack; + } + EntityItem itemDrop = new EntityItem(world, pos.getX() + offsetX, pos.getY() + offsetY, pos.getZ() + offsetZ, dropStack); + itemDrop.setDefaultPickupDelay(); + world.spawnEntity(itemDrop); + } + } + } + } + } } diff --git a/1.11/src/main/java/nmd/primal/forgecraft/util/BreakerHandler.java b/1.11/src/main/java/nmd/primal/forgecraft/util/BreakerHandler.java index 6c42f5b7..ce990aa9 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/util/BreakerHandler.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/util/BreakerHandler.java @@ -7,62 +7,86 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import nmd.primal.core.api.PrimalItems; -import nmd.primal.forgecraft.CommonUtils; +//import nmd.primal.forgecraft.CommonUtils; + +import nmd.primal.core.common.helper.CommonUtils; +import nmd.primal.core.common.helper.PlayerHelper; import nmd.primal.forgecraft.blocks.CustomContainerFacing; import nmd.primal.forgecraft.tiles.TileBreaker; import nmd.primal.forgecraft.blocks.CustomContainerFacing.*; import java.util.concurrent.ThreadLocalRandom; +import static nmd.primal.core.common.helper.CommonUtils.randomCheck; + /** * Created by mminaie on 6/11/17. */ public interface BreakerHandler { default void doBreaking (World world, IBlockState state, BlockPos pos, TileBreaker tile){ + if (state.getValue(CustomContainerFacing.FACING) == EnumFacing.EAST) { - if(tile.getCharge() > world.getBlockState(pos.east()).getBlockHardness(world, pos.east())) { + + if(tile.getCharge() > getThreshold(world, pos.east())) { if (world.getBlockState(pos.east()).getBlock() == Blocks.IRON_ORE) { world.setBlockToAir(pos.east()); - CommonUtils.spawnItemEntityFromWorld(world, pos.east(), new ItemStack(PrimalItems.IRON_DUST, ThreadLocalRandom.current().nextInt(1, 2))); - tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage()-1); + PlayerHelper.spawnItemOnGround(world, pos.east(), new ItemStack(PrimalItems.IRON_DUST, randomChanceReturn(9, 1, 2))); + + tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage()+1); } } else { - tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage()-10); + tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage()+10); } } if (state.getValue(CustomContainerFacing.FACING) == EnumFacing.WEST) { - if(tile.getCharge() > world.getBlockState(pos.west()).getBlockHardness(world, pos.west())) { + if(tile.getCharge() > getThreshold(world, pos.west())) { if (world.getBlockState(pos.west()).getBlock() == Blocks.IRON_ORE) { world.setBlockToAir(pos.west()); - CommonUtils.spawnItemEntityFromWorld(world, pos.east(), new ItemStack(PrimalItems.IRON_DUST, ThreadLocalRandom.current().nextInt(1, 2))); + PlayerHelper.spawnItemOnGround(world, pos.east(), new ItemStack(PrimalItems.IRON_DUST, randomChanceReturn(9, 1, 2))); + tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage()+1); } } else { - tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage()-10); + tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage()+10); } } if (state.getValue(CustomContainerFacing.FACING) == EnumFacing.SOUTH) { - if(tile.getCharge() > world.getBlockState(pos.south()).getBlockHardness(world, pos.south())) { + if(tile.getCharge() > getThreshold(world, pos.south())) { if (world.getBlockState(pos.south()).getBlock() == Blocks.IRON_ORE) { world.setBlockToAir(pos.south()); - CommonUtils.spawnItemEntityFromWorld(world, pos.east(), new ItemStack(PrimalItems.IRON_DUST, ThreadLocalRandom.current().nextInt(1, 2))); + PlayerHelper.spawnItemOnGround(world, pos.east(), new ItemStack(PrimalItems.IRON_DUST, randomChanceReturn(9, 1, 2))); + tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage()+1); } } else { - tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage()-10); + tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage()+10); } } if (state.getValue(CustomContainerFacing.FACING) == EnumFacing.NORTH) { - if(tile.getCharge() > world.getBlockState(pos.north()).getBlockHardness(world, pos.north())) { + if(tile.getCharge() > getThreshold(world, pos.north())) { if (world.getBlockState(pos.north()).getBlock() == Blocks.IRON_ORE) { world.setBlockToAir(pos.north()); - CommonUtils.spawnItemEntityFromWorld(world, pos.east(), new ItemStack(PrimalItems.IRON_DUST, ThreadLocalRandom.current().nextInt(1, 2))); + PlayerHelper.spawnItemOnGround(world, pos.east(), new ItemStack(PrimalItems.IRON_DUST, randomChanceReturn(9, 1, 2))); + tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage()+1); } } else { //tile.getSlotStack(0).damageItem(10, (EntityPlayer) null); - tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage()-10); + tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage()+10); } } tile.setCharge(0.0f); } + default float getThreshold(World world, BlockPos pos){ + float threshold = world.getBlockState(pos).getBlockHardness(world, pos) * (world.getBlockState(pos).getBlock().getExplosionResistance(null)*5); + if(threshold > 179){ + threshold = 178; + } + return threshold; + } + + public static int randomChanceReturn(int bound, int output1, int output2) + { + return randomCheck(bound) ? output2 : output1; + } + } diff --git a/1.11/src/main/resources/mcmod.info b/1.11/src/main/resources/mcmod.info index c5277838..fa8dfb56 100644 --- a/1.11/src/main/resources/mcmod.info +++ b/1.11/src/main/resources/mcmod.info @@ -2,7 +2,7 @@ "modid": "forgecraft", "name": "Kitsu's Forgecraft", "description": "Forged with sweat and blood", - "version": "1.2.23", + "version": "1.2.30", "mcversion": "1.11.2", "url": "", "updateUrl": "",