From 3191711b09d3b9b48b20f3824fbd803fa1327079 Mon Sep 17 00:00:00 2001 From: Mohammad-Ali Minaie Date: Sun, 11 Nov 2018 21:57:09 -0500 Subject: [PATCH] updating feature branch --- kfc/To-Dos.md | 15 +- .../forgecraft/blocks/machine/Forge.java | 4 +- .../blocks/machine/RedstoneBellows.java | 73 - .../blocks/machine/RedstoneEngine.java | 77 + .../forgecraft/blocks/misc/Gearbox.java | 218 +++ .../nmd/primal/forgecraft/init/ModBlocks.java | 15 +- .../primal/forgecraft/init/ModDictionary.java | 10 + .../nmd/primal/forgecraft/init/ModItems.java | 62 +- .../forgecraft/init/ModTileRenders.java | 8 +- .../nmd/primal/forgecraft/init/ModTiles.java | 4 +- .../renders/blocks/TileGearboxRender.java | 114 ++ .../blocks/TileRedstoneBellowsRender.java | 184 --- .../blocks/TileRedstoneEngineRender.java | 282 ++++ .../primal/forgecraft/tiles/TileGearbox.java | 59 + .../forgecraft/tiles/TileRedstoneBellows.java | 48 - .../forgecraft/tiles/TileRedstoneEngine.java | 62 + ...dstonebellows.json => redstoneengine.json} | 0 .../forgecraft/models/block/e_particle.png | Bin 0 -> 159 bytes .../forgecraft/models/block/e_texture.png | Bin 0 -> 141 bytes .../models/block/gearbox_model.json | 151 ++ .../models/block/redstone_bellows_model.json | 282 +--- .../forgecraft/models/item/crank_wheel.json | 419 ++--- .../models/item/default_gear_model.json | 112 ++ .../forgecraft/models/item/fan_model.json | 182 ++ .../models/item/gear_large_model.json | 1471 +++++++++++++++++ .../models/item/gear_medium_model.json | 1135 +++++++++++++ .../models/item/gear_small_model.json | 967 +++++++++++ .../models/item/gearbox_case_cover.json | 87 + .../forgecraft/models/item/pickaxe2.json | 97 -- .../forgecraft/models/item/pickaxehead2.json | 112 -- .../forgecraft/models/item/piston_arm.json | 19 +- .../models/item/piston_engine_base.json | 56 +- .../forgecraft/models/item/woodfan.json | 8 + 33 files changed, 5274 insertions(+), 1059 deletions(-) delete mode 100644 kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/RedstoneBellows.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/RedstoneEngine.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/Gearbox.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileGearboxRender.java delete mode 100644 kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileRedstoneBellowsRender.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileRedstoneEngineRender.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/tiles/TileGearbox.java delete mode 100644 kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneBellows.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneEngine.java rename kfc/src/main/resources/assets/forgecraft/blockstates/{redstonebellows.json => redstoneengine.json} (100%) create mode 100644 kfc/src/main/resources/assets/forgecraft/models/block/e_particle.png create mode 100644 kfc/src/main/resources/assets/forgecraft/models/block/e_texture.png create mode 100644 kfc/src/main/resources/assets/forgecraft/models/block/gearbox_model.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/default_gear_model.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/fan_model.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/gear_large_model.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/gear_medium_model.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/gear_small_model.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/gearbox_case_cover.json delete mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/pickaxe2.json delete mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/pickaxehead2.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/woodfan.json diff --git a/kfc/To-Dos.md b/kfc/To-Dos.md index ac91efbe..252bd22b 100644 --- a/kfc/To-Dos.md +++ b/kfc/To-Dos.md @@ -5,9 +5,22 @@ - [ ] Placement bug for crucible from tongs - [ ] Wootz shovel not rendering (NORTH) - [ ] Cool Damascus Rendering in tongs +- [ ] Grinding Wheel pull out +- [ ] Grinding wheel wont turn off +- [ ] Grinding wheel rotate ## Current Feature -- [ ] ASM models +- [ ] Redstone Engine Model +- [ ] Engine Refactor +- [ ] Slots for Engines +- [ ] Tool Slot +- [ ] Gearbox Slot +- [ ] Grinding Blade +- [ ] Fan +- [ ] powered-axle +- [ ] Gearbox Block +- [ ] Engine Overclocking +- [ ] Gears ## Feature Optimizations - [ ] Untick Bloomery and Forge diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/Forge.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/Forge.java index 28df46a2..0deaf04c 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/Forge.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/Forge.java @@ -176,7 +176,9 @@ public class Forge extends CustomContainerFacing implements ITileEntityProvider, } - + /*********************** + PUT STUFF ON TOP + ***********************/ if (facing == EnumFacing.UP) { doForgeInventoryManager(pItem, world, tile, pos, hitX, hitY, hitZ, state, player); return true; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/RedstoneBellows.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/RedstoneBellows.java deleted file mode 100644 index 0106ea68..00000000 --- a/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/RedstoneBellows.java +++ /dev/null @@ -1,73 +0,0 @@ -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.tileentity.TileEntity; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import nmd.primal.core.api.PrimalAPI; -import nmd.primal.forgecraft.blocks.CustomContainerFacingActive; -import nmd.primal.forgecraft.tiles.TileRedstoneBellows; -import javax.annotation.Nullable; -import static nmd.primal.core.common.blocks.redstone.AbstractTrigger.POWERED; - -public class RedstoneBellows extends CustomContainerFacingActive { - - public RedstoneBellows(Material material, String registryName) { - super(material, registryName); - } - - @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; - } - return false; - } - - @Override - public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block, BlockPos fromPos) - { - if(!world.isRemote) { - - IBlockState fromState = world.getBlockState(fromPos); - TileRedstoneBellows tile = (TileRedstoneBellows) world.getTileEntity(pos); - - if (state.getValue(FACING) == EnumFacing.NORTH && fromPos.equals(pos.south(1))) { - if (fromState.getValue(POWERED)) { - world.setBlockState(pos, state.withProperty(PrimalAPI.States.ACTIVE, true), 2); - - } - if (!fromState.getValue(POWERED)) { - world.setBlockState(pos, state.withProperty(PrimalAPI.States.ACTIVE, false), 2); - } - } - if (state.getValue(FACING) == EnumFacing.SOUTH && fromPos.equals(pos.north(1))) { - if (fromState.getValue(POWERED)) { - - } - } - if (state.getValue(FACING) == EnumFacing.EAST && fromPos.equals(pos.west(1))) { - if (fromState.getValue(POWERED)) { - - } - } - if (state.getValue(FACING) == EnumFacing.WEST && fromPos.equals(pos.east(1))) { - if (fromState.getValue(POWERED)) { - - } - } - } - } - - @Nullable - @Override - public TileEntity createNewTileEntity(World worldIn, int meta) { - return new TileRedstoneBellows(); - } - -} 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 new file mode 100644 index 00000000..b6e05cb1 --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/RedstoneEngine.java @@ -0,0 +1,77 @@ +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.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +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.forgecraft.blocks.CustomContainerFacingActive; +import nmd.primal.forgecraft.tiles.TileRedstoneEngine; + +import javax.annotation.Nullable; +import java.util.Random; + +public class RedstoneEngine extends CustomContainerFacingActive { + + protected static final AxisAlignedBB boundBox = new AxisAlignedBB(0/16D, 0/16D, 0/16D, 1, 9 / 16D, 1); + + public RedstoneEngine(Material material, String registryName) { + super(material, registryName); + } + + /*@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; + } + return false; + }*/ + + @Override + public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block, BlockPos fromPos) { + if (!world.isRemote) { + TileRedstoneEngine tile = (TileRedstoneEngine) world.getTileEntity(pos); + if (fromPos.equals(pos.down()) || fromPos.equals(pos.offset(state.getValue(FACING).getOpposite()))) { + if (world.isBlockIndirectlyGettingPowered(pos)>0) { + world.setBlockState(pos, state.withProperty(PrimalAPI.States.ACTIVE, true), 2); + int power = world.isBlockIndirectlyGettingPowered(pos); + tile.setRedstone(power); + tile.updateBlock(); + + } + if (!world.isBlockPowered(pos)) { + world.setBlockState(pos, state.withProperty(PrimalAPI.States.ACTIVE, false), 2); + tile.setRedstone(0); + tile.updateBlock(); + } + } + } + } + + @Override + public void randomDisplayTick(IBlockState state, World world, BlockPos pos, Random rand) { + if (state.getValue(PrimalAPI.States.ACTIVE) == Boolean.TRUE) { + if (state.getValue(PistonBellows.FACING) == EnumFacing.NORTH) { + + } + } + } + + @Override + public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) + { + return boundBox; + } + + @Nullable + @Override + public TileEntity createNewTileEntity(World worldIn, int meta) { + return new TileRedstoneEngine(); + } + +} 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 new file mode 100644 index 00000000..a9fefe3a --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/misc/Gearbox.java @@ -0,0 +1,218 @@ +package nmd.primal.forgecraft.blocks.misc; + +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +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.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import nmd.primal.core.common.helper.NBTHelper; +import nmd.primal.core.common.helper.PlayerHelper; +import nmd.primal.forgecraft.blocks.CustomContainerFacing; +import nmd.primal.forgecraft.tiles.TileGearbox; + +import java.util.Random; + + +/** + * Created by mminaie on 11/11/17. + */ +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); + + //private Ingredient crucibleIngredients; + + public Gearbox(Material material, String registryName) { + super(material, registryName); + } + + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hands, EnumFacing face, float hitX, float hitY, float hitZ) { + + if (!world.isRemote) { + + 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 (slot2.isEmpty()) { + if (state.getValue(FACING) == EnumFacing.NORTH) { + if (hitX < 0.5) { + return sideInventoryManager(world, player, tile, slot0, 0); + } + if (hitX > 0.5) { + return sideInventoryManager(world, player, tile, slot1, 1); + } + + return true; + } + if (state.getValue(FACING) == EnumFacing.SOUTH) { + if (hitX > 0.5) { + return sideInventoryManager(world, player, tile, slot0, 0); + } + if (hitX < 0.5) { + return sideInventoryManager(world, player, tile, slot1, 1); + } + + return true; + } + if (state.getValue(FACING) == EnumFacing.EAST) { + if (hitZ < 0.5) { + return sideInventoryManager(world, player, tile, slot0, 0); + } + if (hitZ > 0.5) { + return sideInventoryManager(world, player, tile, slot1, 1); + } + + return true; + } + if (state.getValue(FACING) == EnumFacing.WEST) { + if (hitZ > 0.5) { + return sideInventoryManager(world, player, tile, slot0, 0); + } + if (hitZ < 0.5) { + return sideInventoryManager(world, player, tile, slot1, 1); + } + + return true; + } + if (tile.isItemValidForSlot(2, playerStack)) { + return sideInventoryManager(world, player, tile, slot0, 2); + } + } + + } + + return false; + } + + private boolean sideInventoryManager(World world, EntityPlayer player, TileGearbox tile, ItemStack slot, int index) + { + 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); + return true; + } + } + } + if(player.isSneaking()){ + if(!slot.isEmpty()){ + PlayerHelper.spawnItemOnPlayer(world, player, tile.getSlotStack(index)); + tile.clearSlot(index); + return true; + } + } + return false; + } + + private IBlockState getReplacementBlock(World world, BlockPos pos, IBlockState state) + { + return Blocks.AIR.getDefaultState(); + } + + @Override + public boolean removedByPlayer(IBlockState state, World world, BlockPos pos, EntityPlayer player, boolean willHarvest) + { + this.onBlockHarvested(world, pos, state, player); + return this.destroyBlock(world, pos, state, EnumFacing.UP, player); + } + + public ItemStack getThisItem(World world, BlockPos pos, IBlockState state, EntityPlayer player) + { + return NBTHelper.getStackBlockNBT(world, pos, state, super.getPickBlock(state, null, world, pos, player)); + } + + public boolean destroyBlock(World world, BlockPos pos, IBlockState state, EnumFacing face, EntityPlayer player) + { + if (!world.isRemote) { + TileEntity tile = world.getTileEntity(pos); + if (tile instanceof TileGearbox) { + //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); + world.setBlockState(pos, this.getReplacementBlock(world, pos, state)); + world.markTileEntityForRemoval(tile); + return true; + } + } + return false; + } + + @Override + public void onBlockHarvested(World world, BlockPos pos, IBlockState state, EntityPlayer player) + { + if (!world.isRemote) { + TileGearbox tile = (TileGearbox) world.getTileEntity(pos); + //CrucibleCrafting recipe = CrucibleCrafting.getRecipe(tile.ingList.get(0), tile.ingList.get(1), tile.ingList.get(2), tile.ingList.get(3), tile.ingList.get(4)); + /*if(recipe != null && tile.getStatus() && tile.getHot() == 6){ + if(tile.getDrops() != null) { + PlayerHelper.spawnItemOnPlayer(world, player, recipe.getDropsCooked()); + } else { + PlayerHelper.spawnItemOnPlayer(world, player, recipe.getDropsRaw()); + } + } + if(recipe != null && tile.getStatus() && tile.getHot() == 15){ + PlayerHelper.spawnItemOnPlayer(world, player, recipe.getDropsRaw()); + } + if(!tile.getStatus() && tile.getHot() != 15 && tile.getHot() != 6){ + PlayerHelper.spawnItemOnPlayer(world, player, tile.ingList); + }*/ + } + } + + @Override + public Item getItemDropped(IBlockState state, Random rand, int fortune) + { + // see above onBlockHarvested + return null; + } + + @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(); + world.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()), 2); + //tile.readNBT(tag); + } + } + } + + @Override + public int quantityDropped(Random random) + { + return 1; + } + + @Override + public TileEntity createNewTileEntity(World worldIn, int meta) + { + return new TileGearbox(); + } + + @Override + public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) + { + return boundBox; + } +} diff --git a/kfc/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java b/kfc/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java index dcc24332..76a6586e 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java @@ -13,6 +13,7 @@ import net.minecraftforge.fml.relauncher.SideOnly; import nmd.primal.core.api.PrimalAPI; import nmd.primal.forgecraft.blocks.anvil.AnvilStone; import nmd.primal.forgecraft.blocks.misc.Chisel; +import nmd.primal.forgecraft.blocks.misc.Gearbox; import nmd.primal.forgecraft.blocks.misc.NBTCrucible; import nmd.primal.forgecraft.blocks.misc.YewStave; import nmd.primal.forgecraft.blocks.machine.*; @@ -29,7 +30,9 @@ public class ModBlocks { public static Block bloomery_adobe; public static Block blockbreaker; public static Block castingform; - public static Block redstonebellows; + + public static Block redstoneengine; + public static Block woodengearbox; public static Block bronzechisel; public static Block copperchisel; @@ -62,7 +65,9 @@ public class ModBlocks { bloomery_adobe = new BloomeryBase(Material.ROCK, "bloomery_adobe", 5000); blockbreaker = new Breaker(Material.WOOD, "blockbreaker", 4.0f); castingform = new CastingForm(Material.WOOD, "castingform"); - redstonebellows = new RedstoneBellows(Material.WOOD, "redstonebellows"); + + redstoneengine = new RedstoneEngine(Material.WOOD, "redstoneengine"); + woodengearbox = new Gearbox(Material.WOOD, "woodengearbox"); copperchisel = new Chisel(Material.IRON, "copperchisel", PrimalAPI.ToolMaterials.TOOL_COPPER); bronzechisel = new Chisel(Material.IRON, "bronzechisel", PrimalAPI.ToolMaterials.TOOL_BRONZE); @@ -97,7 +102,9 @@ public class ModBlocks { registerBlockWithItem(bloomery_adobe); registerBlockWithItem(blockbreaker); registerBlockWithItem(castingform); - registerBlockWithItem(redstonebellows); + + registerBlockWithItem(redstoneengine); + registerBlock(woodengearbox); registerBlockWithItem(copperchisel); registerBlockWithItem(bronzechisel); @@ -128,7 +135,7 @@ public class ModBlocks { registerRender(forge_brick); registerRender(forge_adobe); registerRender(castingform); - registerRender(redstonebellows); + registerRender(redstoneengine); registerRender(copperchisel); registerRender(bronzechisel); 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 80a504be..34246f3c 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModDictionary.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModDictionary.java @@ -36,5 +36,15 @@ public class ModDictionary {/*************************************************** OreDictionary.registerOre("nuggetWootz", ModItems.wootzchunk); //} OreDictionary.registerOre("dustBlaze", Items.BLAZE_POWDER); + OreDictionary.registerOre("gearPrimal", ModItems.woodensmallgear); + OreDictionary.registerOre("gearPrimalSmall", ModItems.woodensmallgear); + + OreDictionary.registerOre("gearPrimal", ModItems.woodenmediumgear); + OreDictionary.registerOre("gearPrimalMedium", ModItems.woodenmediumgear); + + OreDictionary.registerOre("gearPrimal", ModItems.woodenlargegear); + OreDictionary.registerOre("gearPrimalLarge", ModItems.woodenlargegear); + + OreDictionary.registerOre("gearboxCoverPrimal", ModItems.woodengearboxcasecover); } } \ No newline at end of file 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 adc9b46c..ed70060a 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModItems.java @@ -38,9 +38,17 @@ public class ModItems { public static Item castingmud; public static Item grindingwheel; + public static Item woodpistonarm; public static Item woodcrank; public static Item woodpiston; + public static Item woodfan; + + public static Item woodensmallgear; + public static Item woodenmediumgear; + public static Item woodenlargegear; + + public static Item woodengearboxcasecover; public static Item bronzeingotball; public static Item bronzechunk; @@ -190,9 +198,7 @@ public class ModItems { forgehammer = new ForgeHammer("forgehammer"); castingmud = new BaseItem("castingmud"); - woodpistonarm = new BaseItem("woodpistonarm"); - woodcrank = new BaseItem("woodcrank"); - woodpiston = new BaseItem("woodpiston"); + rawlongbow = new RawLongbow("rawlongbow"); unstrunglongbow = new BaseItem("unstrunglongbow"); @@ -201,6 +207,20 @@ public class ModItems { wootzworkblade = new Workblade("wootzworkblade", PrimalAPI.ToolMaterials.TOOL_WOOTZ_STEEL, -1.0F).setFireProof(true); grindingwheel = new BaseSingleItem("grindingwheel", 9000); + /********** + GEARS AND ENGINES + **********/ + woodpistonarm = new BaseItem("woodpistonarm"); + woodcrank = new BaseItem("woodcrank"); + woodpiston = new BaseItem("woodpiston"); + woodfan = new BaseItem("woodfan"); + + woodensmallgear = new BaseSingleItem("woodensmallgear", 1000); + woodenmediumgear = new BaseSingleItem("woodenmediumgear", 1000); + woodenlargegear = new BaseSingleItem("woodenlargegear", 1000); + + woodengearboxcasecover = new BaseItem("woodengearboxcasecover"); + /********** TOOL PARTS **********/ @@ -358,9 +378,7 @@ public class ModItems { ForgeRegistries.ITEMS.register(forgehammer); ForgeRegistries.ITEMS.register(grindingwheel); - ForgeRegistries.ITEMS.register(woodpistonarm); - ForgeRegistries.ITEMS.register(woodcrank); - ForgeRegistries.ITEMS.register(woodpiston); + ForgeRegistries.ITEMS.register(bronzeingotball); ForgeRegistries.ITEMS.register(bronzechunk); @@ -374,6 +392,19 @@ public class ModItems { ForgeRegistries.ITEMS.register(wootzchunk); //ForgeRegistries.ITEMS.register(test); + /********** + GEARS AND ENGINES + **********/ + ForgeRegistries.ITEMS.register(woodpistonarm); + ForgeRegistries.ITEMS.register(woodcrank); + ForgeRegistries.ITEMS.register(woodpiston); + ForgeRegistries.ITEMS.register(woodfan); + + ForgeRegistries.ITEMS.register(woodensmallgear); + ForgeRegistries.ITEMS.register(woodenmediumgear); + ForgeRegistries.ITEMS.register(woodenlargegear); + ForgeRegistries.ITEMS.register(woodengearboxcasecover); + /********** TOOL PARTS @@ -517,10 +548,6 @@ public class ModItems { registerRender(wootzworkblade); registerRender(grindingwheel); - registerRender(woodpistonarm); - registerRender(woodpiston); - registerRender(woodcrank); - registerRender(bronzeingotball); registerRender(bronzechunk); registerRender(ironingotball); @@ -534,10 +561,23 @@ public class ModItems { //registerRender(test); + /********** + GEARS AND ENGINES + **********/ + registerRender(woodpistonarm); + registerRender(woodcrank); + registerRender(woodpiston); + registerRender(woodfan); + + registerRender(woodensmallgear); + registerRender(woodenmediumgear); + registerRender(woodenlargegear); + registerRender(woodengearboxcasecover); + + /********** TOOL PARTS **********/ - registerRender(copperpickaxehead); registerRender(copperaxehead); registerRender(coppershovelhead); diff --git a/kfc/src/main/java/nmd/primal/forgecraft/init/ModTileRenders.java b/kfc/src/main/java/nmd/primal/forgecraft/init/ModTileRenders.java index 642cf26a..51cf047c 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModTileRenders.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModTileRenders.java @@ -1,6 +1,5 @@ package nmd.primal.forgecraft.init; -import net.minecraftforge.client.model.animation.AnimationTESR; import net.minecraftforge.fml.client.registry.ClientRegistry; import nmd.primal.forgecraft.renders.blocks.*; import nmd.primal.forgecraft.tiles.*; @@ -16,7 +15,8 @@ public class ModTileRenders { ClientRegistry.bindTileEntitySpecialRenderer(TileCastingForm.class, new TileCastingformRender()); ClientRegistry.bindTileEntitySpecialRenderer(TileWorkbench.class, new TileWorkbenchRender()); ClientRegistry.bindTileEntitySpecialRenderer(TileSharpBench.class, new TileSharpBenchRender()); - ClientRegistry.bindTileEntitySpecialRenderer(TileRedstoneBellows.class, new TileRedstoneBellowsRender()); + ClientRegistry.bindTileEntitySpecialRenderer(TileRedstoneEngine.class, new TileRedstoneEngineRender()); + ClientRegistry.bindTileEntitySpecialRenderer(TileGearbox.class, new TileGearboxRender()); } @@ -26,10 +26,10 @@ public class ModTileRenders { /* - ClientRegistry.bindTileEntitySpecialRenderer(TileRedstoneBellows.class, new AnimationTESR() + ClientRegistry.bindTileEntitySpecialRenderer(TileRedstoneEngine.class, new AnimationTESR() { @Override - public void handleEvents(TileRedstoneBellows tileRedstoneBellows, float time, Iterable pastEvents) + public void handleEvents(TileRedstoneEngine tileRedstoneBellows, float time, Iterable pastEvents) { //tileRedstoneBellows.handleEvents(time, pastEvents); diff --git a/kfc/src/main/java/nmd/primal/forgecraft/init/ModTiles.java b/kfc/src/main/java/nmd/primal/forgecraft/init/ModTiles.java index e189c627..6e134063 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModTiles.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModTiles.java @@ -1,6 +1,7 @@ package nmd.primal.forgecraft.init; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.registry.GameRegistry; import nmd.primal.forgecraft.tiles.*; @@ -19,7 +20,8 @@ public class ModTiles { registerTileEntity(TileNBTCrucible.class, "nbtcrucible"); registerTileEntity(TileWorkbench.class, "workbench"); registerTileEntity(TileSharpBench.class, "sharpbench"); - registerTileEntity(TileRedstoneBellows.class, "redstonebellows"); + registerTileEntity(TileRedstoneEngine.class, "redstoneengine"); + registerTileEntity(TileGearbox.class, "gearbox"); } private static void registerTileEntity(Class tile_class, String baseName) { 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 new file mode 100644 index 00000000..4f19dca3 --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileGearboxRender.java @@ -0,0 +1,114 @@ +package nmd.primal.forgecraft.renders.blocks; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderItem; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import nmd.primal.core.api.PrimalAPI; +import nmd.primal.forgecraft.blocks.machine.SharpBench; +import nmd.primal.forgecraft.blocks.machine.Workbench; +import nmd.primal.forgecraft.blocks.misc.Gearbox; +import nmd.primal.forgecraft.tiles.TileGearbox; +import nmd.primal.forgecraft.tiles.TileSharpBench; +import org.lwjgl.opengl.GL11; + +/** + * Created by kitsu on 12/4/2016. + */ +public class TileGearboxRender extends TileEntitySpecialRenderer +{ + private RenderItem renderItem = Minecraft.getMinecraft().getRenderItem(); + + @Override + public void render(TileGearbox tile, double x, double y, double z, float partialTicks, int destroyStage, float alpha) + { + BlockPos pos = tile.getPos(); + IBlockState state = this.getWorld().getBlockState(pos); + if (state.getBlock() instanceof Gearbox) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + //GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); + float prevLGTX = OpenGlHelper.lastBrightnessX; + float prevLGTY = OpenGlHelper.lastBrightnessY; + + int bright = tile.getWorld().getCombinedLight(pos.up(), 0); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, bright % 65536, bright / 65536); + + ItemStack stack0 = tile.getSlotStack(0); + + /*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); + } + renderItem.renderItem(stack0, 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); + } + renderItem.renderItem(stack0, 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); + } + renderItem.renderItem(stack0, 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); + } + renderItem.renderItem(stack0, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + }*/ + + + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, prevLGTX, prevLGTY); + GL11.glPopMatrix(); + } + } +} \ No newline at end of file diff --git a/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileRedstoneBellowsRender.java b/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileRedstoneBellowsRender.java deleted file mode 100644 index 398cdbd8..00000000 --- a/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileRedstoneBellowsRender.java +++ /dev/null @@ -1,184 +0,0 @@ -package nmd.primal.forgecraft.renders.blocks; - -import net.minecraft.block.state.IBlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.client.renderer.RenderItem; -import net.minecraft.client.renderer.block.model.ItemCameraTransforms; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.math.BlockPos; -import nmd.primal.core.api.PrimalAPI; -import nmd.primal.forgecraft.blocks.machine.Breaker; -import nmd.primal.forgecraft.blocks.machine.RedstoneBellows; -import nmd.primal.forgecraft.init.ModItems; -import nmd.primal.forgecraft.tiles.TileBreaker; -import nmd.primal.forgecraft.tiles.TileRedstoneBellows; -import org.lwjgl.opengl.GL11; - -/** - * Created by mminaie on 4/9/17. - */ -public class TileRedstoneBellowsRender extends TileEntitySpecialRenderer -{ - private RenderItem renderItem = Minecraft.getMinecraft().getRenderItem(); - private static int time =0; - private static float k =80; - private static float angle = 17; - - @Override - public void render(TileRedstoneBellows tile, double x, double y, double z, float partialTicks, int destroyStage, float alpha) - { - BlockPos pos = tile.getPos(); - IBlockState state = this.getWorld().getBlockState(pos); - ItemStack crank = new ItemStack(ModItems.woodcrank); - ItemStack arm = new ItemStack(ModItems.woodpistonarm); - ItemStack piston = new ItemStack(ModItems.woodpiston); - int[] angles = {0,45,45*2, 45*3, 45*4, 45*5, 45*6, 45*7}; - time++; - if(time > k){ - time = 0; - } - float percentK = time / k; - if (state.getBlock() instanceof RedstoneBellows) { - - GL11.glPushMatrix(); - GL11.glTranslated(x, y, z); - GL11.glScalef(1.0f, 1.0f, 1.0f); - Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); - float prevLGTX = OpenGlHelper.lastBrightnessX; - float prevLGTY = OpenGlHelper.lastBrightnessY; - int bright = tile.getWorld().getCombinedLight(pos.up(), 0); - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, bright % 65536, bright / 65536); - - //ItemStack stack0 = tile.getSlotStack(0); - - if (state.getValue(Breaker.FACING) == EnumFacing.NORTH) { - /***CRANK***/ - GL11.glPushMatrix(); - GL11.glTranslated((11/32D), (9/32D), (7/32D)); - if(state.getValue(PrimalAPI.States.ACTIVE)){ - GL11.glRotatef(360*(time / k), 1.0F, 0.0F, 0.0F); - } - //GL11.glTranslated(0.5D, 0.450D, 0.7); - //GL11.glRotated(90, 0.0f, 1.0f, 0.0f); - //GL11.glRotatef(-135, 0.0f, 0.0f, 1.0f); - - //GL11.glRotatef(tile.getCharge(), 0.0f, 0.0f, 1.0f); - - //GL11.glTranslatef(0.0f, 0.40f, 0.0f); - //GL11.glTranslated(-0.45D, 0.0D, 0.0D); - - renderItem.renderItem(crank, ItemCameraTransforms.TransformType.FIXED); - GL11.glPopMatrix(); - /***PISTON***/ - GL11.glPushMatrix(); - GL11.glTranslated((3/32D), 9/32D, 15/16D); - if(state.getValue(PrimalAPI.States.ACTIVE)){ - //System.out.println(percentK); - //GL11.glRotatef(17, 1.0F, 0.0F, 0.0F); - if( percentK >= 0 && percentK < 0.25 ) { - GL11.glRotatef(angle * (time/(k/4)), 1.0F, 0.0F, 0.0F); - } - float halfFloat = time - (k/4); - if( percentK >= 0.25 && percentK < 0.5) { - GL11.glRotatef(angle * (((k/4)-halfFloat)/(k/4)), 1.0F, 0.0F, 0.0F); - } - if( percentK >= 0.5 && percentK < 0.75) { - GL11.glRotatef(-angle * ((time-(k/2))/(k/4)), 1.0F, 0.0F, 0.0F); - } - float thirdFloat = time - ((k/4)*3); - if( percentK >= 0.75 && percentK < 1) { - GL11.glRotatef(-angle * (((k/4)-thirdFloat)/(k/4)), 1.0F, 0.0F, 0.0F); - - } - - //GL11.glRotatef(360*partialTicks, 1.0F, 0.0F, 0.0F); - } - - //GL11.glRotatef(tile.getCharge(), 0.0f, 0.0f, 1.0f); - - //GL11.glTranslatef(0.0f, 0.40f, 0.0f); - //GL11.glTranslated(-0.45D, 0.0D, 0.0D); - - renderItem.renderItem(piston, ItemCameraTransforms.TransformType.FIXED); - GL11.glPopMatrix(); - /***ARM1***/ - GL11.glPushMatrix(); - //GL11.glTranslated(0.5D, 0.450D, 0.7); - //GL11.glRotated(90, 0.0f, 1.0f, 0.0f); - //GL11.glRotatef(-135, 0.0f, 0.0f, 1.0f); - - //GL11.glRotatef(tile.getCharge(), 0.0f, 0.0f, 1.0f); - - //GL11.glTranslatef(0.0f, 0.40f, 0.0f); - //GL11.glTranslated(-0.45D, 0.0D, 0.0D); - - renderItem.renderItem(arm, ItemCameraTransforms.TransformType.FIXED); - GL11.glPopMatrix(); - /***ARM2***/ - GL11.glPushMatrix(); - GL11.glTranslated(0.5D, 0, 7/16D); - //GL11.glRotated(90, 0.0f, 1.0f, 0.0f); - //GL11.glRotatef(-135, 0.0f, 0.0f, 1.0f); - - //GL11.glRotatef(tile.getCharge(), 0.0f, 0.0f, 1.0f); - - //GL11.glTranslatef(0.0f, 0.40f, 0.0f); - //GL11.glTranslated(-0.45D, 0.0D, 0.0D); - renderItem.renderItem(arm, ItemCameraTransforms.TransformType.FIXED); - GL11.glPopMatrix(); - } - - if (state.getValue(Breaker.FACING) == EnumFacing.EAST) { - GL11.glPushMatrix(); - GL11.glTranslated(0.3D, 0.450D, 0.5); - //GL11.glRotated(90, 0.0f, 1.0f, 0.0f); - GL11.glRotatef(-135, 0.0f, 0.0f, 1.0f); - - //GL11.glRotatef(tile.getCharge(), 0.0f, 0.0f, 1.0f); - - GL11.glTranslatef(0.0f, 0.40f, 0.0f); - GL11.glTranslated(-0.45D, 0.0D, 0.0D); - - renderItem.renderItem(tile.getSlotStack(0), ItemCameraTransforms.TransformType.FIXED); - GL11.glPopMatrix(); - } - - if (state.getValue(Breaker.FACING) == EnumFacing.SOUTH) { - GL11.glPushMatrix(); - GL11.glTranslated(0.5D, 0.450D, 0.3); - GL11.glRotated(90, 0.0f, 1.0f, 0.0f); - GL11.glRotatef(45, 0.0f, 0.0f, 1.0f); - - //GL11.glRotatef(tile.getCharge(), 0.0f, 0.0f, -1.0f); - - GL11.glTranslatef(0.0f, 0.40f, 0.0f); - GL11.glTranslated(-0.45D, 0.0D, 0.0D); - - renderItem.renderItem(tile.getSlotStack(0), ItemCameraTransforms.TransformType.FIXED); - GL11.glPopMatrix(); - } - - if (state.getValue(Breaker.FACING) == EnumFacing.WEST) { - GL11.glPushMatrix(); - GL11.glTranslated(0.7D, 0.450D, 0.5); - //GL11.glRotated(90, 0.0f, 1.0f, 0.0f); - GL11.glRotatef(45, 0.0f, 0.0f, 1.0f); - - //GL11.glRotatef(tile.getCharge(), 0.0f, 0.0f, -1.0f); - - GL11.glTranslatef(0.0f, 0.40f, 0.0f); - GL11.glTranslated(-0.45D, 0.0D, 0.0D); - - renderItem.renderItem(tile.getSlotStack(0), ItemCameraTransforms.TransformType.FIXED); - GL11.glPopMatrix(); - } - - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, prevLGTX, prevLGTY); - GL11.glPopMatrix(); - } - } -} \ No newline at end of file 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 new file mode 100644 index 00000000..3e00b9ac --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileRedstoneEngineRender.java @@ -0,0 +1,282 @@ +package nmd.primal.forgecraft.renders.blocks; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderItem; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import nmd.primal.core.api.PrimalAPI; +import nmd.primal.forgecraft.blocks.CustomContainerFacingActive; +import nmd.primal.forgecraft.blocks.machine.RedstoneEngine; +import nmd.primal.forgecraft.init.ModItems; +import nmd.primal.forgecraft.tiles.TileRedstoneEngine; +import org.lwjgl.opengl.GL11; + +/** + * Created by mminaie on 4/9/17. + */ +public class TileRedstoneEngineRender extends TileEntitySpecialRenderer +{ + private RenderItem renderItem = Minecraft.getMinecraft().getRenderItem(); + private static int time =0; + //private static float k =60; + private static float angle = 17; + + private void doPistonRotations(int t, float kon, float a, float pk, float testa){ + if( pk >= 0 && pk < 0.25 ) { + GL11.glRotatef(angle * (time/(kon/4)), 1.0F, 0.0F, 0.0F); + } + if( pk >= 0.25 && pk < 0.5) { + GL11.glRotatef(testa, 1.0F, 0.0F, 0.0F); + } + if( pk >= 0.5 && pk < 0.75) { + GL11.glRotatef(testa, 1.0F, 0.0F, 0.0F); + } + float thirdFloat = time - ((kon/4)*3); + if( pk >= 0.75 && pk < 1) { + GL11.glRotatef(-angle * (((kon/4)-thirdFloat)/(kon/4)), 1.0F, 0.0F, 0.0F); + } + } + + @Override + public void render(TileRedstoneEngine tile, double x, double y, double z, float partialTicks, int destroyStage, float alpha) + { + BlockPos pos = tile.getPos(); + IBlockState state = this.getWorld().getBlockState(pos); + ItemStack crank = new ItemStack(ModItems.woodcrank); + ItemStack arm = new ItemStack(ModItems.woodpistonarm); + ItemStack piston = new ItemStack(ModItems.woodpiston); + ItemStack slotTool = new ItemStack(ModItems.woodfan); + float k = (60 - (tile.getRedstone()*2)); + + time = (int) (tile.getWorld().getTotalWorldTime() % k); + + float percentK = time / k; + if (state.getBlock() instanceof RedstoneEngine) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + GL11.glScalef(1.0f, 1.0f, 1.0f); + Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); + float prevLGTX = OpenGlHelper.lastBrightnessX; + float prevLGTY = OpenGlHelper.lastBrightnessY; + int bright = tile.getWorld().getCombinedLight(pos.up(), 0); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, bright % 65536, bright / 65536); + + //ItemStack stack0 = tile.getSlotStack(0); + //float angleZ = (float) ((3/16D) * (Math.sin(Math.toRadians( (360*(time / k))-90 ))) ); + float tempY = (float) ((3/16D) * (Math.cos(Math.toRadians( (360*(time / k))-90) )) ); + float tempZ = (float) ((3/16D)+((3/16D) * (Math.sin(Math.toRadians( (360*(time / k))-90 ))) )); + float testRads = (float) Math.atan(tempY/ (tempZ+(6.5/16F)) ); + float testAngle = (float)Math.toDegrees(testRads); + + if (state.getValue(CustomContainerFacingActive.FACING) == EnumFacing.NORTH) { + /***CRANK***/ + GL11.glPushMatrix(); + GL11.glTranslated((11/32D), (9/32D), (7/32D)); + if(state.getValue(PrimalAPI.States.ACTIVE)){ + GL11.glRotatef(360*(percentK), 1.0F, 0.0F, 0.0F); + } + renderItem.renderItem(crank, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***PISTON***/ + GL11.glPushMatrix(); + GL11.glTranslated((3/32D), 9/32D, 15/16D); + if(state.getValue(PrimalAPI.States.ACTIVE)){ + doPistonRotations(time, k, angle, percentK, testAngle); + } + renderItem.renderItem(piston, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***ARM1***/ + GL11.glPushMatrix(); + + GL11.glTranslated((3/32D), 9/32D, 29/32D); + if(state.getValue(PrimalAPI.States.ACTIVE)) { + //GL11.glTranslated(0.0, ((3/16D) * Math.cos(Math.toRadians( (360*(time / k))-90) )), + // (3/16D)+((3/16D) * Math.sin(Math.toRadians( (360*(time / k))-90 ))) ); + doPistonRotations(time, k, angle, percentK, testAngle); + GL11.glTranslated(0, 0, tempZ); + + } + + renderItem.renderItem(arm, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***TOOL SLOT***/ + GL11.glPushMatrix(); + GL11.glTranslated((15/32D), 9/32D, 15/32D); + GL11.glRotatef(45, 1.0F, 0.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)) { + GL11.glRotatef(-360*(percentK), 1.0F, 0.0F, 0.0F); + } + renderItem.renderItem(slotTool, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + + if (state.getValue(CustomContainerFacingActive.FACING) == EnumFacing.SOUTH) { + /***CRANK***/ + GL11.glPushMatrix(); + GL11.glTranslated((21/32D), (9/32D), (25/32D)); + GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)){ + GL11.glRotatef(360*(time / k), 1.0F, 0.0F, 0.0F); + } + renderItem.renderItem(crank, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***PISTON***/ + GL11.glPushMatrix(); + GL11.glTranslated((29/32D), 9/32D, 1/16D); + GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)){ + doPistonRotations(time, k, angle, percentK, testAngle); + } + renderItem.renderItem(piston, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***ARM1***/ + GL11.glPushMatrix(); + + GL11.glTranslated((29/32D), 9/32D, 3/32D); + GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)) { + doPistonRotations(time, k, angle, percentK, testAngle); + GL11.glTranslated(0, 0, tempZ); + + } + + renderItem.renderItem(arm, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***TOOL SLOT***/ + /*GL11.glPushMatrix(); + GL11.glTranslated((29/32D), 9/32D, 13/32D); + GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)) { + //doPistonRotations(time, k, angle, percentK, testAngle); + //GL11.glTranslated(0, 0, tempZ); + } + renderItem.renderItem(arm, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix();*/ + } + + if (state.getValue(CustomContainerFacingActive.FACING) == EnumFacing.EAST) { + /***CRANK***/ + GL11.glPushMatrix(); + GL11.glTranslated((25/32D), (9/32D), (11/32D)); + GL11.glRotatef(-90, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)){ + GL11.glRotatef(360*(time / k), 1.0F, 0.0F, 0.0F); + } + renderItem.renderItem(crank, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***PISTON***/ + GL11.glPushMatrix(); + GL11.glTranslated((3/32D), 9/32D, 3/32D); + GL11.glRotatef(-90, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)){ + doPistonRotations(time, k, angle, percentK, testAngle); + } + renderItem.renderItem(piston, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***ARM1***/ + GL11.glPushMatrix(); + + GL11.glTranslated((3/32D), 9/32D, 3/32D); + GL11.glRotatef(-90, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)) { + doPistonRotations(time, k, angle, percentK, testAngle); + GL11.glTranslated(0, 0, tempZ); + } + + renderItem.renderItem(arm, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***TOOL SLOT***/ + /*GL11.glPushMatrix(); + GL11.glTranslated((29/32D), 9/32D, 13/32D); + GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)) { + //doPistonRotations(time, k, angle, percentK, testAngle); + //GL11.glTranslated(0, 0, tempZ); + } + renderItem.renderItem(arm, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix();*/ + } + + if (state.getValue(CustomContainerFacingActive.FACING) == EnumFacing.WEST) { + /***CRANK***/ + GL11.glPushMatrix(); + GL11.glTranslated((7/32D), (9/32D), (21/32D)); + GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)){ + GL11.glRotatef(360*(time / k), 1.0F, 0.0F, 0.0F); + } + renderItem.renderItem(crank, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***PISTON***/ + GL11.glPushMatrix(); + GL11.glTranslated((29/32D), 9/32D, 29/32D); + GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)){ + doPistonRotations(time, k, angle, percentK, testAngle); + } + renderItem.renderItem(piston, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***ARM1***/ + GL11.glPushMatrix(); + + GL11.glTranslated((29/32D), 9/32D, 29/32D); + GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)) { + doPistonRotations(time, k, angle, percentK, testAngle); + GL11.glTranslated(0, 0, tempZ); + } + + renderItem.renderItem(arm, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***TOOL SLOT***/ + /*GL11.glPushMatrix(); + GL11.glTranslated((29/32D), 9/32D, 13/32D); + GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)) { + //doPistonRotations(time, k, angle, percentK, testAngle); + //GL11.glTranslated(0, 0, tempZ); + } + renderItem.renderItem(arm, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix();*/ + } + + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, prevLGTX, prevLGTY); + GL11.glPopMatrix(); + } + } +} + + /*if( percentK >= 0 && percentK < 0.25 ) { + GL11.glRotatef(angle * (time/(k/4)), 1.0F, 0.0F, 0.0F); + } + float halfFloat = time - (k/4); + if( percentK >= 0.25 && percentK < 0.5) { + GL11.glRotatef(angle * (((k/4)-halfFloat)/(k/4)), 1.0F, 0.0F, 0.0F); + } + if( percentK >= 0.5 && percentK < 0.75) { + GL11.glRotatef(-angle * ((time-(k/2))/(k/4)), 1.0F, 0.0F, 0.0F); + } + float thirdFloat = time - ((k/4)*3); + if( percentK >= 0.75 && percentK < 1) { + GL11.glRotatef(-angle * (((k/4)-thirdFloat)/(k/4)), 1.0F, 0.0F, 0.0F); + + }*/ \ No newline at end of file diff --git a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileGearbox.java b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileGearbox.java new file mode 100644 index 00000000..86331471 --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileGearbox.java @@ -0,0 +1,59 @@ +package nmd.primal.forgecraft.tiles; + +import net.minecraft.item.ItemStack; +import nmd.primal.core.common.helper.RecipeHelper; + +public class TileGearbox extends TileBaseSlot /*implements ITickable*/ { + + public TileGearbox() { + } + + public boolean isItemValidForSlot(int index, ItemStack stack) { + if(index == 0 || index == 1) { + if(this.getSlotStack(0).isEmpty() && this.getSlotStack(1).isEmpty()){ + if (RecipeHelper.isOreName(stack, "gearPrimal")) { + return true; + } + } + if(!this.getSlotStack(0).isEmpty()){ + if(index == 1){ + if(RecipeHelper.isOreName(this.getSlotStack(0), "gearPrimalSmall") && + RecipeHelper.isOreName(stack, "gearPrimalLarge")){ + return true; + } + if(RecipeHelper.isOreName(this.getSlotStack(0), "gearPrimalLarge") && + RecipeHelper.isOreName(stack, "gearPrimalSmall")){ + return true; + } + if(RecipeHelper.isOreName(this.getSlotStack(0), "gearPrimalMedium") && + RecipeHelper.isOreName(stack, "gearPrimalMedium")){ + return true; + } + } + } + if(!this.getSlotStack(1).isEmpty()){ + if(index == 0){ + if(RecipeHelper.isOreName(this.getSlotStack(1), "gearPrimalSmall") && + RecipeHelper.isOreName(stack, "gearPrimalLarge")){ + return true; + } + if(RecipeHelper.isOreName(this.getSlotStack(1), "gearPrimalLarge") && + RecipeHelper.isOreName(stack, "gearPrimalSmall")){ + return true; + } + if(RecipeHelper.isOreName(this.getSlotStack(1), "gearPrimalMedium") && + RecipeHelper.isOreName(stack, "gearPrimalMedium")){ + return true; + } + } + } + } + if(index == 2){ + if (RecipeHelper.isOreName(stack, "gearboxCoverPrimal")) { + return true; + } + } + return false; + } + +} diff --git a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneBellows.java b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneBellows.java deleted file mode 100644 index edebe920..00000000 --- a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneBellows.java +++ /dev/null @@ -1,48 +0,0 @@ -package nmd.primal.forgecraft.tiles; - -import net.minecraft.nbt.NBTTagCompound; - -public class TileRedstoneBellows extends TileBaseSlot { - - - - private int iteration = 0; - private int animateIteration = 0; - - public TileRedstoneBellows() { - } - - public int getIteration(){ - return this.iteration; - } - public int getAnimation(){ - return this.animateIteration; - } - - public void doIterate(){ - if(iteration >= 0 && iteration < 4){ - iteration+=1; - animateIteration=iteration; - } - if(iteration >= 4){ - iteration+=1; - animateIteration=iteration; - } - } - - public NBTTagCompound readNBT(NBTTagCompound nbt) - { - super.readNBT(nbt); - this.iteration = nbt.getInteger("iteration"); - this.animateIteration = nbt.getInteger("animate"); - return nbt; - } - - public NBTTagCompound writeNBT(NBTTagCompound nbt) - { - nbt.setInteger("iteration", this.iteration); - nbt.setInteger("animate", this.animateIteration); - return nbt; - } - -} diff --git a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneEngine.java b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneEngine.java new file mode 100644 index 00000000..7c660c9a --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneEngine.java @@ -0,0 +1,62 @@ +package nmd.primal.forgecraft.tiles; + +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.ITickable; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import nmd.primal.forgecraft.blocks.CustomContainerFacing; + +public class TileRedstoneEngine extends TileBaseSlot /*implements ITickable*/ { + + public int getRedstone() { + return redstone; + } + + public void setRedstone(int redstone) { + this.redstone = redstone; + } + + private int redstone; + + public TileRedstoneEngine() { + } + + // ***************************************************************************** // + // NBT + // ***************************************************************************** // + @Override + public NBTTagCompound readNBT(NBTTagCompound nbt) + { + super.readNBT(nbt); + this.redstone = nbt.getInteger("redstone"); + return nbt; + } + + @Override + public NBTTagCompound writeNBT(NBTTagCompound nbt) + { + nbt.setInteger("redstone", this.redstone); + super.writeNBT(nbt); + 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/resources/assets/forgecraft/blockstates/redstonebellows.json b/kfc/src/main/resources/assets/forgecraft/blockstates/redstoneengine.json similarity index 100% rename from kfc/src/main/resources/assets/forgecraft/blockstates/redstonebellows.json rename to kfc/src/main/resources/assets/forgecraft/blockstates/redstoneengine.json 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 new file mode 100644 index 0000000000000000000000000000000000000000..e557878f9b0081df0e6c571ed915f4780bf1a2fc GIT binary patch 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) literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..7291f2ea2b524eccecb6678f7bd40262c849bf2f GIT binary patch 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