From 5369a9fef1038eba688ec36c356f29e6a5382ad6 Mon Sep 17 00:00:00 2001 From: Mohammad-Ali Minaie Date: Mon, 12 Nov 2018 17:22:33 -0500 Subject: [PATCH] redstone engines work, gearboxes work, creating tools as well as torque and speed calculations --- kfc/To-Dos.md | 4 + .../blocks/machine/BloomeryBase.java | 4 +- .../blocks/machine/CastingForm.java | 4 +- .../blocks/machine/RedstoneEngine.java | 35 ++- .../primal/forgecraft/blocks/misc/Chisel.java | 2 +- .../forgecraft/blocks/misc/Gearbox.java | 152 +++++++---- .../forgecraft/blocks/misc/NBTCrucible.java | 4 +- .../primal/forgecraft/init/ModDictionary.java | 4 + .../nmd/primal/forgecraft/init/ModItems.java | 10 +- .../items/blocks/AbstractItemBlock.java | 43 --- .../items/blocks/DefaultItemBlock.java | 23 ++ .../forgecraft/items/blocks/ItemGearbox.java | 59 +++++ .../items/enginetools/BaseEngineTool.java | 20 ++ .../items/enginetools/EngineToolFan.java | 18 ++ .../items/{ => misc}/ForgeHammer.java | 2 +- .../items/{ => misc}/ItemCrucible.java | 2 +- .../items/{ => misc}/ItemForgingManual.java | 3 +- .../items/{ => misc}/ItemSoftCrucible.java | 4 +- .../forgecraft/items/{ => misc}/ItemTest.java | 4 +- .../items/{ => misc}/SledgeHammer.java | 2 +- .../items/{ => misc}/SlottedTongs.java | 3 +- .../items/{ => misc}/Workblade.java | 2 +- .../renders/blocks/TileGearboxRender.java | 121 +++++++-- .../blocks/TileRedstoneEngineRender.java | 217 ++++++++++++---- .../primal/forgecraft/tiles/TileGearbox.java | 6 +- .../forgecraft/tiles/TileRedstoneEngine.java | 80 ++++-- .../primal/forgecraft/util/AnvilHandler.java | 6 +- .../primal/forgecraft/util/ForgeHandler.java | 4 +- .../forgecraft/blockstates/woodengearbox.json | 16 ++ .../forgecraft/models/block/e_particle.png | Bin 159 -> 0 bytes .../forgecraft/models/block/e_texture.png | Bin 141 -> 0 bytes .../models/block/gearbox_model.json | 245 +++++++++--------- .../models/block/redstone_bellows_model.json | 17 +- .../models/block/redstone_bellows_model2.json | 73 ++++++ .../forgecraft/models/item/fan_model.json | 70 ----- .../forgecraft/models/item/fan_model2.json | 109 ++++++++ .../models/item/gearbox/wooden0.json | 7 + .../models/item/gearbox/wooden1.json | 7 + .../models/item/gearbox_case_cover.json | 102 ++++---- .../models/item/gearbox_model_shut.json | 206 +++++++++++++++ .../forgecraft/models/item/woodengearbox.json | 12 + .../models/item/woodengearboxcasecover.json | 8 + .../models/item/woodenlargegear.json | 8 + .../models/item/woodenmediumgear.json | 8 + .../models/item/woodensmallgear.json | 8 + 45 files changed, 1256 insertions(+), 478 deletions(-) delete mode 100644 kfc/src/main/java/nmd/primal/forgecraft/items/blocks/AbstractItemBlock.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/items/blocks/DefaultItemBlock.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/items/blocks/ItemGearbox.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/items/enginetools/BaseEngineTool.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/items/enginetools/EngineToolFan.java rename kfc/src/main/java/nmd/primal/forgecraft/items/{ => misc}/ForgeHammer.java (92%) rename kfc/src/main/java/nmd/primal/forgecraft/items/{ => misc}/ItemCrucible.java (97%) rename kfc/src/main/java/nmd/primal/forgecraft/items/{ => misc}/ItemForgingManual.java (91%) rename kfc/src/main/java/nmd/primal/forgecraft/items/{ => misc}/ItemSoftCrucible.java (65%) rename kfc/src/main/java/nmd/primal/forgecraft/items/{ => misc}/ItemTest.java (63%) rename kfc/src/main/java/nmd/primal/forgecraft/items/{ => misc}/SledgeHammer.java (99%) rename kfc/src/main/java/nmd/primal/forgecraft/items/{ => misc}/SlottedTongs.java (99%) rename kfc/src/main/java/nmd/primal/forgecraft/items/{ => misc}/Workblade.java (89%) create mode 100644 kfc/src/main/resources/assets/forgecraft/blockstates/woodengearbox.json delete mode 100644 kfc/src/main/resources/assets/forgecraft/models/block/e_particle.png delete mode 100644 kfc/src/main/resources/assets/forgecraft/models/block/e_texture.png create mode 100644 kfc/src/main/resources/assets/forgecraft/models/block/redstone_bellows_model2.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/fan_model2.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/gearbox/wooden0.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/gearbox/wooden1.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/gearbox_model_shut.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/woodengearbox.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/woodengearboxcasecover.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/woodenlargegear.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/woodenmediumgear.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/woodensmallgear.json diff --git a/kfc/To-Dos.md b/kfc/To-Dos.md index 252bd22b..bc976239 100644 --- a/kfc/To-Dos.md +++ b/kfc/To-Dos.md @@ -54,6 +54,10 @@ ### Tid-Bits NonNullList tempDrops = NonNullList.create(); ItemStack iron_gear = RecipeHelper.getFirstDictionaryMatch("gearIron", 1); +public List tagList = Lists.newArrayList(); +NonNullList renderList = NonNullList.create(); +NBTTagList tagList = stack.getSubCompound("BlockEntityTag").getTagList("Items", 10); +NBTTagEnd endList = new NBTTagEnd(); ``` sed -i -- 's/iron/steel/g' * rm *.json-- diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/BloomeryBase.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/BloomeryBase.java index 62479599..22806889 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/BloomeryBase.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/BloomeryBase.java @@ -31,13 +31,13 @@ import nmd.primal.core.common.recipes.inworld.FireSource; import nmd.primal.forgecraft.ModInfo; import nmd.primal.forgecraft.blocks.CustomContainerFacing; import nmd.primal.forgecraft.crafting.CrucibleCrafting; -import nmd.primal.forgecraft.items.SlottedTongs; +import nmd.primal.forgecraft.items.misc.SlottedTongs; import nmd.primal.forgecraft.tiles.TileBloomery; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; -import static nmd.primal.forgecraft.items.SlottedTongs.ITEM_HANDLER; +import static nmd.primal.forgecraft.items.misc.SlottedTongs.ITEM_HANDLER; /** * Created by mminaie on 6/11/17. diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/CastingForm.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/CastingForm.java index 287cfabd..0bb032e0 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/CastingForm.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/CastingForm.java @@ -30,12 +30,12 @@ import nmd.primal.forgecraft.crafting.CastingCrafting; import nmd.primal.forgecraft.crafting.CrucibleCrafting; import nmd.primal.forgecraft.init.ModBlocks; import nmd.primal.forgecraft.init.ModItems; -import nmd.primal.forgecraft.items.SlottedTongs; +import nmd.primal.forgecraft.items.misc.SlottedTongs; import nmd.primal.forgecraft.tiles.TileCastingForm; import nmd.primal.forgecraft.util.CastingFormHandler; import nmd.primal.forgecraft.util.ToolNBT; -import static nmd.primal.forgecraft.items.SlottedTongs.ITEM_HANDLER; +import static nmd.primal.forgecraft.items.misc.SlottedTongs.ITEM_HANDLER; /** * Created by mminaie on 6/19/17. diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/RedstoneEngine.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/RedstoneEngine.java index b6e05cb1..ff17ac95 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/RedstoneEngine.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/RedstoneEngine.java @@ -3,13 +3,17 @@ package nmd.primal.forgecraft.blocks.machine; import net.minecraft.block.Block; 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.api.PrimalAPI; +import nmd.primal.core.common.helper.PlayerHelper; import nmd.primal.forgecraft.blocks.CustomContainerFacingActive; import nmd.primal.forgecraft.tiles.TileRedstoneEngine; @@ -24,13 +28,38 @@ public class RedstoneEngine extends CustomContainerFacingActive { super(material, registryName); } - /*@Override + @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) { - return true; + if(hand.equals(EnumHand.MAIN_HAND)) { + TileRedstoneEngine tile = (TileRedstoneEngine) world.getTileEntity(pos); + ItemStack playerStack = player.getHeldItem(hand); + + if(tile.isItemValidForSlot(0, playerStack)){ + ItemStack setStack = playerStack.copy(); + setStack.setCount(1); + tile.setSlotStack(0, setStack); + playerStack.shrink(1); + return true; + } + if(tile.isItemValidForSlot(1, playerStack)){ + ItemStack setStack = playerStack.copy(); + setStack.setCount(1); + tile.setSlotStack(1, setStack); + playerStack.shrink(1); + return true; + } + if(playerStack.isEmpty()){ + if(player.isSneaking()){ + PlayerHelper.spawnItemOnPlayer(world, player, tile.slotList); + tile.clearSlots(); + return true; + } + } + } } return false; - }*/ + } @Override public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block, BlockPos fromPos) { diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/Chisel.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/Chisel.java index 0971b1e9..0ae0c146 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/Chisel.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/Chisel.java @@ -27,7 +27,7 @@ import nmd.primal.core.api.PrimalAPI; import nmd.primal.core.common.helper.PlayerHelper; import nmd.primal.forgecraft.blocks.CustomFacing; import nmd.primal.forgecraft.init.ModSounds; -import nmd.primal.forgecraft.items.SledgeHammer; +import nmd.primal.forgecraft.items.misc.SledgeHammer; import nmd.primal.forgecraft.util.ToolMaterialMap; import javax.annotation.Nullable; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/Gearbox.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/Gearbox.java index a9fefe3a..c9a11050 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/Gearbox.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/Gearbox.java @@ -29,8 +29,10 @@ import java.util.Random; */ public class Gearbox extends CustomContainerFacing implements ITileEntityProvider { - protected static final AxisAlignedBB boundBox = new AxisAlignedBB(4/16D, 0.0D, 4/16D, 12/16D, 7/16D, 12/16D); - + protected static final AxisAlignedBB northBox = new AxisAlignedBB(2/16D, 0.0D, 7/16D, 16/16D, 9/16D, 10/16D); + protected static final AxisAlignedBB southBox = new AxisAlignedBB(0/16D, 0.0D, 6/16D, 14/16D, 9/16D, 9/16D); + protected static final AxisAlignedBB eastBox = new AxisAlignedBB(6/16D, 0.0D, 2/16D, 9/16D, 9/16D, 16/16D); + protected static final AxisAlignedBB westBox = new AxisAlignedBB(7/16D, 0.0D, 0/16D, 10/16D, 9/16D, 14/16D); //private Ingredient crucibleIngredients; public Gearbox(Material material, String registryName) { @@ -38,76 +40,103 @@ public class Gearbox extends CustomContainerFacing implements ITileEntityProvide } @Override - public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hands, EnumFacing face, float hitX, float hitY, float hitZ) { + 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.equals(EnumHand.MAIN_HAND)) { + TileGearbox tile = (TileGearbox) world.getTileEntity(pos); + ItemStack slot0 = tile.getSlotStack(0); + ItemStack slot1 = tile.getSlotStack(1); + ItemStack slot2 = tile.getSlotStack(2); + ItemStack playerStack = player.inventory.getCurrentItem().copy(); - TileGearbox tile = (TileGearbox) world.getTileEntity(pos); - ItemStack slot0 = tile.getSlotStack(0); - ItemStack slot1 = tile.getSlotStack(1); - ItemStack slot2 = tile.getSlotStack(2); - ItemStack playerStack = player.getHeldItemMainhand(); + if(playerStack.isEmpty()) { + if (!player.isSneaking()) { + if (!slot0.isEmpty() && !slot1.isEmpty() && !slot2.isEmpty()) { + PlayerHelper.playerTakeItem(world, pos, EnumFacing.DOWN, player, player.getActiveHand(), this.getThisItem(world, pos, state, player)); + world.setBlockState(pos, this.getReplacementBlock(world, pos, state)); + world.markTileEntityForRemoval(tile); + return true; + } else { + PlayerHelper.spawnItemOnPlayer(world, player, tile.getSlotStack(0), tile.getSlotStack(1), tile.getSlotStack(2)); + tile.clearSlots(); + PlayerHelper.playerTakeItem(world, pos, EnumFacing.DOWN, player, player.getActiveHand(), this.getThisItem(world, pos, state, player)); + world.setBlockState(pos, this.getReplacementBlock(world, pos, state)); + world.markTileEntityForRemoval(tile); + return true; + } + } + } - if (slot2.isEmpty()) { + if (tile.isItemValidForSlot(2, playerStack)) { + return sideInventoryManager(world, player, tile, slot2, 2, pos, state); + } if (state.getValue(FACING) == EnumFacing.NORTH) { - if (hitX < 0.5) { - return sideInventoryManager(world, player, tile, slot0, 0); + if (slot2.isEmpty()) { + if (hitX < 0.5) { + return sideInventoryManager(world, player, tile, slot0, 0, pos, state); + } + if (hitX > 0.5) { + return sideInventoryManager(world, player, tile, slot1, 1, pos, state); + } } - if (hitX > 0.5) { - return sideInventoryManager(world, player, tile, slot1, 1); - } - - return true; + return sideInventoryManager(world, player, tile, slot2, 2, pos, state); + //return true; } if (state.getValue(FACING) == EnumFacing.SOUTH) { - if (hitX > 0.5) { - return sideInventoryManager(world, player, tile, slot0, 0); + if (slot2.isEmpty()) { + if (hitX > 0.5) { + return sideInventoryManager(world, player, tile, slot0, 0, pos, state); + } + if (hitX < 0.5) { + return sideInventoryManager(world, player, tile, slot1, 1, pos, state); + } } - if (hitX < 0.5) { - return sideInventoryManager(world, player, tile, slot1, 1); - } - - return true; + return sideInventoryManager(world, player, tile, slot2, 2, pos, state); + //return true; } if (state.getValue(FACING) == EnumFacing.EAST) { - if (hitZ < 0.5) { - return sideInventoryManager(world, player, tile, slot0, 0); + if (slot2.isEmpty()) { + if (hitZ < 0.5) { + return sideInventoryManager(world, player, tile, slot0, 0, pos, state); + } + if (hitZ > 0.5) { + return sideInventoryManager(world, player, tile, slot1, 1, pos, state); + } } - if (hitZ > 0.5) { - return sideInventoryManager(world, player, tile, slot1, 1); - } - - return true; + return sideInventoryManager(world, player, tile, slot2, 2, pos, state); + //return true; } if (state.getValue(FACING) == EnumFacing.WEST) { - if (hitZ > 0.5) { - return sideInventoryManager(world, player, tile, slot0, 0); + if (slot2.isEmpty()) { + if (hitZ > 0.5) { + return sideInventoryManager(world, player, tile, slot0, 0, pos, state); + } + if (hitZ < 0.5) { + return sideInventoryManager(world, player, tile, slot1, 1, pos, state); + } } - if (hitZ < 0.5) { - return sideInventoryManager(world, player, tile, slot1, 1); - } - - return true; - } - if (tile.isItemValidForSlot(2, playerStack)) { - return sideInventoryManager(world, player, tile, slot0, 2); + return sideInventoryManager(world, player, tile, slot2, 2, pos, state); + //return true; } } - + return false; } return false; } - private boolean sideInventoryManager(World world, EntityPlayer player, TileGearbox tile, ItemStack slot, int index) + private boolean sideInventoryManager(World world, EntityPlayer player, TileGearbox tile, ItemStack slot, int index, BlockPos pos, IBlockState state) { + if(!player.isSneaking()) { ItemStack stack = player.getHeldItemMainhand(); if (slot.isEmpty()) { - if(tile.isItemValidForSlot(index, slot)) { - tile.setSlotStack(index, stack); - player.setHeldItem(EnumHand.MAIN_HAND, ItemStack.EMPTY); - //player.inventory.setInventorySlotContents(player.inventory.currentItem, ItemStack.EMPTY); + if(tile.isItemValidForSlot(index, stack)) { + ItemStack setStack = stack.copy(); + setStack.setCount(1); + tile.setSlotStack(index, setStack); + player.getHeldItemMainhand().shrink(1); return true; } } @@ -147,6 +176,7 @@ public class Gearbox extends CustomContainerFacing implements ITileEntityProvide //PlayerHelper.playerTakeItem(world, pos, EnumFacing.DOWN, player, player.getActiveHand(), this.getCrucibleItem(world, pos, state, player)); ItemStack dropStack = new ItemStack(this, 1); PlayerHelper.spawnItemOnPlayer(world, player, dropStack); + PlayerHelper.spawnItemOnPlayer(world, player, ((TileGearbox) tile).slotList); world.setBlockState(pos, this.getReplacementBlock(world, pos, state)); world.markTileEntityForRemoval(tile); return true; @@ -187,15 +217,15 @@ public class Gearbox extends CustomContainerFacing implements ITileEntityProvide @Override public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { - TileEntity tileentity = world.getTileEntity(pos); - if (tileentity instanceof TileGearbox) { - TileGearbox tile = (TileGearbox) world.getTileEntity(pos); - if(NBTHelper.hasNBT(stack)){ - NBTTagCompound tag = stack.getTagCompound(); + //TileEntity tileentity = world.getTileEntity(pos); + //if (tileentity instanceof TileGearbox) { + // TileGearbox tile = (TileGearbox) world.getTileEntity(pos); + // if(NBTHelper.hasNBT(stack)){ + // NBTTagCompound tag = stack.getTagCompound(); world.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()), 2); //tile.readNBT(tag); - } - } + // } + //} } @Override @@ -213,6 +243,20 @@ public class Gearbox extends CustomContainerFacing implements ITileEntityProvide @Override public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) { - return boundBox; + state = state.getActualState(source, pos); + EnumFacing enumfacing = state.getValue(FACING); + + switch (enumfacing) + { + case EAST: + default: + return eastBox; + case SOUTH: + return southBox; + case WEST: + return westBox; + case NORTH: + return northBox; + } } } diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/NBTCrucible.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/NBTCrucible.java index 273a339a..c29f9440 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/NBTCrucible.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/NBTCrucible.java @@ -29,13 +29,11 @@ import nmd.primal.core.common.helper.PlayerHelper; import nmd.primal.forgecraft.ModInfo; import nmd.primal.forgecraft.crafting.CrucibleCrafting; import nmd.primal.forgecraft.init.ModBlocks; -import nmd.primal.forgecraft.items.SlottedTongs; +import nmd.primal.forgecraft.items.misc.SlottedTongs; import nmd.primal.forgecraft.tiles.TileNBTCrucible; import java.util.Random; -import static net.minecraft.util.EnumHand.MAIN_HAND; - /** * Created by mminaie on 11/11/17. diff --git a/kfc/src/main/java/nmd/primal/forgecraft/init/ModDictionary.java b/kfc/src/main/java/nmd/primal/forgecraft/init/ModDictionary.java index 34246f3c..41203b73 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModDictionary.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModDictionary.java @@ -36,6 +36,10 @@ public class ModDictionary {/*************************************************** OreDictionary.registerOre("nuggetWootz", ModItems.wootzchunk); //} OreDictionary.registerOre("dustBlaze", Items.BLAZE_POWDER); + + + OreDictionary.registerOre("toolEngine", ModItems.woodfan); + OreDictionary.registerOre("gearPrimal", ModItems.woodensmallgear); OreDictionary.registerOre("gearPrimalSmall", ModItems.woodensmallgear); diff --git a/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java b/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java index ed70060a..8a7437ef 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java @@ -9,10 +9,12 @@ 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.machine.Forge; import nmd.primal.forgecraft.items.*; import nmd.primal.forgecraft.items.armor.CustomHelmet; +import nmd.primal.forgecraft.items.blocks.ItemGearbox; import nmd.primal.forgecraft.items.blocks.ItemNBTCrucible; +import nmd.primal.forgecraft.items.enginetools.BaseEngineTool; +import nmd.primal.forgecraft.items.misc.*; import nmd.primal.forgecraft.items.parts.ToolPart; import nmd.primal.forgecraft.items.parts.WeaponPart; import nmd.primal.forgecraft.items.tools.CustomAxe; @@ -49,6 +51,7 @@ public class ModItems { public static Item woodenlargegear; public static Item woodengearboxcasecover; + public static Item woodengearbox; public static Item bronzeingotball; public static Item bronzechunk; @@ -213,13 +216,14 @@ public class ModItems { woodpistonarm = new BaseItem("woodpistonarm"); woodcrank = new BaseItem("woodcrank"); woodpiston = new BaseItem("woodpiston"); - woodfan = new BaseItem("woodfan"); + woodfan = new BaseEngineTool("woodfan", PrimalAPI.ToolMaterials.TOOL_FLINT); woodensmallgear = new BaseSingleItem("woodensmallgear", 1000); woodenmediumgear = new BaseSingleItem("woodenmediumgear", 1000); woodenlargegear = new BaseSingleItem("woodenlargegear", 1000); woodengearboxcasecover = new BaseItem("woodengearboxcasecover"); + woodengearbox = new ItemGearbox("woodengearbox", ModBlocks.woodengearbox); /********** TOOL PARTS @@ -404,6 +408,7 @@ public class ModItems { ForgeRegistries.ITEMS.register(woodenmediumgear); ForgeRegistries.ITEMS.register(woodenlargegear); ForgeRegistries.ITEMS.register(woodengearboxcasecover); + ForgeRegistries.ITEMS.register(woodengearbox); /********** @@ -573,6 +578,7 @@ public class ModItems { registerRender(woodenmediumgear); registerRender(woodenlargegear); registerRender(woodengearboxcasecover); + registerRender(woodengearbox); /********** diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/blocks/AbstractItemBlock.java b/kfc/src/main/java/nmd/primal/forgecraft/items/blocks/AbstractItemBlock.java deleted file mode 100644 index 7d8b72df..00000000 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/blocks/AbstractItemBlock.java +++ /dev/null @@ -1,43 +0,0 @@ -package nmd.primal.forgecraft.items.blocks; - -import net.minecraft.block.Block; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import nmd.primal.forgecraft.ModInfo; - - -/** - * Created by mminaie on 2/7/18. - */ -public class AbstractItemBlock extends ItemBlock { - private boolean is_fire_proof; - - public AbstractItemBlock(Block block, boolean sub_types) { - super(block); - this.setHasSubtypes(sub_types); - } - - public AbstractItemBlock(Block block) { - this(block, false); - } - - @Override - public CreativeTabs getCreativeTab() { - return ModInfo.TAB_FORGECRAFT; - } - - /** - * Retrieves the normal 'lifespan' of this item when it is dropped on the ground as amount EntityItem. - * This is in ticks, standard result is 6000, or 5 mins. - * - * @param itemStack The current ItemStack - * @param world The world the entity is in - * @return The normal lifespan in ticks. - */ - @Override - public int getEntityLifespan(ItemStack itemStack, World world) { - return 6000; - } -} diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/blocks/DefaultItemBlock.java b/kfc/src/main/java/nmd/primal/forgecraft/items/blocks/DefaultItemBlock.java new file mode 100644 index 00000000..ebd1d4cd --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/blocks/DefaultItemBlock.java @@ -0,0 +1,23 @@ +package nmd.primal.forgecraft.items.blocks; + +import net.minecraft.block.Block; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import nmd.primal.forgecraft.ModInfo; + + +/** + * Created by mminaie on 2/7/18. + */ +public abstract class DefaultItemBlock extends ItemBlock { + + public DefaultItemBlock(String name, Block block) { + super(block); + this.setUnlocalizedName(name); + this.setRegistryName(name); + this.setCreativeTab(ModInfo.TAB_FORGECRAFT); + + } +} diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/blocks/ItemGearbox.java b/kfc/src/main/java/nmd/primal/forgecraft/items/blocks/ItemGearbox.java new file mode 100644 index 00000000..3639c527 --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/blocks/ItemGearbox.java @@ -0,0 +1,59 @@ +package nmd.primal.forgecraft.items.blocks; + +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.inventory.ItemStackHelper; +import net.minecraft.item.IItemPropertyGetter; +import net.minecraft.item.ItemStack; +import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import nmd.primal.core.common.helper.RecipeHelper; + +import javax.annotation.Nullable; + +public class ItemGearbox extends DefaultItemBlock { + public ItemGearbox(String name, Block block) { + super(name, block); + + this.addPropertyOverride(new ResourceLocation("type"), new IItemPropertyGetter() { + + @SideOnly(Side.CLIENT) + public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn) { + + if (stack.hasTagCompound()) { + + NonNullList renderList = NonNullList.withSize(3, ItemStack.EMPTY); + if(stack.getSubCompound("BlockEntityTag") != null) { + + ItemStackHelper.loadAllItems(stack.getSubCompound("BlockEntityTag"), renderList); + //System.out.println(renderList); + + if (RecipeHelper.isOreName(renderList.get(2), "gearboxCoverPrimal")) { + return 0.1f; + } else { + return 0.0F; + } + } + } + return 0.0f; + } + }); + } + + @Override + public void onUpdate(ItemStack item, World world, Entity player, int itemSlot, boolean isSelected) { + if(!world.isRemote) { + + if (!item.hasTagCompound()) { + NonNullList list = NonNullList.withSize(3, ItemStack.EMPTY); + item.getOrCreateSubCompound("BlockEntityTag"); + ItemStackHelper.saveAllItems(item.getSubCompound("BlockEntityTag"), list, true); + } + } + } + +} diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/enginetools/BaseEngineTool.java b/kfc/src/main/java/nmd/primal/forgecraft/items/enginetools/BaseEngineTool.java new file mode 100644 index 00000000..d3829c57 --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/enginetools/BaseEngineTool.java @@ -0,0 +1,20 @@ +package nmd.primal.forgecraft.items.enginetools; + +import nmd.primal.forgecraft.items.BaseSingleItem; + +public class BaseEngineTool extends BaseSingleItem { + + private ToolMaterial toolMaterial; + + public BaseEngineTool(String registryName, int damage) { + super(registryName, damage); + } + public BaseEngineTool(String registryName, ToolMaterial toolMaterial) { + super(registryName, toolMaterial.getMaxUses()*2); + this.toolMaterial = toolMaterial; + + } + + public ToolMaterial getMaterial() {return toolMaterial;} + +} diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/enginetools/EngineToolFan.java b/kfc/src/main/java/nmd/primal/forgecraft/items/enginetools/EngineToolFan.java new file mode 100644 index 00000000..a5f06a06 --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/enginetools/EngineToolFan.java @@ -0,0 +1,18 @@ +package nmd.primal.forgecraft.items.enginetools; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class EngineToolFan extends BaseEngineTool { + + public EngineToolFan(String registryName, ToolMaterial toolMaterial) { + super(registryName, toolMaterial); + } + + public void doWork(World world, BlockPos pos, IBlockState state, EnumFacing facing){ + + } + +} diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/ForgeHammer.java b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/ForgeHammer.java similarity index 92% rename from kfc/src/main/java/nmd/primal/forgecraft/items/ForgeHammer.java rename to kfc/src/main/java/nmd/primal/forgecraft/items/misc/ForgeHammer.java index fdeaf523..223dcf96 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/ForgeHammer.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/ForgeHammer.java @@ -1,4 +1,4 @@ -package nmd.primal.forgecraft.items; +package nmd.primal.forgecraft.items.misc; import net.minecraft.item.Item; import nmd.primal.forgecraft.ModInfo; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/ItemCrucible.java b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/ItemCrucible.java similarity index 97% rename from kfc/src/main/java/nmd/primal/forgecraft/items/ItemCrucible.java rename to kfc/src/main/java/nmd/primal/forgecraft/items/misc/ItemCrucible.java index 65fb6e0e..6fe5e155 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/ItemCrucible.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/ItemCrucible.java @@ -1,4 +1,4 @@ -package nmd.primal.forgecraft.items; +package nmd.primal.forgecraft.items.misc; import net.minecraft.item.Item; import nmd.primal.forgecraft.ModInfo; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/ItemForgingManual.java b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/ItemForgingManual.java similarity index 91% rename from kfc/src/main/java/nmd/primal/forgecraft/items/ItemForgingManual.java rename to kfc/src/main/java/nmd/primal/forgecraft/items/misc/ItemForgingManual.java index 16347789..7463a2f8 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/ItemForgingManual.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/ItemForgingManual.java @@ -1,4 +1,4 @@ -package nmd.primal.forgecraft.items; +package nmd.primal.forgecraft.items.misc; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -7,6 +7,7 @@ import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; import net.minecraft.world.World; import nmd.primal.forgecraft.ForgeCraft; +import nmd.primal.forgecraft.items.BaseItem; /** * Created by mminaie on 2/4/17. diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/ItemSoftCrucible.java b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/ItemSoftCrucible.java similarity index 65% rename from kfc/src/main/java/nmd/primal/forgecraft/items/ItemSoftCrucible.java rename to kfc/src/main/java/nmd/primal/forgecraft/items/misc/ItemSoftCrucible.java index ddf01d46..0417aa21 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/ItemSoftCrucible.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/ItemSoftCrucible.java @@ -1,4 +1,6 @@ -package nmd.primal.forgecraft.items; +package nmd.primal.forgecraft.items.misc; + +import nmd.primal.forgecraft.items.BaseItem; /** * Created by mminaie on 1/22/17. diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/ItemTest.java b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/ItemTest.java similarity index 63% rename from kfc/src/main/java/nmd/primal/forgecraft/items/ItemTest.java rename to kfc/src/main/java/nmd/primal/forgecraft/items/misc/ItemTest.java index 9a539c35..c4bcd2a0 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/ItemTest.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/ItemTest.java @@ -1,4 +1,6 @@ -package nmd.primal.forgecraft.items; +package nmd.primal.forgecraft.items.misc; + +import nmd.primal.forgecraft.items.BaseItem; /** * Created by kitsu on 11/26/2016. diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/SledgeHammer.java b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/SledgeHammer.java similarity index 99% rename from kfc/src/main/java/nmd/primal/forgecraft/items/SledgeHammer.java rename to kfc/src/main/java/nmd/primal/forgecraft/items/misc/SledgeHammer.java index d22ce8ec..746f5ef9 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/SledgeHammer.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/SledgeHammer.java @@ -1,4 +1,4 @@ -package nmd.primal.forgecraft.items; +package nmd.primal.forgecraft.items.misc; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/SlottedTongs.java b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/SlottedTongs.java similarity index 99% rename from kfc/src/main/java/nmd/primal/forgecraft/items/SlottedTongs.java rename to kfc/src/main/java/nmd/primal/forgecraft/items/misc/SlottedTongs.java index 666b10e2..6e688d93 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/SlottedTongs.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/SlottedTongs.java @@ -1,4 +1,4 @@ -package nmd.primal.forgecraft.items; +package nmd.primal.forgecraft.items.misc; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; @@ -36,6 +36,7 @@ import nmd.primal.forgecraft.blocks.anvil.AnvilBase; import nmd.primal.forgecraft.blocks.misc.NBTCrucible; import nmd.primal.forgecraft.blocks.machine.Forge; import nmd.primal.forgecraft.init.ModItems; +import nmd.primal.forgecraft.items.BaseMultiItem; import nmd.primal.forgecraft.items.blocks.ItemNBTCrucible; import nmd.primal.forgecraft.items.parts.ToolPart; import nmd.primal.forgecraft.tiles.TileNBTCrucible; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/Workblade.java b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/Workblade.java similarity index 89% rename from kfc/src/main/java/nmd/primal/forgecraft/items/Workblade.java rename to kfc/src/main/java/nmd/primal/forgecraft/items/misc/Workblade.java index 4a20ecda..10db18c2 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/Workblade.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/misc/Workblade.java @@ -1,4 +1,4 @@ -package nmd.primal.forgecraft.items; +package nmd.primal.forgecraft.items.misc; import nmd.primal.core.common.items.tools.WorkBlade; import nmd.primal.forgecraft.ModInfo; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileGearboxRender.java b/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileGearboxRender.java index 4f19dca3..c1457bcc 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileGearboxRender.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileGearboxRender.java @@ -43,68 +43,137 @@ public class TileGearboxRender extends TileEntitySpecialRenderer OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, bright % 65536, bright / 65536); ItemStack stack0 = tile.getSlotStack(0); + ItemStack stack1 = tile.getSlotStack(1); + ItemStack stack2 = tile.getSlotStack(2); - /*if (state.getValue(Workbench.FACING) == EnumFacing.NORTH) { + if (state.getValue(Workbench.FACING) == EnumFacing.NORTH) { if (!stack0.isEmpty()) { float scale = 1.0f; GL11.glPushMatrix(); - - GL11.glTranslated(0.5D, 0.71875D, 0.28125D); GL11.glScalef(scale, scale, scale); - GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); - if(state.getValue(PrimalAPI.States.ACTIVE)) { - GL11.glRotated(PrimalAPI.getRandom().nextDouble(0D, 360D), 0.0D, 0.0D, 1.0D); - } + GL11.glTranslated(17/32D, 9/32D, 17/32D); + //GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); + //if(state.getValue(PrimalAPI.States.ACTIVE)) { + // GL11.glRotated(PrimalAPI.getRandom().nextDouble(0D, 360D), 0.0D, 0.0D, 1.0D); + //} renderItem.renderItem(stack0, ItemCameraTransforms.TransformType.FIXED); GL11.glPopMatrix(); } + if (!stack1.isEmpty()) { + float scale = 1.0f; + GL11.glPushMatrix(); + GL11.glScalef(scale, scale, scale); + GL11.glTranslated(25/32D, 9/32D, 17/32D); + GL11.glRotated(11.25F, 0F, 0F, 1.0F); + //if(state.getValue(PrimalAPI.States.ACTIVE)) { + // GL11.glRotated(PrimalAPI.getRandom().nextDouble(0D, 360D), 0.0D, 0.0D, 1.0D); + //} + renderItem.renderItem(stack1, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + if (!stack2.isEmpty()) { + float scale = 1.0f; + GL11.glPushMatrix(); + GL11.glScalef(scale, scale, scale); + GL11.glTranslated(16/32D, 16/32D, 16/32D); + GL11.glRotated(180F, 0.0F, 1.0F, 0.0F); + //if(state.getValue(PrimalAPI.States.ACTIVE)) { + // GL11.glRotated(PrimalAPI.getRandom().nextDouble(0D, 360D), 0.0D, 0.0D, 1.0D); + //} + renderItem.renderItem(stack2, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } } if (state.getValue(Workbench.FACING) == EnumFacing.SOUTH) { if (!stack0.isEmpty()) { float scale = 1.0f; GL11.glPushMatrix(); - - GL11.glTranslated(0.5D, 0.71875D, 1-0.28125D); GL11.glScalef(scale, scale, scale); - GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); - if(state.getValue(PrimalAPI.States.ACTIVE)) { - GL11.glRotated(PrimalAPI.getRandom().nextDouble(0D, 360D), 0.0D, 0.0D, 1.0D); - } + GL11.glTranslated(15/32D, 9/32D, 15/32D); + //GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); renderItem.renderItem(stack0, ItemCameraTransforms.TransformType.FIXED); GL11.glPopMatrix(); } + if (!stack1.isEmpty()) { + float scale = 1.0f; + GL11.glPushMatrix(); + GL11.glScalef(scale, scale, scale); + GL11.glTranslated(7/32D, 9/32D, 15/32D); + GL11.glRotated(11.25F, 0F, 0F, 1.0F); + renderItem.renderItem(stack1, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + if (!stack2.isEmpty()) { + float scale = 1.0f; + GL11.glPushMatrix(); + GL11.glScalef(scale, scale, scale); + GL11.glTranslated(16/32D, 16/32D, 16/32D); + //GL11.glRotated(180F, 0.0F, 1.0F, 0.0F); + renderItem.renderItem(stack2, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } } if (state.getValue(Workbench.FACING) == EnumFacing.EAST) { if (!stack0.isEmpty()) { float scale = 1.0f; GL11.glPushMatrix(); - - GL11.glTranslated(1-0.28125D, 0.71875D, 0.5D); GL11.glScalef(scale, scale, scale); - //GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); - if(state.getValue(PrimalAPI.States.ACTIVE)) { - GL11.glRotated(PrimalAPI.getRandom().nextDouble(0D, 360D), 0.0D, 0.0D, 1.0D); - } + GL11.glTranslated(15/32D, 9/32D, 17/32D); + GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); renderItem.renderItem(stack0, ItemCameraTransforms.TransformType.FIXED); GL11.glPopMatrix(); } + if (!stack1.isEmpty()) { + float scale = 1.0f; + GL11.glPushMatrix(); + GL11.glScalef(scale, scale, scale); + GL11.glTranslated(15/32D, 9/32D, 25/32D); + GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotated(11.25F, 0F, 0F, 1F); + renderItem.renderItem(stack1, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + if (!stack2.isEmpty()) { + float scale = 1.0f; + GL11.glPushMatrix(); + GL11.glScalef(scale, scale, scale); + GL11.glTranslated(16/32D, 16/32D, 16/32D); + GL11.glRotated(90, 0.0F, 1.0F, 0.0F); + renderItem.renderItem(stack2, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } } if (state.getValue(Workbench.FACING) == EnumFacing.WEST) { if (!stack0.isEmpty()) { float scale = 1.0f; GL11.glPushMatrix(); - - GL11.glTranslated(0.28125D, 0.71875D, 0.5D); GL11.glScalef(scale, scale, scale); - //GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); - if(state.getValue(PrimalAPI.States.ACTIVE)) { - GL11.glRotated(PrimalAPI.getRandom().nextDouble(0D, 360D), 0.0D, 0.0D, 1.0D); - } + GL11.glTranslated(17/32D, 9/32D, 15/32D); + GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); renderItem.renderItem(stack0, ItemCameraTransforms.TransformType.FIXED); GL11.glPopMatrix(); } - }*/ + if (!stack1.isEmpty()) { + float scale = 1.0f; + GL11.glPushMatrix(); + GL11.glScalef(scale, scale, scale); + GL11.glTranslated(17/32D, 9/32D, 7/32D); + GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotated(11.25F, 0F, 0F, 1F); + renderItem.renderItem(stack1, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + if (!stack2.isEmpty()) { + float scale = 1.0f; + GL11.glPushMatrix(); + GL11.glScalef(scale, scale, scale); + GL11.glTranslated(16/32D, 16/32D, 16/32D); + GL11.glRotated(-90, 0.0F, 1.0F, 0.0F); + renderItem.renderItem(stack2, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + } OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, prevLGTX, prevLGTY); diff --git a/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileRedstoneEngineRender.java b/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileRedstoneEngineRender.java index 3e00b9ac..e7cd6c2d 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileRedstoneEngineRender.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileRedstoneEngineRender.java @@ -7,10 +7,13 @@ 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.inventory.ItemStackHelper; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; +import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import nmd.primal.core.api.PrimalAPI; +import nmd.primal.core.common.helper.RecipeHelper; import nmd.primal.forgecraft.blocks.CustomContainerFacingActive; import nmd.primal.forgecraft.blocks.machine.RedstoneEngine; import nmd.primal.forgecraft.init.ModItems; @@ -48,10 +51,14 @@ public class TileRedstoneEngineRender extends TileEntitySpecialRenderer gearList = NonNullList.withSize(3, ItemStack.EMPTY); + if(gearbox.getSubCompound("BlockEntityTag") != null) { + ItemStackHelper.loadAllItems(gearbox.getSubCompound("BlockEntityTag"), gearList); + if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalSmall")) { + gearMulti=4F; + } + if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalMedium")) { + gearMulti=1; + } + if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalLarge")) { + gearMulti=0.25f; + } + } + if(state.getValue(PrimalAPI.States.ACTIVE)) { - GL11.glRotatef(-360*(percentK), 1.0F, 0.0F, 0.0F); + GL11.glRotatef(-360*(percentK*gearMulti), 1.0F, 0.0F, 0.0F); } renderItem.renderItem(slotTool, ItemCameraTransforms.TransformType.FIXED); GL11.glPopMatrix(); } - + /************************ + S O U T H + ************************/ if (state.getValue(CustomContainerFacingActive.FACING) == EnumFacing.SOUTH) { /***CRANK***/ GL11.glPushMatrix(); @@ -149,24 +187,49 @@ public class TileRedstoneEngineRender extends TileEntitySpecialRenderer gearList = NonNullList.withSize(3, ItemStack.EMPTY); + if(gearbox.getSubCompound("BlockEntityTag") != null) { + ItemStackHelper.loadAllItems(gearbox.getSubCompound("BlockEntityTag"), gearList); + if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalSmall")) { + gearMulti=4F; + } + if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalMedium")) { + gearMulti=1; + } + if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalLarge")) { + gearMulti=0.25f; + } + } + + if(state.getValue(PrimalAPI.States.ACTIVE)) { + GL11.glRotatef(-360*(percentK*gearMulti), 1.0F, 0.0F, 0.0F); + } + renderItem.renderItem(slotTool, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + /************************ + E A S T + ************************/ if (state.getValue(CustomContainerFacingActive.FACING) == EnumFacing.EAST) { /***CRANK***/ GL11.glPushMatrix(); @@ -201,18 +264,45 @@ public class TileRedstoneEngineRender extends TileEntitySpecialRenderer gearList = NonNullList.withSize(3, ItemStack.EMPTY); + if(gearbox.getSubCompound("BlockEntityTag") != null) { + ItemStackHelper.loadAllItems(gearbox.getSubCompound("BlockEntityTag"), gearList); + if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalSmall")) { + gearMulti=4F; + } + if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalMedium")) { + gearMulti=1; + } + if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalLarge")) { + gearMulti=0.25f; + } + } + + if(state.getValue(PrimalAPI.States.ACTIVE)) { + GL11.glRotatef(-360*(percentK*gearMulti), 1.0F, 0.0F, 0.0F); + } + renderItem.renderItem(slotTool, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + /************************ + W E S T + ************************/ if (state.getValue(CustomContainerFacingActive.FACING) == EnumFacing.WEST) { /***CRANK***/ GL11.glPushMatrix(); @@ -247,16 +337,41 @@ public class TileRedstoneEngineRender extends TileEntitySpecialRenderer gearList = NonNullList.withSize(3, ItemStack.EMPTY); + if(gearbox.getSubCompound("BlockEntityTag") != null) { + ItemStackHelper.loadAllItems(gearbox.getSubCompound("BlockEntityTag"), gearList); + if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalSmall")) { + gearMulti=4F; + } + if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalMedium")) { + gearMulti=1; + } + if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalLarge")) { + gearMulti=0.25f; + } } - renderItem.renderItem(arm, ItemCameraTransforms.TransformType.FIXED); - GL11.glPopMatrix();*/ + + if(state.getValue(PrimalAPI.States.ACTIVE)) { + GL11.glRotatef(-360*(percentK*gearMulti), 1.0F, 0.0F, 0.0F); + } + renderItem.renderItem(slotTool, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); } OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, prevLGTX, prevLGTY); diff --git a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileGearbox.java b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileGearbox.java index 86331471..4fad5b9c 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileGearbox.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileGearbox.java @@ -49,8 +49,10 @@ public class TileGearbox extends TileBaseSlot /*implements ITickable*/ { } } if(index == 2){ - if (RecipeHelper.isOreName(stack, "gearboxCoverPrimal")) { - return true; + if(this.getSlotStack(2).isEmpty()) { + if (RecipeHelper.isOreName(stack, "gearboxCoverPrimal")) { + return true; + } } } return false; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneEngine.java b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneEngine.java index 7c660c9a..02531858 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneEngine.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneEngine.java @@ -2,29 +2,69 @@ package nmd.primal.forgecraft.tiles; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.Entity; +import net.minecraft.inventory.ItemStackHelper; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumFacing; import net.minecraft.util.ITickable; +import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import nmd.primal.forgecraft.blocks.CustomContainerFacing; +import nmd.primal.core.common.helper.RecipeHelper; +import nmd.primal.forgecraft.items.blocks.ItemGearbox; +import nmd.primal.forgecraft.items.enginetools.BaseEngineTool; -public class TileRedstoneEngine extends TileBaseSlot /*implements ITickable*/ { +public class TileRedstoneEngine extends TileBaseSlot implements ITickable { - public int getRedstone() { - return redstone; - } + private int redstone; // AKA power + private int torque; // = power/speed + private int speed; // = power/torque - public void setRedstone(int redstone) { - this.redstone = redstone; - } - - private int redstone; + public int getRedstone() { return redstone; } + public void setRedstone(int redstone) { this.redstone = redstone; } + public int getTorque() { return torque; } + public void setTorque(int torque) { this.torque = torque; } + public int getSpeed() { return speed; } + public void setSpeed(int speed) { this.speed = speed; } public TileRedstoneEngine() { } + + + @Override + public void update () { + if(!world.isRemote) { + World world = this.getWorld(); + IBlockState state = world.getBlockState(this.pos); + BlockPos pos = new BlockPos(this.getPos().getX(), this.getPos().getY(), this.getPos().getZ()); + Block block = world.getBlockState(pos).getBlock(); + + NonNullList renderList = NonNullList.withSize(3, ItemStack.EMPTY); + //System.out.println(this.getSlotStack(0).getTagCompound()); + if(this.getSlotStack(0).getSubCompound("BlockEntityTag") != null) { + ItemStackHelper.loadAllItems(this.getSlotStack(0).getSubCompound("BlockEntityTag"), renderList); + //System.out.println(renderList); + } + } + } + + + + public boolean isItemValidForSlot(int index, ItemStack stack) { + if(index == 0 ) { + if (this.getSlotStack(0).isEmpty() && stack.getItem() instanceof ItemGearbox) { + return true; + } + } + + if(index == 1){ + if(this.getSlotStack(1).isEmpty() && stack.getItem() instanceof BaseEngineTool) { + return true; + } + } + return false; + } + // ***************************************************************************** // // NBT // ***************************************************************************** // @@ -33,6 +73,7 @@ public class TileRedstoneEngine extends TileBaseSlot /*implements ITickable*/ { { super.readNBT(nbt); this.redstone = nbt.getInteger("redstone"); + return nbt; } @@ -44,19 +85,6 @@ public class TileRedstoneEngine extends TileBaseSlot /*implements ITickable*/ { return nbt; } - /*@Override - public void update () { - if(!world.isRemote) { - World world = this.getWorld(); - IBlockState state = world.getBlockState(this.pos); - BlockPos pos = new BlockPos(this.getPos().getX(), this.getPos().getY(), this.getPos().getZ()); - Block block = world.getBlockState(pos).getBlock(); - if(world.isBlockPowered(pos)){ - if(state.getValue(CustomContainerFacing.FACING).equals(EnumFacing.NORTH)){ - world.getEntitiesWithinAABB(Entity.class) - } - } - } - }*/ + } diff --git a/kfc/src/main/java/nmd/primal/forgecraft/util/AnvilHandler.java b/kfc/src/main/java/nmd/primal/forgecraft/util/AnvilHandler.java index 164237ee..d13ce608 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/util/AnvilHandler.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/util/AnvilHandler.java @@ -17,15 +17,15 @@ import nmd.primal.forgecraft.CommonUtils; import nmd.primal.forgecraft.crafting.AnvilCrafting; import nmd.primal.forgecraft.init.ModItems; import nmd.primal.forgecraft.items.BaseMultiItem; -import nmd.primal.forgecraft.items.ForgeHammer; -import nmd.primal.forgecraft.items.SlottedTongs; +import nmd.primal.forgecraft.items.misc.ForgeHammer; +import nmd.primal.forgecraft.items.misc.SlottedTongs; import nmd.primal.forgecraft.items.parts.ToolPart; import nmd.primal.forgecraft.tiles.TileAnvil; import java.util.concurrent.ThreadLocalRandom; import static nmd.primal.forgecraft.blocks.CustomContainerFacing.FACING; -import static nmd.primal.forgecraft.items.SlottedTongs.ITEM_HANDLER; +import static nmd.primal.forgecraft.items.misc.SlottedTongs.ITEM_HANDLER; /** * Created by mminaie on 6/10/17. diff --git a/kfc/src/main/java/nmd/primal/forgecraft/util/ForgeHandler.java b/kfc/src/main/java/nmd/primal/forgecraft/util/ForgeHandler.java index 50e7b48a..0fc8e423 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/util/ForgeHandler.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/util/ForgeHandler.java @@ -10,12 +10,12 @@ import net.minecraftforge.items.IItemHandler; import nmd.primal.core.common.helper.RecipeHelper; import nmd.primal.forgecraft.init.ModItems; import nmd.primal.forgecraft.items.BaseMultiItem; -import nmd.primal.forgecraft.items.SlottedTongs; +import nmd.primal.forgecraft.items.misc.SlottedTongs; import nmd.primal.forgecraft.items.parts.ToolPart; import nmd.primal.forgecraft.tiles.TileForge; import static nmd.primal.forgecraft.blocks.CustomContainerFacing.FACING; -import static nmd.primal.forgecraft.items.SlottedTongs.ITEM_HANDLER; +import static nmd.primal.forgecraft.items.misc.SlottedTongs.ITEM_HANDLER; /** * Created by mminaie on 9/22/18. diff --git a/kfc/src/main/resources/assets/forgecraft/blockstates/woodengearbox.json b/kfc/src/main/resources/assets/forgecraft/blockstates/woodengearbox.json new file mode 100644 index 00000000..e39f10b7 --- /dev/null +++ b/kfc/src/main/resources/assets/forgecraft/blockstates/woodengearbox.json @@ -0,0 +1,16 @@ +{ + "forge_marker":1, + "defaults": { + "textures": { + "particle": "blocks/planks_oak", + "texture": "blocks/planks_oak" + }, + "parent": "forgecraft:gearbox_model" + }, + "variants": { + "facing=north": { "model": "forgecraft:gearbox_model", "y": 90 }, + "facing=east": { "model": "forgecraft:gearbox_model", "y": 180 }, + "facing=south": { "model": "forgecraft:gearbox_model", "y": 270 }, + "facing=west": { "model": "forgecraft:gearbox_model"} + } +} \ No newline at end of file diff --git a/kfc/src/main/resources/assets/forgecraft/models/block/e_particle.png b/kfc/src/main/resources/assets/forgecraft/models/block/e_particle.png deleted file mode 100644 index e557878f9b0081df0e6c571ed915f4780bf1a2fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|X`U{QAsV7vCj@daC~~-LPd)$i z?$?xTj^-IIp9ACFK7V={aJAiXe!J@v0mIGT4Z3dBCY+nlAN}mLRowa~J3GYg{eRVX zXUUaN&3PXSznt{pUt?*oMTj?KX|GSjMcIr5t;EiVqsx9UI;{|T9DHPlG0;W^Pgg&e IbxsLQ03WwL?f?J) diff --git a/kfc/src/main/resources/assets/forgecraft/models/block/e_texture.png b/kfc/src/main/resources/assets/forgecraft/models/block/e_texture.png deleted file mode 100644 index 7291f2ea2b524eccecb6678f7bd40262c849bf2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|A)YRdAsV8|HWeQfm^B+%SKK&v zuFpfaoliDNDM&L$@~vsZp9Y?WbuQ1CZf4l2-1K~5=5VI@Msu3kk+ey<5-m~}Y