From 9a8fe16df44c736806644d606a3a28844b44663a Mon Sep 17 00:00:00 2001 From: Mohammad-Ali Minaie Date: Sun, 25 Nov 2018 19:27:49 -0500 Subject: [PATCH] create saw assets and saw recipes --- kfc/To-Dos.md | 24 +- .../java/nmd/primal/forgecraft/ModInfo.java | 3 + .../blocks/CustomContainerFacingActive.java | 7 + .../forgecraft/blocks/machine/MachineSaw.java | 150 ++++ .../blocks/machine/RedstoneEngine.java | 90 ++- .../primal/forgecraft/compat/ct/CTSaw.java | 151 ++++ .../crafting/MachineSawCrafting.java | 124 ++++ .../crafting/registery/RecipesMachineSaw.java | 113 +++ .../nmd/primal/forgecraft/init/ModBlocks.java | 10 +- .../primal/forgecraft/init/ModRegistries.java | 8 + .../nmd/primal/forgecraft/init/ModSounds.java | 6 + .../forgecraft/init/ModTileRenders.java | 1 + .../nmd/primal/forgecraft/init/ModTiles.java | 2 +- .../renders/blocks/TileMachineSawRender.java | 418 +++++++++++ .../blocks/TileRedstoneEngineRender.java | 176 ++--- .../forgecraft/tiles/TileMachineSaw.java | 124 ++++ .../forgecraft/tiles/TileRedstoneEngine.java | 75 +- .../forgecraft/util/BreakerHandler.java | 20 +- .../blockstates/ironmachinesaw.json | 20 + .../forgecraft/models/block/castingform2.json | 111 --- .../models/block/saw_block_model.json | 329 +++++---- .../forgecraft/models/item/saw_model.json | 661 +++++++++--------- .../forgecraft/models/item/saw_model2.json | 573 +++++++++++++++ .../resources/assets/forgecraft/sounds.json | 22 +- .../forgecraft/sounds/piston_engine_in.ogg | Bin 0 -> 9069 bytes .../forgecraft/sounds/piston_engine_out.ogg | Bin 0 -> 10706 bytes .../assets/forgecraft/sounds/saw_machine.ogg | Bin 0 -> 19046 bytes 27 files changed, 2479 insertions(+), 739 deletions(-) create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/MachineSaw.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/compat/ct/CTSaw.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/crafting/MachineSawCrafting.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/crafting/registery/RecipesMachineSaw.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileMachineSawRender.java create mode 100644 kfc/src/main/java/nmd/primal/forgecraft/tiles/TileMachineSaw.java create mode 100644 kfc/src/main/resources/assets/forgecraft/blockstates/ironmachinesaw.json delete mode 100644 kfc/src/main/resources/assets/forgecraft/models/block/castingform2.json create mode 100644 kfc/src/main/resources/assets/forgecraft/models/item/saw_model2.json create mode 100644 kfc/src/main/resources/assets/forgecraft/sounds/piston_engine_in.ogg create mode 100644 kfc/src/main/resources/assets/forgecraft/sounds/piston_engine_out.ogg create mode 100644 kfc/src/main/resources/assets/forgecraft/sounds/saw_machine.ogg diff --git a/kfc/To-Dos.md b/kfc/To-Dos.md index bc976239..4489a846 100644 --- a/kfc/To-Dos.md +++ b/kfc/To-Dos.md @@ -10,17 +10,8 @@ - [ ] Grinding wheel rotate ## Current Feature -- [ ] Redstone Engine Model -- [ ] Engine Refactor -- [ ] Slots for Engines -- [ ] Tool Slot -- [ ] Gearbox Slot -- [ ] Grinding Blade -- [ ] Fan -- [ ] powered-axle -- [ ] Gearbox Block -- [ ] Engine Overclocking -- [ ] Gears +- [ ] Recipe Handler for saw +- [ ] Sound for block break ## Feature Optimizations - [ ] Untick Bloomery and Forge @@ -65,6 +56,17 @@ rename s/iron/steel/ iron* ``` ### Completed +- [x] Redstone Engine Model +- [x] Engine Refactor +- [x] Slots for Engines +- [x] Tool Slot +- [x] Gearbox Slot +- [x] Grinding Blade +- [x] Fan +- [x] powered-axle +- [x] Gearbox Block +- [x] Engine Overclocking +- [x] Gears - [x] weapon upgrades - [x] Grinding Bench - [x] Repair ToolHead diff --git a/kfc/src/main/java/nmd/primal/forgecraft/ModInfo.java b/kfc/src/main/java/nmd/primal/forgecraft/ModInfo.java index 3c260fc5..71435352 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/ModInfo.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/ModInfo.java @@ -6,7 +6,9 @@ import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.registries.IForgeRegistry; +import nmd.primal.forgecraft.blocks.machine.MachineSaw; import nmd.primal.forgecraft.crafting.CrucibleCrafting; +import nmd.primal.forgecraft.crafting.MachineSawCrafting; import nmd.primal.forgecraft.crafting.WorkbenchCrafting; import nmd.primal.forgecraft.init.ModItems; //import nmd.primal.forgecraft.Item.ModItems; @@ -57,6 +59,7 @@ public class ModInfo { // In-World Recipes public static final IForgeRegistry CRUCIBLE_CRAFTING = GameRegistry.findRegistry(CrucibleCrafting.class); public static final IForgeRegistry WORKBENCH_CRAFTING = GameRegistry.findRegistry(WorkbenchCrafting.class); + public static final IForgeRegistry MACHINE_SAW_CRAFTING = GameRegistry.findRegistry(MachineSawCrafting.class); } } \ No newline at end of file diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/CustomContainerFacingActive.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/CustomContainerFacingActive.java index 92969772..09b5e8a1 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/blocks/CustomContainerFacingActive.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/CustomContainerFacingActive.java @@ -35,6 +35,13 @@ public abstract class CustomContainerFacingActive extends BlockContainer { setCreativeTab(ModInfo.TAB_FORGECRAFT); } + @Override + public void breakBlock(World worldIn, BlockPos pos, IBlockState state) + { + super.breakBlock(worldIn, pos, state); + worldIn.removeTileEntity(pos); + } + @Override public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/MachineSaw.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/MachineSaw.java new file mode 100644 index 00000000..caed582d --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/MachineSaw.java @@ -0,0 +1,150 @@ +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.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import nmd.primal.core.api.PrimalAPI; +import nmd.primal.core.common.helper.PlayerHelper; +import nmd.primal.core.common.helper.RecipeHelper; +import nmd.primal.forgecraft.blocks.CustomContainerFacingActive; +import nmd.primal.forgecraft.crafting.MachineSawCrafting; +import nmd.primal.forgecraft.init.ModBlocks; +import nmd.primal.forgecraft.init.ModSounds; +import nmd.primal.forgecraft.tiles.TileMachineSaw; +import nmd.primal.forgecraft.tiles.TileRedstoneEngine; + +import javax.annotation.Nullable; +import java.util.Random; + +public class MachineSaw extends CustomContainerFacingActive { + + public MachineSaw(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) { + if (hand.equals(EnumHand.MAIN_HAND)) { + TileMachineSaw tile = (TileMachineSaw) 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(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) { + if (!world.isRemote) { + TileMachineSaw tile = (TileMachineSaw) world.getTileEntity(pos); + + if(state.getValue(FACING).equals (EnumFacing.NORTH)){ + if(world.getBlockState(pos.west()).getBlock().equals(ModBlocks.redstoneengine)){ + updateValues(world, pos, tile, state, pos.west()); + sawThings(world, pos, state, tile, fromPos); + } + + } + if(state.getValue(FACING).equals (EnumFacing.SOUTH)){ + if(world.getBlockState(pos.east()).getBlock().equals(ModBlocks.redstoneengine)){ + updateValues(world, pos, tile, state, pos.east()); + sawThings(world, pos, state, tile, fromPos); + } + } + if(state.getValue(FACING).equals (EnumFacing.EAST)){ + if(world.getBlockState(pos.north()).getBlock().equals(ModBlocks.redstoneengine)){ + updateValues(world, pos, tile, state, pos.north()); + sawThings(world, pos, state, tile, fromPos); + } + } + if(state.getValue(FACING).equals (EnumFacing.WEST)){ + if(world.getBlockState(pos.south()).getBlock().equals(ModBlocks.redstoneengine)){ + updateValues(world, pos, tile, state, pos.south()); + sawThings(world, pos, state, tile, fromPos); + } + } + } + } + + @Nullable + @Override + public TileEntity createNewTileEntity(World worldIn, int meta) { + return new TileMachineSaw(); + } + + private void sawThings(World world, BlockPos pos, IBlockState state, TileMachineSaw tile, BlockPos fromPos){ + if(state.getValue(PrimalAPI.States.ACTIVE) && tile.getTransfer() ){ + if(fromPos.equals(pos.up())) { + IBlockState sawState = world.getBlockState(fromPos); + ItemStack sawStack = new ItemStack(Item.getItemFromBlock(sawState.getBlock()), 1, sawState.getBlock().getMetaFromState(sawState)); + MachineSawCrafting recipe = MachineSawCrafting.getRecipe(sawStack); + if(recipe != null){ + if(!recipe.isDisabled()) { + if(PrimalAPI.randomCheck(15-tile.getRedstone())){ + PlayerHelper.spawnItemOnGround(world, pos.offset(state.getValue(FACING)), recipe.getOutput()); + world.destroyBlock(pos.up(), false); + } else { + world.destroyBlock(pos.up(), true); + } + } + } + } + } + } + + private void setValues(TileMachineSaw tile, TileRedstoneEngine tileRedstoneEngine){ + tile.setPower(tileRedstoneEngine.getPower()); + tile.setTorque(tileRedstoneEngine.getTorque()); + tile.setRpm(tileRedstoneEngine.getRPM()); + tile.setRedstone(tileRedstoneEngine.getRedstone()); + tile.setGearMulti(tileRedstoneEngine.getGearMulti()); + tile.setTransfer(tileRedstoneEngine.getTransfer()); + } + + private void clearValues(TileMachineSaw tile, TileRedstoneEngine tileRedstoneEngine){ + tile.setPower(0); + tile.setTorque(0); + tile.setRpm(0); + tile.setRedstone(0); + tile.setTransfer(tileRedstoneEngine.getTransfer()); + } + + private void updateValues(World world, BlockPos pos, TileMachineSaw tile, IBlockState state, BlockPos offsetPos){ + TileRedstoneEngine tileEngine = (TileRedstoneEngine) world.getTileEntity(offsetPos); + if(world.getBlockState(offsetPos).getValue(PrimalAPI.States.ACTIVE) && tileEngine.getTransfer()){ + setValues(tile, tileEngine); + world.setBlockState(pos, state.withProperty(PrimalAPI.States.ACTIVE, true), 2); + } + if(!world.getBlockState(offsetPos).getValue(PrimalAPI.States.ACTIVE) || !tileEngine.getTransfer()){ + clearValues(tile, tileEngine); + world.setBlockState(pos, state.withProperty(PrimalAPI.States.ACTIVE, false), 2); + tile.markDirty(); + } + } + +} 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 ff17ac95..e16acb81 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 @@ -4,16 +4,20 @@ 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.inventory.ItemStackHelper; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; +import net.minecraft.util.NonNullList; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; import nmd.primal.core.api.PrimalAPI; import nmd.primal.core.common.helper.PlayerHelper; +import nmd.primal.core.common.helper.RecipeHelper; import nmd.primal.forgecraft.blocks.CustomContainerFacingActive; import nmd.primal.forgecraft.tiles.TileRedstoneEngine; @@ -22,7 +26,10 @@ 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); + protected static final AxisAlignedBB boundBoxNorth = new AxisAlignedBB(0/16D, 0/16D, 0/16D, 10/16D, 27 / 32D, 16/16D); + protected static final AxisAlignedBB boundBoxSouth = new AxisAlignedBB(6/16D, 6/16D, 0/16D, 1, 27 / 32D, 16/16D); + protected static final AxisAlignedBB boundBoxEast = new AxisAlignedBB(0/16D, 0/16D, 0/16D, 16/16D, 27 / 32D, 10/16D); + protected static final AxisAlignedBB boundBoxWest = new AxisAlignedBB(0/16D, 0/16D, 6/16D, 1, 27 / 32D, 16/16D); public RedstoneEngine(Material material, String registryName) { super(material, registryName); @@ -34,6 +41,7 @@ public class RedstoneEngine extends CustomContainerFacingActive { if(hand.equals(EnumHand.MAIN_HAND)) { TileRedstoneEngine tile = (TileRedstoneEngine) world.getTileEntity(pos); ItemStack playerStack = player.getHeldItem(hand); + Chunk chunk = world.getChunkFromBlockCoords(pos); if(tile.isItemValidForSlot(0, playerStack)){ ItemStack setStack = playerStack.copy(); @@ -47,12 +55,27 @@ public class RedstoneEngine extends CustomContainerFacingActive { setStack.setCount(1); tile.setSlotStack(1, setStack); playerStack.shrink(1); + tile.setTransfer(true); + + if( world.getRedstonePower(pos.down(), EnumFacing.UP)>0 || + world.getRedstonePower(pos.offset(state.getValue(FACING).getOpposite()), state.getValue(FACING))>0 ) { + if(world.getRedstonePower(pos.down(), EnumFacing.UP) > world.getRedstonePower(pos.offset(state.getValue(FACING).getOpposite()), state.getValue(FACING))){ + tile.setRedstone(world.getRedstonePower(pos.down(), EnumFacing.UP)); + } else { + tile.setRedstone(world.getRedstonePower(pos.offset(state.getValue(FACING).getOpposite()), state.getValue(FACING))); + } + tile.setPower(); + this.setValues(tile); + } + world.markAndNotifyBlock(pos, chunk, state, state, 3); return true; } if(playerStack.isEmpty()){ if(player.isSneaking()){ PlayerHelper.spawnItemOnPlayer(world, player, tile.slotList); tile.clearSlots(); + tile.setTransfer(false); + world.markAndNotifyBlock(pos, chunk, state, state, 3); return true; } } @@ -67,34 +90,38 @@ public class RedstoneEngine extends CustomContainerFacingActive { 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(); - + tile.setPower(); + this.setValues(tile); + world.setBlockState(pos, state.withProperty(PrimalAPI.States.ACTIVE, true), 3); } if (!world.isBlockPowered(pos)) { - world.setBlockState(pos, state.withProperty(PrimalAPI.States.ACTIVE, false), 2); tile.setRedstone(0); - tile.updateBlock(); + tile.setPower(); + this.setValues(tile); + world.setBlockState(pos, state.withProperty(PrimalAPI.States.ACTIVE, false), 3); } } } } - @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; + if(state.getValue(FACING).equals(EnumFacing.NORTH)){ + return boundBoxNorth; + } + if(state.getValue(FACING).equals(EnumFacing.SOUTH)){ + return boundBoxSouth; + } + if(state.getValue(FACING).equals(EnumFacing.EAST)){ + return boundBoxEast; + } + if(state.getValue(FACING).equals(EnumFacing.WEST)){ + return boundBoxWest; + } + return boundBoxNorth; } @Nullable @@ -103,4 +130,35 @@ public class RedstoneEngine extends CustomContainerFacingActive { return new TileRedstoneEngine(); } + private void setValues(TileRedstoneEngine tile){ + if(!tile.getSlotStack(0).isEmpty()){ + NonNullList gearboxList = NonNullList.withSize(3, ItemStack.EMPTY); + if(tile.getSlotStack(0).getSubCompound("BlockEntityTag") != null) { + ItemStackHelper.loadAllItems(tile.getSlotStack(0).getSubCompound("BlockEntityTag"), gearboxList); + if (RecipeHelper.isOreName(gearboxList.get(0), "gearPrimalMedium") && + RecipeHelper.isOreName(gearboxList.get(1), "gearPrimalMedium") && + RecipeHelper.isOreName(gearboxList.get(2), "gearboxCoverPrimal")) { + tile.setRPM(1200F/(60-2*tile.getRedstone())); + tile.setTorque(tile.getPower()/tile.getRPM()); + tile.setGearMulti(1F); + } + if (RecipeHelper.isOreName(gearboxList.get(0), "gearPrimalSmall") && + RecipeHelper.isOreName(gearboxList.get(1), "gearPrimalLarge") && + RecipeHelper.isOreName(gearboxList.get(2), "gearboxCoverPrimal")) { + tile.setRPM((1200F/(60-2*tile.getRedstone()))*4); + tile.setTorque(tile.getPower()/tile.getRPM()); + tile.setGearMulti(4F); + } + if (RecipeHelper.isOreName(gearboxList.get(0), "gearPrimalLarge") && + RecipeHelper.isOreName(gearboxList.get(1), "gearPrimalSmall") && + RecipeHelper.isOreName(gearboxList.get(2), "gearboxCoverPrimal")) { + + tile.setRPM((1200F/(60-2*tile.getRedstone()))/4); + tile.setTorque(tile.getPower()/tile.getRPM()); + tile.setGearMulti(0.25F); + } + } + } + } + } diff --git a/kfc/src/main/java/nmd/primal/forgecraft/compat/ct/CTSaw.java b/kfc/src/main/java/nmd/primal/forgecraft/compat/ct/CTSaw.java new file mode 100644 index 00000000..74574d6f --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/compat/ct/CTSaw.java @@ -0,0 +1,151 @@ +package nmd.primal.forgecraft.compat.ct; + + +import crafttweaker.CraftTweakerAPI; +import crafttweaker.IAction; +import crafttweaker.annotations.ModOnly; +import crafttweaker.annotations.ZenRegister; +import crafttweaker.api.item.IIngredient; +import crafttweaker.api.item.IItemStack; +import crafttweaker.api.minecraft.CraftTweakerMC; +import net.minecraft.inventory.ItemStackHelper; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.Ingredient; +import nmd.primal.core.api.PrimalAPI; +import nmd.primal.core.common.PrimalCore; +import nmd.primal.core.common.helper.RecipeHelper; +import nmd.primal.forgecraft.ModInfo; +import nmd.primal.forgecraft.blocks.machine.MachineSaw; +import nmd.primal.forgecraft.crafting.CrucibleCrafting; +import nmd.primal.forgecraft.crafting.MachineSawCrafting; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +import java.util.List; +import java.util.stream.Collectors; + +@ZenClass("mods.forgecraft.MachineSaw") +@ModOnly(ModInfo.MOD_ID) +@ZenRegister +public class CTSaw { + + static + { + PrimalCore.LOGGER.info("Registering CraftTweaker: " + MachineSawCrafting.RECIPE_PREFIX); + } + + @ZenMethod + public static void addRecipe(IIngredient ing0, + IIngredient output, + String recipe_name) + { + CraftTweakerAPI.apply(new Add(ing0, output, recipe_name)); + } + + @ZenMethod + public static void removeRecipe(String recipe_name) + { + CraftTweakerAPI.apply(new Remove(recipe_name)); + } + + @ZenMethod + public static void removeAll() + { + CraftTweakerAPI.apply(new RemoveAll()); + } + + private static class Add implements IAction + { + private final String recipe_name; + private final Ingredient ing0; + private final List output; + private boolean isDisabled, isHidden; + + public Add(IIngredient I0, IIngredient output, String recipe_name) + { + + ItemStack[] array0 = null; + ItemStack[] emptyArray = new ItemStack[1]; + emptyArray[0] = ItemStack.EMPTY; + + if(I0 != null) { + List zeroIList = I0.getItems().stream().map(CraftTweakerMC::getItemStack).collect(Collectors.toList()); + array0 = zeroIList.stream().toArray(ItemStack[]::new); + } + if(I0 == null) { + array0 = emptyArray; + } + + this.recipe_name = recipe_name; + this.ing0 = Ingredient.fromStacks(array0); + this.output = RecipeHelper.getIIngredientStacks(output); + this.isDisabled = false; + this.isHidden = false; + } + + @Override + public void apply() + { + PrimalCore.LOGGER.info("Add CraftTweaker Recipe: " + this.recipe_name); + MachineSawCrafting.REGISTRY.register(new MachineSawCrafting( + this.ing0, + this.output).setRecipeName(this.recipe_name)); + } + + @Override + public String describe() + { + return "[" + ModInfo.MOD_NAME + "] Adding Crafting Tweaker recipe for: " + MachineSawCrafting.RECIPE_PREFIX; + } + } + + + private static class Remove implements IAction + { + private String recipe_name; + + public Remove(String recipe_name) + { + this.recipe_name = recipe_name; + } + + @Override + public void apply() + { + MachineSawCrafting recipe = MachineSawCrafting.getRecipe(recipe_name); + if (recipe != null && !recipe.isHidden()) + { + PrimalCore.LOGGER.info("Remove CraftTweaker Recipe: " + recipe_name); + recipe.setDisabled(true); + } + } + + @Override + public String describe() + { + return "[" + ModInfo.MOD_NAME + "] Removing Crafting Tweaker recipe for:" + MachineSawCrafting.RECIPE_PREFIX; + } + } + + private static class RemoveAll implements IAction + { + public RemoveAll() { } + + @Override + public void apply() + { + for (MachineSawCrafting recipe : MachineSawCrafting.RECIPES) + { + if (!recipe.isHidden()) + recipe.setDisabled(true); + } + } + + @Override + public String describe() + { + return "[" + ModInfo.MOD_NAME + "] Removing Crafting Tweaker recipe for:" + MachineSawCrafting.RECIPE_PREFIX; + } + } +} + diff --git a/kfc/src/main/java/nmd/primal/forgecraft/crafting/MachineSawCrafting.java b/kfc/src/main/java/nmd/primal/forgecraft/crafting/MachineSawCrafting.java new file mode 100644 index 00000000..599e7fb2 --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/crafting/MachineSawCrafting.java @@ -0,0 +1,124 @@ +package nmd.primal.forgecraft.crafting; + +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.Ingredient; +import net.minecraftforge.registries.IForgeRegistry; +import nmd.primal.core.common.helper.RecipeHelper; +import nmd.primal.core.common.recipes.AbstractRecipe; +import nmd.primal.forgecraft.ModInfo; + +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * Created by mminaie on 11/11/17. + */ +public class MachineSawCrafting extends AbstractRecipe { //extends AbstractCrafting { + + // ***************************************************************************** // + // Recipe Handler CrucibleHandler + // ***************************************************************************** // + + public static final String RECIPE_PREFIX = "machine_saw"; + public static final IForgeRegistry REGISTRY = ModInfo.Registries.MACHINE_SAW_CRAFTING; + + public static Collection getRECIPES() { + return RECIPES; + } + + public static final Collection RECIPES = REGISTRY.getValuesCollection(); + + private Ingredient input; + private List output; + + public Ingredient getInput() { + return input; + } + public void setInput(Ingredient input) { + this.input = input; + } + + public List getOutput() { + return output; + } + public void setOutput(List output) { + this.output = output; + } + + public MachineSawCrafting(Ingredient input, List output){ + super(); + this.input = input; + this.output = output; + } + + public static boolean compare(Ingredient ingredient, ItemStack stack){ + if(stack == null){ + stack = new ItemStack(Items.AIR, 1); + } + if(ingredient == null && stack.isEmpty()) { + return true; + } + + if (ingredient.test(ItemStack.EMPTY)) { + if (stack.isEmpty()) { + return true; + } + } + + if(ingredient.apply(stack)){ + return true; + } + + return false; + } + + public boolean isRecipe(ItemStack input){ + for(MachineSawCrafting recipe : RECIPES){ + if(input == null){ + input = ItemStack.EMPTY; + } + if(compare(recipe.input, input)){ + return true; + } + } + return false; + } + + public static MachineSawCrafting getRecipe(ItemStack input){ + for(MachineSawCrafting recipe : RECIPES){ + if(input == null){ + input = ItemStack.EMPTY; + } + if(recipe.input.apply(input)){ + return recipe; + } + } + return null; + } + + @Override + public Collection getRecipes() { + return RECIPES; + } + + @Override + public String getRecipePrefix() { + return RECIPE_PREFIX; + } + + /** + * Shim for getting a recipe directly from correctly formatted name + * @param recipe_name basic recipe name, no prefix or mod id + * @return Recipe object + */ + @Nullable + public static MachineSawCrafting getRecipe(String recipe_name) + { + return REGISTRY.getValue(getFullRecipeName(RECIPE_PREFIX, recipe_name)); + } +} diff --git a/kfc/src/main/java/nmd/primal/forgecraft/crafting/registery/RecipesMachineSaw.java b/kfc/src/main/java/nmd/primal/forgecraft/crafting/registery/RecipesMachineSaw.java new file mode 100644 index 00000000..69e50947 --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/crafting/registery/RecipesMachineSaw.java @@ -0,0 +1,113 @@ +package nmd.primal.forgecraft.crafting.registery; + +import crafttweaker.api.block.IBlock; +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.util.NonNullList; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.registry.GameRegistry; +import net.minecraftforge.oredict.OreDictionary; +import net.minecraftforge.oredict.OreIngredient; +import net.minecraftforge.registries.IForgeRegistry; +import nmd.primal.core.api.PrimalAPI; +import nmd.primal.core.common.helper.RecipeHelper; +import nmd.primal.forgecraft.ModInfo; +import nmd.primal.forgecraft.crafting.MachineSawCrafting; +import nmd.primal.forgecraft.crafting.WorkbenchCrafting; +import nmd.primal.forgecraft.init.ModItems; + +import java.util.List; + +@GameRegistry.ObjectHolder(ModInfo.MOD_ID) +@Mod.EventBusSubscriber +public final class RecipesMachineSaw { + @SubscribeEvent + public static void registerRecipes(RegistryEvent.Register event) { + PrimalAPI.logger(7, "Registering Recipes: " + MachineSawCrafting.RECIPE_PREFIX); + final IForgeRegistry recipes = event.getRegistry(); + + ItemStack sticks = new ItemStack(Items.STICK, 2); + + recipes.register(new MachineSawCrafting( + new OreIngredient("logOak"), + RecipeHelper.buildList((new ItemStack(Item.getItemFromBlock(Blocks.PLANKS), 4, 0)), + (new ItemStack(PrimalAPI.Items.BARK_OAK, 4)), + sticks)) + .setRecipeName("oakPlanks")); + recipes.register(new MachineSawCrafting( + new OreIngredient("logSpruce"), + RecipeHelper.buildList((new ItemStack(Item.getItemFromBlock(Blocks.PLANKS), 4, 1)), + (new ItemStack(PrimalAPI.Items.BARK_SPRUCE, 4)), + sticks)) + .setRecipeName("sprucePlanks")); + recipes.register(new MachineSawCrafting( + new OreIngredient("logBirch"), + RecipeHelper.buildList( (new ItemStack(Item.getItemFromBlock(Blocks.PLANKS), 4, 2)), + (new ItemStack(PrimalAPI.Items.BARK_BIRCH, 4)), + sticks)) + .setRecipeName("birchPlanks")); + recipes.register(new MachineSawCrafting( + new OreIngredient("logJungle"), + RecipeHelper.buildList(new ItemStack(Item.getItemFromBlock(Blocks.PLANKS), 4, 3))) + .setRecipeName("junglePlanks")); + recipes.register(new MachineSawCrafting( + new OreIngredient("logAcacia"), + RecipeHelper.buildList(new ItemStack(Item.getItemFromBlock(Blocks.PLANKS), 4, 0))) + .setRecipeName("acaciaPlanks")); + recipes.register(new MachineSawCrafting( + new OreIngredient("logIronwood"), + RecipeHelper.buildList(new ItemStack(Item.getItemFromBlock(PrimalAPI.Blocks.PLANKS), 4, 0))) + .setRecipeName("ironwoodPlanks")); + recipes.register(new MachineSawCrafting( + new OreIngredient("logYew"), + RecipeHelper.buildList(new ItemStack(Item.getItemFromBlock(PrimalAPI.Blocks.PLANKS), 4, 1))) + .setRecipeName("yewPlanks")); + recipes.register(new MachineSawCrafting( + new OreIngredient("logCorypha"), + RecipeHelper.buildList(new ItemStack(Item.getItemFromBlock(PrimalAPI.Blocks.PLANKS), 4, 3))) + .setRecipeName("coryphaPlanks")); + + recipes.register(new MachineSawCrafting( + new OreIngredient("strippedOak"), + RecipeHelper.buildList(new ItemStack(PrimalAPI.Items.LOGS_SPLIT_OAK, 6))) + .setRecipeName("splitOak")); + recipes.register(new MachineSawCrafting( + new OreIngredient("strippedSpruce"), + RecipeHelper.buildList(new ItemStack(PrimalAPI.Items.LOGS_SPLIT_SPRUCE, 6))) + .setRecipeName("splitSpruce")); + recipes.register(new MachineSawCrafting( + new OreIngredient("strippedBirch"), + RecipeHelper.buildList(new ItemStack(PrimalAPI.Items.LOGS_SPLIT_BIRCH, 6))) + .setRecipeName("splitBirch")); + recipes.register(new MachineSawCrafting( + new OreIngredient("strippedJungle"), + RecipeHelper.buildList(new ItemStack(PrimalAPI.Items.LOGS_SPLIT_JUNGLE, 6))) + .setRecipeName("splitJungle")); + recipes.register(new MachineSawCrafting( + new OreIngredient("strippedAcacia"), + RecipeHelper.buildList(new ItemStack(PrimalAPI.Items.LOGS_SPLIT_ACACIA, 6))) + .setRecipeName("splitAcacia")); + recipes.register(new MachineSawCrafting( + new OreIngredient("strippedDarkOak"), + RecipeHelper.buildList(new ItemStack(PrimalAPI.Items.LOGS_SPLIT_DARK_OAK, 6))) + .setRecipeName("splitDarkOak")); + recipes.register(new MachineSawCrafting( + new OreIngredient("strippedIronwood"), + RecipeHelper.buildList(new ItemStack(PrimalAPI.Items.LOGS_SPLIT_IRONWOOD, 6))) + .setRecipeName("splitIronwood")); + recipes.register(new MachineSawCrafting( + new OreIngredient("strippedYew"), + RecipeHelper.buildList(new ItemStack(PrimalAPI.Items.LOGS_SPLIT_YEW, 6))) + .setRecipeName("splitYew")); + recipes.register(new MachineSawCrafting( + new OreIngredient("strippedCorypha"), + RecipeHelper.buildList(new ItemStack(PrimalAPI.Items.LOGS_SPLIT_CORYPHA, 6))) + .setRecipeName("splitCorypha")); + } +} \ No newline at end of file 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 76a6586e..754ea153 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModBlocks.java @@ -49,13 +49,16 @@ public class ModBlocks { public static Block pistonbellowsacacia; public static Block stoneanvil; - public static Block ironanvil; + //public static Block ironanvil; public static Block workbench; public static Block sharpbench; public static Block yewstave; + /** M A C H I N E S **/ + public static Block machinesaw; + public static void init() { nbtCrucible = new NBTCrucible(Material.ROCK, "nbtcrucible"); @@ -91,6 +94,8 @@ public class ModBlocks { yewstave = new YewStave(Material.WOOD, "yewstave", 3.0F); + machinesaw = new MachineSaw(Material.IRON, "ironmachinesaw"); + } @@ -127,6 +132,8 @@ public class ModBlocks { registerBlockWithItem(sharpbench); registerBlockWithItem(yewstave); + + registerBlockWithItem(machinesaw); } @SideOnly(Side.CLIENT) @@ -162,6 +169,7 @@ public class ModBlocks { registerRender(yewstave); + registerRender(machinesaw); } private static void registerBlockWithItem(Block block) diff --git a/kfc/src/main/java/nmd/primal/forgecraft/init/ModRegistries.java b/kfc/src/main/java/nmd/primal/forgecraft/init/ModRegistries.java index 269a7896..1cefd668 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModRegistries.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModRegistries.java @@ -9,6 +9,7 @@ import net.minecraftforge.registries.RegistryBuilder; import nmd.primal.core.api.PrimalAPI; import nmd.primal.forgecraft.ModInfo; import nmd.primal.forgecraft.crafting.CrucibleCrafting; +import nmd.primal.forgecraft.crafting.MachineSawCrafting; import nmd.primal.forgecraft.crafting.WorkbenchCrafting; /** @@ -35,5 +36,12 @@ public class ModRegistries { registryWorkbench.setIDRange(0, 1000); registryWorkbench.create(); + PrimalAPI.logger(1, "Custom Registry", MachineSawCrafting.RECIPE_PREFIX); + RegistryBuilder registryMachineSaw = new RegistryBuilder(); + registryMachineSaw.setType(MachineSawCrafting.class); + registryMachineSaw.setName(new ResourceLocation(ModInfo.MOD_ID, "recipes_" + MachineSawCrafting.RECIPE_PREFIX)); + registryMachineSaw.setIDRange(0, 1000); + registryMachineSaw.create(); + } } diff --git a/kfc/src/main/java/nmd/primal/forgecraft/init/ModSounds.java b/kfc/src/main/java/nmd/primal/forgecraft/init/ModSounds.java index da5b56c2..a11e82ac 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModSounds.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModSounds.java @@ -15,6 +15,9 @@ public class ModSounds { public static SoundEvent BOW_TWANG; public static SoundEvent CHISEL_HIT; public static SoundEvent CHISEL_HIT_FINISHED; + public static SoundEvent ENGINE_EXTENSION; + public static SoundEvent ENGINE_RETRACTION; + public static SoundEvent SAW_MACHINE; public static void registerSounds() { @@ -23,6 +26,9 @@ public class ModSounds { BOW_TWANG = registerSound("bow_twang"); CHISEL_HIT = registerSound("chisel_hit"); CHISEL_HIT_FINISHED = registerSound("chisel_hit_finished"); + ENGINE_EXTENSION = registerSound("piston_engine_out"); + ENGINE_RETRACTION = registerSound("piston_engine_in"); + SAW_MACHINE = registerSound("saw_machine"); } private static SoundEvent registerSound(String name) 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 51cf047c..d215579b 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModTileRenders.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModTileRenders.java @@ -17,6 +17,7 @@ public class ModTileRenders { ClientRegistry.bindTileEntitySpecialRenderer(TileSharpBench.class, new TileSharpBenchRender()); ClientRegistry.bindTileEntitySpecialRenderer(TileRedstoneEngine.class, new TileRedstoneEngineRender()); ClientRegistry.bindTileEntitySpecialRenderer(TileGearbox.class, new TileGearboxRender()); + ClientRegistry.bindTileEntitySpecialRenderer(TileMachineSaw.class, new TileMachineSawRender()); } 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 6e134063..97eebe57 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/init/ModTiles.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/init/ModTiles.java @@ -1,7 +1,6 @@ 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.*; @@ -22,6 +21,7 @@ public class ModTiles { registerTileEntity(TileSharpBench.class, "sharpbench"); registerTileEntity(TileRedstoneEngine.class, "redstoneengine"); registerTileEntity(TileGearbox.class, "gearbox"); + registerTileEntity(TileMachineSaw.class, "machine"); } private static void registerTileEntity(Class tile_class, String baseName) { diff --git a/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileMachineSawRender.java b/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileMachineSawRender.java new file mode 100644 index 00000000..7487b3f6 --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileMachineSawRender.java @@ -0,0 +1,418 @@ +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.SoundCategory; +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.blocks.machine.MachineSaw; +import nmd.primal.forgecraft.init.ModBlocks; +import nmd.primal.forgecraft.init.ModSounds; +import nmd.primal.forgecraft.tiles.TileMachineSaw; +import nmd.primal.forgecraft.tiles.TileRedstoneEngine; +import org.lwjgl.opengl.GL11; + +/** + * Created by mminaie on 4/9/17. + */ +public class TileMachineSawRender extends TileEntitySpecialRenderer { + private RenderItem renderItem = Minecraft.getMinecraft().getRenderItem(); + private boolean sound1; + + private boolean getSound1() { + return sound1; + } + private void setSound1(boolean sound) { + this.sound1 = sound; + } + + @Override + public void render(TileMachineSaw tile, double x, double y, double z, float partialTicks, int destroyStage, float alpha) { + BlockPos pos = tile.getPos(); + IBlockState state = this.getWorld().getBlockState(pos); + World world = tile.getWorld(); + + ItemStack saw = tile.getSlotStack(0); + + if (state.getBlock() instanceof MachineSaw) { + + 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); + + //N O R T H + if (state.getValue(CustomContainerFacingActive.FACING) == EnumFacing.NORTH) { + GL11.glPushMatrix(); + GL11.glTranslated((16 / 32D), (27 / 32D), (16 / 32D)); + GL11.glRotatef(180 , 0.0F, 1.0F, 0.0F); + if(world.getBlockState(pos.west()).getBlock().equals(ModBlocks.redstoneengine)) { + if(state.getValue(PrimalAPI.States.ACTIVE) && tile.getTransfer()) { + GL11.glRotatef(-360 * createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone()), 1.0F, 0.0F, 0.0F); + if(createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone())<=0.02F && !getSound1()){ + world.playSound(pos.getX(), pos.getY(), pos.getZ(), ModSounds.SAW_MACHINE, SoundCategory.BLOCKS, 0.15F, 1.0F, true); + } + if(createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone())>0.02F && getSound1()){ + setSound1(false); + } + } + + } + renderItem.renderItem(saw, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + + //S O U T H// + if (state.getValue(CustomContainerFacingActive.FACING) == EnumFacing.SOUTH) { + GL11.glPushMatrix(); + GL11.glTranslated((16 / 32D), (27 / 32D), (16 / 32D)); + if(world.getBlockState(pos.east()).getBlock().equals(ModBlocks.redstoneengine)) { + if(state.getValue(PrimalAPI.States.ACTIVE) && tile.getTransfer()) { + GL11.glRotatef(-360 * createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone()), 1.0F, 0.0F, 0.0F); + if(createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone())<=0.02F && !getSound1()){ + world.playSound(pos.getX(), pos.getY(), pos.getZ(), ModSounds.SAW_MACHINE, SoundCategory.BLOCKS, 0.15F, 1.0F, true); + } + if(createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone())>0.02F && getSound1()){ + setSound1(false); + } + } + } + renderItem.renderItem(saw, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + + //E A S T// + if (state.getValue(CustomContainerFacingActive.FACING) == EnumFacing.EAST) { + GL11.glPushMatrix(); + GL11.glTranslated((16 / 32D), (27 / 32D), (16 / 32D)); + GL11.glRotatef(90 , 0.0F, 1.0F, 0.0F); + if(world.getBlockState(pos.north()).getBlock().equals(ModBlocks.redstoneengine)) { + if(state.getValue(PrimalAPI.States.ACTIVE) && tile.getTransfer()) { + GL11.glRotatef(360 * createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone()), 1.0F, 0.0F, 0.0F); + if(createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone())<=0.02F && !getSound1()){ + world.playSound(pos.getX(), pos.getY(), pos.getZ(), ModSounds.SAW_MACHINE, SoundCategory.BLOCKS, 0.15F, 1.0F, true); + } + if(createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone())>0.02F && getSound1()){ + setSound1(false); + } + } + } + renderItem.renderItem(saw, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + + //W E S T// + if (state.getValue(CustomContainerFacingActive.FACING) == EnumFacing.WEST) { + GL11.glPushMatrix(); + GL11.glTranslated((16 / 32D), (27 / 32D), (16 / 32D)); + GL11.glRotatef(-90 , 0.0F, 1.0F, 0.0F); + if(world.getBlockState(pos.south()).getBlock().equals(ModBlocks.redstoneengine)) { + if(state.getValue(PrimalAPI.States.ACTIVE) && tile.getTransfer()) { + GL11.glRotatef(360 * createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone()), 1.0F, 0.0F, 0.0F); + if(createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone())<=0.02F && !getSound1()){ + world.playSound(pos.getX(), pos.getY(), pos.getZ(), ModSounds.SAW_MACHINE, SoundCategory.BLOCKS, 0.15F, 1.0F, true); + } + if(createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone())>0.02F && getSound1()){ + setSound1(false); + } + } + } + renderItem.renderItem(saw, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, prevLGTX, prevLGTY); + GL11.glPopMatrix(); + } + } + + public float createOutputK(World world, Float gearMulti, int redstone){ + if(gearMulti==1){ + float k = (60 - (redstone*2)); + float time = (int) (world.getTotalWorldTime() % k); + float tempK = (time / k); + return tempK; + } else if (gearMulti==4){ + float fastk = (60 - (redstone*2))*0.25F; + float fastTime = (int) (world.getTotalWorldTime() % fastk); + float tempk = fastTime / fastk; + return tempk; + } else if(gearMulti==0.25){ + float slowk = (60 - (redstone*2))*4F; + float slowTime = (int) (world.getTotalWorldTime() % slowk); + float tempk = slowTime / slowk; + return tempk; + } else return 0; + } + +} + /************************ + S O U T H + ************************/ +/* + if (state.getValue(CustomContainerFacingActive.FACING) == EnumFacing.SOUTH) { + /***CRANK***/ +/* + GL11.glPushMatrix(); + GL11.glTranslated((21/32D), (16/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), 16/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), 16/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(); + + /***GEARBOX***/ +/* + GL11.glPushMatrix(); + + GL11.glTranslated(16/32D, 23/32D, 16/32D); + GL11.glRotatef(90, 0F, 1F, 0.0F); + renderItem.renderItem(gearbox, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***TOOL SLOT***/ +/* + GL11.glPushMatrix(); + + float gearMulti = 1; + + GL11.glTranslated((16/32D), 16/32D, 16/32D); + GL11.glRotatef(180, 0F, 1F, 0F); + + NonNullList 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(); + GL11.glTranslated((25/32D), (16/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), 16/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), 16/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(); + + /***GEARBOX***/ +/* + GL11.glPushMatrix(); + + GL11.glTranslated(16/32D, 23/32D, 16/32D); + GL11.glRotatef(180, 0F, 1F, 0.0F); + renderItem.renderItem(gearbox, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***TOOL SLOT***/ +/* + GL11.glPushMatrix(); + + float gearMulti = 1; + + GL11.glTranslated((16/32D), 16/32D, 16/32D); + GL11.glRotatef(-90, 0F, 1F, 0F); + + NonNullList 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(); + GL11.glTranslated((7/32D), (16/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), 16/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), 16/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(); + + /***GEARBOX***/ +/* + GL11.glPushMatrix(); + + GL11.glTranslated(16/32D, 23/32D, 16/32D); + //GL11.glRotatef(180, 0F, 1F, 0.0F); + renderItem.renderItem(gearbox, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + + /***TOOL SLOT***/ +/* + GL11.glPushMatrix(); + + float gearMulti = 1; + + GL11.glTranslated((16/32D), 16/32D, 16/32D); + GL11.glRotatef(90, 0F, 1F, 0F); + + NonNullList 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(); + } +*/ + //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/renders/blocks/TileRedstoneEngineRender.java b/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileRedstoneEngineRender.java index f72dcaf5..e211ebd3 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,16 +7,21 @@ 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.entity.player.EntityPlayer; +import net.minecraft.init.SoundEvents; import net.minecraft.inventory.ItemStackHelper; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; import net.minecraft.util.NonNullList; +import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; 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; +import nmd.primal.forgecraft.init.ModSounds; import nmd.primal.forgecraft.tiles.TileRedstoneEngine; import org.lwjgl.opengl.GL11; @@ -29,19 +34,53 @@ public class TileRedstoneEngineRender extends TileEntitySpecialRenderer= 0 && pk < 0.25 ) { + if(pk<=0.02 && !getSound2()){ + world.playSound(pos.getX(), pos.getY(), pos.getZ(), ModSounds.ENGINE_RETRACTION, SoundCategory.BLOCKS, 0.25F, 1.0F, true); + setSound2(true); + } + GL11.glRotatef(angle * (time/(kon/4)), 1.0F, 0.0F, 0.0F); } if( pk >= 0.25 && pk < 0.5) { + if(getSound2()){ + setSound2(false); + } GL11.glRotatef(testa, 1.0F, 0.0F, 0.0F); } if( pk >= 0.5 && pk < 0.75) { + if(pk<=0.52 && !getSound1()){ + world.playSound(pos.getX(), pos.getY(), pos.getZ(), ModSounds.ENGINE_EXTENSION, SoundCategory.BLOCKS, 0.2F, 1.0F, true); + setSound1(true); + } + GL11.glRotatef(testa, 1.0F, 0.0F, 0.0F); } float thirdFloat = time - ((kon/4)*3); - if( pk >= 0.75 && pk < 1) { + if( pk >= 0.75 && pk <= 1) { + if(getSound1()){ + setSound1(false); + } GL11.glRotatef(-angle * (((kon/4)-thirdFloat)/(kon/4)), 1.0F, 0.0F, 0.0F); } } @@ -51,12 +90,12 @@ 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=percentKSlow; - } - if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalMedium")) { - gearMulti=percentKMed; - } - if(RecipeHelper.isOreName(gearList.get(0), "gearPrimalLarge")) { - gearMulti=percentKFast; - } - } if(state.getValue(PrimalAPI.States.ACTIVE)) { - GL11.glRotatef(-360*(gearMulti), 1.0F, 0.0F, 0.0F); + + GL11.glRotatef(-360 * createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone()) , 1.0F, 0.0F, 0.0F); + //GL11.glRotatef(-360*(percentKFast), 1.0F, 0.0F, 0.0F); } renderItem.renderItem(slotTool, ItemCameraTransforms.TransformType.FIXED); GL11.glPopMatrix(); @@ -185,7 +197,7 @@ 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); + GL11.glRotatef(-360*createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone()), 1.0F, 0.0F, 0.0F); } renderItem.renderItem(slotTool, ItemCameraTransforms.TransformType.FIXED); GL11.glPopMatrix(); @@ -257,7 +255,7 @@ 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); + GL11.glRotatef(-360*createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone()), 1.0F, 0.0F, 0.0F); } renderItem.renderItem(slotTool, ItemCameraTransforms.TransformType.FIXED); GL11.glPopMatrix(); @@ -330,7 +314,7 @@ 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); + GL11.glRotatef(-360*createOutputK(tile.getWorld(), tile.getGearMulti(), tile.getRedstone()), 1.0F, 0.0F, 0.0F); } renderItem.renderItem(slotTool, ItemCameraTransforms.TransformType.FIXED); GL11.glPopMatrix(); @@ -389,20 +359,24 @@ public class TileRedstoneEngineRender extends TileEntitySpecialRenderer= 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); + public float createOutputK(World world, Float gearMulti, int redstone){ + if(gearMulti==1){ + float k = (60 - (redstone*2)); + float time = (int) (world.getTotalWorldTime() % k); + float tempK = (time / k); + return tempK; + } else if (gearMulti==4){ + float fastk = (60 - (redstone*2))*0.25F; + float fastTime = (int) (world.getTotalWorldTime() % fastk); + float tempk = fastTime / fastk; + return tempk; + } else if(gearMulti==0.25){ + float slowk = (60 - (redstone*2))*4F; + float slowTime = (int) (world.getTotalWorldTime() % slowk); + float tempk = slowTime / slowk; + return tempk; + } else return 0; + } - }*/ \ No newline at end of file +} \ No newline at end of file diff --git a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileMachineSaw.java b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileMachineSaw.java new file mode 100644 index 00000000..39d597b0 --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileMachineSaw.java @@ -0,0 +1,124 @@ +package nmd.primal.forgecraft.tiles; + +import net.minecraft.inventory.ItemStackHelper; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ITickable; +import net.minecraft.util.NonNullList; +import nmd.primal.forgecraft.items.blocks.ItemGearbox; +import nmd.primal.forgecraft.items.enginetools.BaseEngineTool; + +public class TileMachineSaw extends TileBaseSlot /*implements ITickable*/ { + + + + private float torque; + private float power; + private float rpm; + + private int redstone; + private float gearMulti; + + private boolean transfer; + private boolean playSound; + + public int getRedstone() { + return redstone; + } + + public void setRedstone(int redstone) { + this.redstone = redstone; + } + + public float getGearMulti() { + return gearMulti; + } + + public void setGearMulti(float gearMulti) { + this.gearMulti = gearMulti; + } + + public void setTorque(float torque) { + this.torque = torque; + } + + public void setPower(float power) { + this.power = power; + } + + public void setRpm(float rpm) { + this.rpm = rpm; + } + + public float getTorque() { + return torque; + } + + public float getPower() { + return power; + } + + public float getRpm() { + return rpm; + } + + public boolean getTransfer() { + return transfer; + } + + public void setTransfer(boolean transfer) { + this.transfer = transfer; + } + public boolean getPlaySound() { + return playSound; + } + + public void setPlaySound(boolean playSound) { + this.playSound = playSound; + } + + public TileMachineSaw() { + } + + public boolean isItemValidForSlot(int index, ItemStack stack) { + + if(index == 0){ + if(this.getSlotStack(0).isEmpty() && stack.getItem() instanceof BaseEngineTool) { + return true; + } + } + return false; + } + + // ***************************************************************************** // + // NBT + // ***************************************************************************** // + @Override + public NBTTagCompound readNBT(NBTTagCompound nbt) + { + super.readNBT(nbt); + this.torque = nbt.getFloat("torque"); + this.power = nbt.getFloat("power"); + this.rpm = nbt.getFloat("rpm"); + this.redstone = nbt.getInteger("redstone"); + this.gearMulti = nbt.getFloat("gear"); + this.transfer = nbt.getBoolean("transfer"); + return nbt; + } + + @Override + public NBTTagCompound writeNBT(NBTTagCompound nbt) + { + nbt.setFloat("torque", this.torque); + nbt.setFloat("power", this.power); + nbt.setFloat("rpm", this.rpm); + nbt.setInteger("redstone", this.redstone); + nbt.setFloat("gear", this.gearMulti); + nbt.setBoolean("transfer", this.transfer); + super.writeNBT(nbt); + 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 index 204e6427..c7db3afd 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneEngine.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileRedstoneEngine.java @@ -1,55 +1,47 @@ package nmd.primal.forgecraft.tiles; -import net.minecraft.block.Block; -import net.minecraft.block.state.IBlockState; -import net.minecraft.inventory.ItemStackHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ITickable; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import nmd.primal.core.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 { private int redstone; // AKA power - private int torque; // = power/speed - private int speed; // = power/torque + private float torque; // = power/speed + private float power;// = 100*redstone; + private float rpm; + + private boolean transfer = false; + private float gearMulti; + + public float getGearMulti() { return gearMulti; } + public void setGearMulti(float gearMulti){ this.gearMulti = gearMulti;} 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 float getTorque() { return torque; } + public void setTorque(float torque) { + this.torque = torque; + } + + public float getRPM() { return rpm; } + public void setRPM(float rpm) { + this.rpm = rpm; + } + + public float getPower() {return power; } + public void setPower() { this.power = 100*redstone; } + + public boolean getTransfer() { return transfer; } + public void setTransfer(boolean transfer) { + this.transfer = transfer; + } 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) { @@ -73,7 +65,11 @@ public class TileRedstoneEngine extends TileBaseSlot implements ITickable { { super.readNBT(nbt); this.redstone = nbt.getInteger("redstone"); - + this.torque = nbt.getFloat("torque"); + this.power = nbt.getFloat("power"); + this.rpm = nbt.getFloat("rpm"); + this.transfer = nbt.getBoolean("transfer"); + this.gearMulti = nbt.getFloat("gear"); return nbt; } @@ -81,6 +77,11 @@ public class TileRedstoneEngine extends TileBaseSlot implements ITickable { public NBTTagCompound writeNBT(NBTTagCompound nbt) { nbt.setInteger("redstone", this.redstone); + nbt.setFloat("torque", this.torque); + nbt.setFloat("power", this.power); + nbt.setFloat("rpm", this.rpm); + nbt.setBoolean("transfer", this.transfer); + nbt.setFloat("gear", this.gearMulti); super.writeNBT(nbt); return nbt; } diff --git a/kfc/src/main/java/nmd/primal/forgecraft/util/BreakerHandler.java b/kfc/src/main/java/nmd/primal/forgecraft/util/BreakerHandler.java index 9e365ed4..83f87e38 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/util/BreakerHandler.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/util/BreakerHandler.java @@ -48,7 +48,7 @@ public interface BreakerHandler { if (RecipeHelper.isOreName(smashStack, "cobblestone")) { if (tile.getCharge() > getThreshold(world, pos.offset(face))) { - world.setBlockToAir(pos.offset(face)); + world.destroyBlock(pos.offset(face), false); PlayerHelper.spawnItemOnGround(world, pos.offset(face), new ItemStack(Blocks.GRAVEL, randomChanceReturn(9, 1, 1))); tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage() + 1); return true; @@ -56,7 +56,7 @@ public interface BreakerHandler { } if (RecipeHelper.isOreName(smashStack, "gravel")) { if (tile.getCharge() > getThreshold(world, pos.offset(face))) { - world.setBlockToAir(pos.offset(face)); + world.destroyBlock(pos.offset(face), false); PlayerHelper.spawnItemOnGround(world, pos.offset(face), new ItemStack(Blocks.SAND, randomChanceReturn(9, 1, 1))); tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage() + 1); return true; @@ -66,7 +66,7 @@ public interface BreakerHandler { for (GallagherRecipe recipe : GallagherRecipe.RECIPES) { if (recipe.match(smashState)) { if (tile.getCharge() > getThreshold(world, pos.offset(face))) { - world.setBlockToAir(pos.offset(face)); + world.destroyBlock(pos.offset(face), false); PlayerHelper.spawnItemOnGround(world, pos.offset(face), recipe.getOutputStack()); tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage() + 1); return true; @@ -76,7 +76,7 @@ public interface BreakerHandler { if (RecipeHelper.isOreName(smashStack, "oreIron")) { if (tile.getCharge() > getThreshold(world, pos.offset(face))) { - world.setBlockToAir(pos.offset(face)); + world.destroyBlock(pos.offset(face), false); PlayerHelper.spawnItemOnGround(world, pos.offset(face), new ItemStack(PrimalAPI.Items.IRON_DUST, randomChanceReturn(9, 1, 2))); tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage() + 1); return true; @@ -84,7 +84,7 @@ public interface BreakerHandler { } if (RecipeHelper.isOreName(smashStack, "oreCopper")) { if (tile.getCharge() > getThreshold(world, pos.offset(face))) { - world.setBlockToAir(pos.offset(face)); + world.destroyBlock(pos.offset(face), false); PlayerHelper.spawnItemOnGround(world, pos.offset(face), new ItemStack(PrimalAPI.Items.COPPER_DUST, randomChanceReturn(9, 1, 2))); tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage() + 1); return true; @@ -92,7 +92,7 @@ public interface BreakerHandler { } if (RecipeHelper.isOreName(smashStack, "oreTin")) { if (tile.getCharge() > getThreshold(world, pos.offset(face))) { - world.setBlockToAir(pos.offset(face)); + world.destroyBlock(pos.offset(face), false); PlayerHelper.spawnItemOnGround(world, pos.offset(face), new ItemStack(PrimalAPI.Items.TIN_DUST, randomChanceReturn(9, 1, 2))); tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage() + 1); return true; @@ -100,7 +100,7 @@ public interface BreakerHandler { } if (RecipeHelper.isOreName(smashStack, "oreZinc")) { if (tile.getCharge() > getThreshold(world, pos.offset(face))) { - world.setBlockToAir(pos.offset(face)); + world.destroyBlock(pos.offset(face), false); PlayerHelper.spawnItemOnGround(world, pos.offset(face), new ItemStack(PrimalAPI.Items.ZINC_DUST, randomChanceReturn(9, 1, 2))); tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage() + 1); return true; @@ -108,7 +108,7 @@ public interface BreakerHandler { } if (RecipeHelper.isOreName(smashStack, "oreGold")) { if (tile.getCharge() > getThreshold(world, pos.offset(face))) { - world.setBlockToAir(pos.offset(face)); + world.destroyBlock(pos.offset(face), false); PlayerHelper.spawnItemOnGround(world, pos.offset(face), new ItemStack(PrimalAPI.Items.GOLD_DUST, randomChanceReturn(9, 1, 2))); tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage() + 1); return true; @@ -116,7 +116,7 @@ public interface BreakerHandler { } if (RecipeHelper.isOreName(smashStack, "cobblestone")) { if (tile.getCharge() > getThreshold(world, pos.offset(face))) { - world.setBlockToAir(pos.offset(face)); + world.destroyBlock(pos.offset(face), false); PlayerHelper.spawnItemOnGround(world, pos.offset(face), new ItemStack(Blocks.GRAVEL, randomChanceReturn(9, 1, 1))); tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage() + 1); return true; @@ -124,7 +124,7 @@ public interface BreakerHandler { } if (RecipeHelper.isOreName(smashStack, "gravel")) { if (tile.getCharge() > getThreshold(world, pos.offset(face))) { - world.setBlockToAir(pos.offset(face)); + world.destroyBlock(pos.offset(face), false); PlayerHelper.spawnItemOnGround(world, pos.offset(face), new ItemStack(Blocks.SAND, randomChanceReturn(9, 1, 1))); tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage() + 1); return true; diff --git a/kfc/src/main/resources/assets/forgecraft/blockstates/ironmachinesaw.json b/kfc/src/main/resources/assets/forgecraft/blockstates/ironmachinesaw.json new file mode 100644 index 00000000..959fee3c --- /dev/null +++ b/kfc/src/main/resources/assets/forgecraft/blockstates/ironmachinesaw.json @@ -0,0 +1,20 @@ +{ + "forge_marker":1, + "defaults": { + "textures": { + "particle": "forgecraft:items/iron/0", + "texture": "forgecraft:items/iron/0" + }, + "parent": "forgecraft:block/saw_block_model" + }, + "variants": { + "active=false,facing=north": { "model": "forgecraft:saw_block_model" }, + "active=false,facing=east": { "model": "forgecraft:saw_block_model", "y": 90 }, + "active=false,facing=south": { "model": "forgecraft:saw_block_model", "y": 180 }, + "active=false,facing=west": { "model": "forgecraft:saw_block_model", "y": 270 }, + "active=true,facing=north": { "model": "forgecraft:saw_block_model" }, + "active=true,facing=east": { "model": "forgecraft:saw_block_model", "y": 90 }, + "active=true,facing=south": { "model": "forgecraft:saw_block_model", "y": 180 }, + "active=true,facing=west": { "model": "forgecraft:saw_block_model", "y": 270 } + } +} \ No newline at end of file diff --git a/kfc/src/main/resources/assets/forgecraft/models/block/castingform2.json b/kfc/src/main/resources/assets/forgecraft/models/block/castingform2.json deleted file mode 100644 index e0c0356a..00000000 --- a/kfc/src/main/resources/assets/forgecraft/models/block/castingform2.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "blocks/e_particle", - "texture": "items/test" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 0, 2, 0 ], - "to": [ 3, 5, 16 ], - "faces": { - "up": { "uv": [ 0, 0, 3, 16 ], "texture": "#texture" }, - "north": { "uv": [ 13, 11, 16, 14 ], "texture": "#texture" }, - "south": { "uv": [ 0, 11, 3, 14 ], "texture": "#texture" }, - "west": { "uv": [ 0, 11, 16, 14 ], "texture": "#texture" }, - "east": { "uv": [ 0, 11, 16, 14 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 13, 2, 0 ], - "to": [ 16, 5, 16 ], - "faces": { - "up": { "uv": [ 13, 0, 16, 16 ], "texture": "#texture" }, - "north": { "uv": [ 0, 11, 3, 14 ], "texture": "#texture" }, - "south": { "uv": [ 13, 11, 16, 14 ], "texture": "#texture" }, - "west": { "uv": [ 0, 11, 16, 14 ], "texture": "#texture" }, - "east": { "uv": [ 0, 11, 16, 14 ], "texture": "#texture" } - } - }, - { - "__comment": "Box5", - "from": [ 3, 2, 0 ], - "to": [ 13, 5, 3 ], - "faces": { - "up": { "uv": [ 3, 0, 13, 3 ], "texture": "#texture" }, - "north": { "uv": [ 3, 11, 13, 14 ], "texture": "#texture" }, - "south": { "uv": [ 3, 11, 13, 14 ], "texture": "#texture" } - } - }, - { - "__comment": "Box5", - "from": [ 3, 2, 13 ], - "to": [ 13, 5, 16 ], - "faces": { - "up": { "uv": [ 3, 13, 13, 16 ], "texture": "#texture" }, - "north": { "uv": [ 3, 11, 13, 14 ], "texture": "#texture" }, - "south": { "uv": [ 3, 11, 13, 14 ], "texture": "#texture" } - } - }, - { - "__comment": "Box8", - "from": [ 0, 0, 0 ], - "to": [ 16, 2, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "north": { "uv": [ 0, 14, 16, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 14, 16, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 14, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 14, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box6", - "from": [ 7.5, 5, 0 ], - "to": [ 8.5, 6, 1 ], - "faces": { - "up": { "uv": [ 7.5, 0, 8.5, 1 ], "texture": "#texture" }, - "north": { "uv": [ 7.5, 10, 8.5, 11 ], "texture": "#texture" }, - "south": { "uv": [ 7.5, 10, 8.5, 11 ], "texture": "#texture" }, - "west": { "uv": [ 0, 10, 1, 11 ], "texture": "#texture" }, - "east": { "uv": [ 15, 10, 16, 11 ], "texture": "#texture" } - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [ 75, 45, 0 ], - "translation": [ 0, 2.5, 1.5 ], - "scale": [ 0.375, 0.375, 0.375 ] - }, - "thirdperson_lefthand": { - "rotation": [ 75, 45, 0 ], - "translation": [ 0, 2.5, 1.5 ], - "scale": [ 0.375, 0.375, 0.375 ] - }, - "firstperson_righthand": { - "translation": [ 0, 2, 0 ], - "scale": [ 0.4, 0.4, 0.4 ] - }, - "firstperson_lefthand": { - "translation": [ 0, 2, 0 ], - "scale": [ 0.4, 0.4, 0.4 ] - }, - "gui": { - "rotation": [ 30, 225, 0 ], - "scale": [ 0.625, 0.625, 0.625 ] - }, - "ground": { - "translation": [ 0, 3, 0 ], - "scale": [ 0.25, 0.25, 0.25 ] - }, - "fixed": { - "rotation": [ 90, 0, 180 ], - "translation": [ 0, 0, -3 ], - "scale": [ 0.5, 0.5, 0.5 ] - } - } -} \ No newline at end of file diff --git a/kfc/src/main/resources/assets/forgecraft/models/block/saw_block_model.json b/kfc/src/main/resources/assets/forgecraft/models/block/saw_block_model.json index a159ff3a..518751c5 100644 --- a/kfc/src/main/resources/assets/forgecraft/models/block/saw_block_model.json +++ b/kfc/src/main/resources/assets/forgecraft/models/block/saw_block_model.json @@ -4,123 +4,216 @@ "particle": "blocks/e_particle", "texture": "blocks/e_texture" }, - "elements": [ - { - "__comment": "Box1", - "from": [ 0, 0, 0 ], - "to": [ 16, 6, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "north": { "uv": [ 0, 10, 16, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 10, 16, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 10, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 10, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box4", - "from": [ 0, 7.5, 0 ], - "to": [ 2, 8.5, 7.5 ], - "faces": { - "north": { "uv": [ 14, 7.5, 16, 8.5 ], "texture": "#texture" }, - "south": { "uv": [ 0, 7.5, 2, 8.5 ], "texture": "#texture" }, - "west": { "uv": [ 0, 7.5, 7.5, 8.5 ], "texture": "#texture" } - } - }, - { - "__comment": "Box4", - "from": [ 0, 7.5, 8.5 ], - "to": [ 2, 8.5, 16 ], - "faces": { - "north": { "uv": [ 14, 7.5, 16, 8.5 ], "texture": "#texture" }, - "south": { "uv": [ 0, 7.5, 2, 8.5 ], "texture": "#texture" }, - "west": { "uv": [ 8.5, 7.5, 16, 8.5 ], "texture": "#texture" } - } - }, - { - "__comment": "Box8", - "from": [ 0, 8.5, 0 ], - "to": [ 2, 14, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 2, 16 ], "texture": "#texture" }, - "north": { "uv": [ 14, 2, 16, 7.5 ], "texture": "#texture" }, - "south": { "uv": [ 0, 2, 2, 7.5 ], "texture": "#texture" }, - "west": { "uv": [ 0, 2, 16, 7.5 ], "texture": "#texture" } - } - }, - { - "__comment": "Box17", - "from": [ 2, 6, 0 ], - "to": [ 6, 14, 16 ], - "faces": { - "north": { "uv": [ 10, 2, 14, 10 ], "texture": "#texture" }, - "south": { "uv": [ 2, 2, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 0, 2, 16, 10 ], "texture": "#texture" }, - "east": { "uv": [ 0, 2, 16, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box18", - "from": [ 0, 6, 0 ], - "to": [ 2, 7.5, 16 ], - "faces": { - "up": { "uv": [ 0, 0, 2, 16 ], "texture": "#texture" }, - "north": { "uv": [ 14, 8.5, 16, 10 ], "texture": "#texture" }, - "south": { "uv": [ 0, 8.5, 2, 10 ], "texture": "#texture" }, - "west": { "uv": [ 0, 8.5, 16, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box20", - "from": [ 0, 14, 0 ], - "to": [ 6, 16, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 6, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 6, 16 ], "texture": "#texture" }, - "north": { "uv": [ 10, 0, 16, 2 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 6, 2 ], "texture": "#texture" }, - "west": { "uv": [ 0, 0, 16, 2 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 2 ], "texture": "#texture" } - } - }, - { - "__comment": "Box20", - "from": [ 10, 6, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "up": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" }, - "north": { "uv": [ 0, 0, 6, 10 ], "texture": "#texture" }, - "south": { "uv": [ 10, 0, 16, 10 ], "texture": "#texture" }, - "west": { "uv": [ 0, 0, 16, 10 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box22", - "from": [ 6, 14.5, 0 ], - "to": [ 7.5, 16, 16 ], - "faces": { - "down": { "uv": [ 6, 0, 7.5, 16 ], "texture": "#texture" }, - "up": { "uv": [ 6, 0, 7.5, 16 ], "texture": "#texture" }, - "north": { "uv": [ 8.5, 0, 10, 1.5 ], "texture": "#texture" }, - "south": { "uv": [ 6, 0, 7.5, 1.5 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 1.5 ], "texture": "#texture" } - } - }, - { - "__comment": "Box22", - "from": [ 8.5, 14.5, 0 ], - "to": [ 10, 16, 16 ], - "faces": { - "down": { "uv": [ 8.5, 0, 10, 16 ], "texture": "#texture" }, - "up": { "uv": [ 8.5, 0, 10, 16 ], "texture": "#texture" }, - "north": { "uv": [ 6, 0, 7.5, 1.5 ], "texture": "#texture" }, - "south": { "uv": [ 8.5, 0, 10, 1.5 ], "texture": "#texture" }, - "west": { "uv": [ 0, 0, 16, 1.5 ], "texture": "#texture" } - } - } - ], + "elements": [ + { + "__comment": "Box1", + "from": [ 0, 0, 0 ], + "to": [ 16, 4, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "north": { "uv": [ 0, 12, 16, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 12, 16, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 12, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 12, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box4", + "from": [ 0, 7.5, 0 ], + "to": [ 2, 8.5, 7.5 ], + "faces": { + "north": { "uv": [ 14, 7.5, 16, 8.5 ], "texture": "#texture" }, + "south": { "uv": [ 0, 7.5, 2, 8.5 ], "texture": "#texture" }, + "west": { "uv": [ 0, 7.5, 7.5, 8.5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box4", + "from": [ 0, 7.5, 8.5 ], + "to": [ 2, 8.5, 16 ], + "faces": { + "north": { "uv": [ 14, 7.5, 16, 8.5 ], "texture": "#texture" }, + "south": { "uv": [ 0, 7.5, 2, 8.5 ], "texture": "#texture" }, + "west": { "uv": [ 8.5, 7.5, 16, 8.5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box8", + "from": [ 0, 8.5, 0 ], + "to": [ 6, 13, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 6, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 6, 16 ], "texture": "#texture" }, + "north": { "uv": [ 10, 3, 16, 7.5 ], "texture": "#texture" }, + "south": { "uv": [ 0, 3, 6, 7.5 ], "texture": "#texture" }, + "west": { "uv": [ 0, 3, 16, 7.5 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3, 16, 7.5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box17", + "from": [ 2, 4, 0 ], + "to": [ 6, 8.5, 16 ], + "faces": { + "north": { "uv": [ 10, 7.5, 14, 12 ], "texture": "#texture" }, + "south": { "uv": [ 2, 7.5, 6, 12 ], "texture": "#texture" }, + "west": { "uv": [ 0, 7.5, 16, 12 ], "texture": "#texture" }, + "east": { "uv": [ 0, 7.5, 16, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "Box18", + "from": [ 0, 4, 0 ], + "to": [ 2, 7.5, 16 ], + "faces": { + "up": { "uv": [ 0, 0, 2, 16 ], "texture": "#texture" }, + "north": { "uv": [ 14, 8.5, 16, 12 ], "texture": "#texture" }, + "south": { "uv": [ 0, 8.5, 2, 12 ], "texture": "#texture" }, + "west": { "uv": [ 0, 8.5, 16, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "Box20", + "from": [ 0, 14, 0 ], + "to": [ 6, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 6, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 6, 16 ], "texture": "#texture" }, + "north": { "uv": [ 10, 0, 16, 2 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 6, 2 ], "texture": "#texture" }, + "west": { "uv": [ 0, 0, 16, 2 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 2 ], "texture": "#texture" } + } + }, + { + "__comment": "Box20", + "from": [ 10, 4, 0 ], + "to": [ 16, 13, 16 ], + "faces": { + "up": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" }, + "north": { "uv": [ 0, 3, 6, 12 ], "texture": "#texture" }, + "south": { "uv": [ 10, 3, 16, 12 ], "texture": "#texture" }, + "west": { "uv": [ 0, 3, 16, 12 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3, 16, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "Box22", + "from": [ 6, 14.5, 0 ], + "to": [ 7.5, 16, 16 ], + "faces": { + "down": { "uv": [ 6, 0, 7.5, 16 ], "texture": "#texture" }, + "up": { "uv": [ 6, 0, 7.5, 16 ], "texture": "#texture" }, + "north": { "uv": [ 8.5, 0, 10, 1.5 ], "texture": "#texture" }, + "south": { "uv": [ 6, 0, 7.5, 1.5 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 1.5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box22", + "from": [ 8.5, 14.5, 0 ], + "to": [ 10, 16, 16 ], + "faces": { + "down": { "uv": [ 8.5, 0, 10, 16 ], "texture": "#texture" }, + "up": { "uv": [ 8.5, 0, 10, 16 ], "texture": "#texture" }, + "north": { "uv": [ 6, 0, 7.5, 1.5 ], "texture": "#texture" }, + "south": { "uv": [ 8.5, 0, 10, 1.5 ], "texture": "#texture" }, + "west": { "uv": [ 0, 0, 16, 1.5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box11", + "from": [ 5, 13, 0 ], + "to": [ 6, 14, 7.5 ], + "faces": { + "down": { "uv": [ 5, 8.5, 6, 16 ], "texture": "#texture" }, + "up": { "uv": [ 5, 0, 6, 7.5 ], "texture": "#texture" }, + "north": { "uv": [ 10, 2, 11, 3 ], "texture": "#texture" }, + "south": { "uv": [ 5, 2, 6, 3 ], "texture": "#texture" }, + "west": { "uv": [ 0, 2, 7.5, 3 ], "texture": "#texture" }, + "east": { "uv": [ 8.5, 2, 16, 3 ], "texture": "#texture" } + } + }, + { + "__comment": "Box11", + "from": [ 5, 13, 8.5 ], + "to": [ 6, 14, 16 ], + "faces": { + "down": { "uv": [ 5, 0, 6, 7.5 ], "texture": "#texture" }, + "up": { "uv": [ 5, 8.5, 6, 16 ], "texture": "#texture" }, + "north": { "uv": [ 10, 2, 11, 3 ], "texture": "#texture" }, + "south": { "uv": [ 5, 2, 6, 3 ], "texture": "#texture" }, + "west": { "uv": [ 8.5, 2, 16, 3 ], "texture": "#texture" }, + "east": { "uv": [ 0, 2, 7.5, 3 ], "texture": "#texture" } + } + }, + { + "__comment": "Box13", + "from": [ 0, 13, 0 ], + "to": [ 5, 14, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 16 ], "texture": "#texture" }, + "north": { "uv": [ 11, 2, 16, 3 ], "texture": "#texture" }, + "south": { "uv": [ 0, 2, 5, 3 ], "texture": "#texture" }, + "west": { "uv": [ 0, 2, 16, 3 ], "texture": "#texture" }, + "east": { "uv": [ 0, 2, 16, 3 ], "texture": "#texture" } + } + }, + { + "__comment": "Box13", + "from": [ 11, 13, 0 ], + "to": [ 16, 14, 16 ], + "faces": { + "down": { "uv": [ 11, 0, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 11, 0, 16, 16 ], "texture": "#texture" }, + "north": { "uv": [ 0, 2, 5, 3 ], "texture": "#texture" }, + "south": { "uv": [ 11, 2, 16, 3 ], "texture": "#texture" }, + "west": { "uv": [ 0, 2, 16, 3 ], "texture": "#texture" }, + "east": { "uv": [ 0, 2, 16, 3 ], "texture": "#texture" } + } + }, + { + "__comment": "Box11", + "from": [ 10, 13, 0 ], + "to": [ 11, 14, 7.5 ], + "faces": { + "down": { "uv": [ 10, 8.5, 11, 16 ], "texture": "#texture" }, + "up": { "uv": [ 10, 0, 11, 7.5 ], "texture": "#texture" }, + "north": { "uv": [ 5, 2, 6, 3 ], "texture": "#texture" }, + "south": { "uv": [ 10, 2, 11, 3 ], "texture": "#texture" }, + "west": { "uv": [ 0, 2, 7.5, 3 ], "texture": "#texture" }, + "east": { "uv": [ 8.5, 2, 16, 3 ], "texture": "#texture" } + } + }, + { + "__comment": "Box11", + "from": [ 10, 13, 8.5 ], + "to": [ 11, 14, 16 ], + "faces": { + "down": { "uv": [ 10, 0, 11, 7.5 ], "texture": "#texture" }, + "up": { "uv": [ 10, 8.5, 11, 16 ], "texture": "#texture" }, + "north": { "uv": [ 5, 2, 6, 3 ], "texture": "#texture" }, + "south": { "uv": [ 10, 2, 11, 3 ], "texture": "#texture" }, + "west": { "uv": [ 8.5, 2, 16, 3 ], "texture": "#texture" }, + "east": { "uv": [ 0, 2, 7.5, 3 ], "texture": "#texture" } + } + }, + { + "__comment": "Box20", + "from": [ 10, 14, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" }, + "north": { "uv": [ 0, 0, 6, 2 ], "texture": "#texture" }, + "south": { "uv": [ 10, 0, 16, 2 ], "texture": "#texture" }, + "west": { "uv": [ 0, 0, 16, 2 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 2 ], "texture": "#texture" } + } + } + ], "display": { "thirdperson_righthand": { "rotation": [ 75, 45, 0 ], @@ -149,7 +242,7 @@ "scale": [ 0.25, 0.25, 0.25 ] }, "fixed": { - "scale": [ 0.5, 0.5, 0.5 ] + "scale": [ 1, 1, 1 ] } } } \ No newline at end of file diff --git a/kfc/src/main/resources/assets/forgecraft/models/item/saw_model.json b/kfc/src/main/resources/assets/forgecraft/models/item/saw_model.json index df1f1f38..c9897a2e 100644 --- a/kfc/src/main/resources/assets/forgecraft/models/item/saw_model.json +++ b/kfc/src/main/resources/assets/forgecraft/models/item/saw_model.json @@ -8,535 +8,534 @@ "elements": [ { "__comment": "Box17", - "from": [ 8.5, 7.5, 7.5 ], - "to": [ 12, 8.5, 8.5 ], + "from": [ 5, 7.5, 7.5 ], + "to": [ 11, 8.5, 8.5 ], "faces": { - "down": { "uv": [ 8.5, 7.5, 12, 8.5 ], "texture": "#texture" }, - "up": { "uv": [ 8.5, 7.5, 12, 8.5 ], "texture": "#texture" }, - "north": { "uv": [ 4, 7.5, 7.5, 8.5 ], "texture": "#texture" }, - "south": { "uv": [ 8.5, 7.5, 12, 8.5 ], "texture": "#texture" }, + "down": { "uv": [ 5, 7.5, 11, 8.5 ], "texture": "#texture" }, + "up": { "uv": [ 5, 7.5, 11, 8.5 ], "texture": "#texture" }, + "north": { "uv": [ 5, 7.5, 11, 8.5 ], "texture": "#texture" }, + "south": { "uv": [ 5, 7.5, 11, 8.5 ], "texture": "#texture" }, "west": { "uv": [ 7.5, 7.5, 8.5, 8.5 ], "texture": "#texture" }, "east": { "uv": [ 7.5, 7.5, 8.5, 8.5 ], "texture": "#texture" } } }, { "__comment": "Box7", - "from": [ 12, 11.5, 6 ], - "to": [ 13, 12.5, 10 ], + "from": [ 7.5, 13.25, 5 ], + "to": [ 8.5, 14.75, 11 ], "faces": { - "down": { "uv": [ 12, 6, 13, 10 ], "texture": "#texture" }, - "up": { "uv": [ 12, 6, 13, 10 ], "texture": "#texture" }, - "north": { "uv": [ 3, 3.5, 4, 4.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 3.5, 13, 4.5 ], "texture": "#texture" }, - "west": { "uv": [ 6, 3.5, 10, 4.5 ], "texture": "#texture" }, - "east": { "uv": [ 6, 3.5, 10, 4.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 1.25, 8.5, 2.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 1.25, 8.5, 2.75 ], "texture": "#texture" }, + "west": { "uv": [ 5, 1.25, 11, 2.75 ], "texture": "#texture" }, + "east": { "uv": [ 5, 1.25, 11, 2.75 ], "texture": "#texture" } } }, { "__comment": "Box7", - "from": [ 12, 3.5, 6 ], - "to": [ 13, 4.5, 10 ], + "from": [ 7.5, 1.25, 5 ], + "to": [ 8.5, 2.75, 11 ], "faces": { - "down": { "uv": [ 12, 6, 13, 10 ], "texture": "#texture" }, - "up": { "uv": [ 12, 6, 13, 10 ], "texture": "#texture" }, - "north": { "uv": [ 3, 11.5, 4, 12.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 11.5, 13, 12.5 ], "texture": "#texture" }, - "west": { "uv": [ 6, 11.5, 10, 12.5 ], "texture": "#texture" }, - "east": { "uv": [ 6, 11.5, 10, 12.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 13.25, 8.5, 14.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 13.25, 8.5, 14.75 ], "texture": "#texture" }, + "west": { "uv": [ 5, 13.25, 11, 14.75 ], "texture": "#texture" }, + "east": { "uv": [ 5, 13.25, 11, 14.75 ], "texture": "#texture" } } }, { "__comment": "Box16", - "from": [ 12, 6, 3.5 ], - "to": [ 13, 10, 4.5 ], + "from": [ 7.5, 5, 1.25 ], + "to": [ 8.5, 11, 2.75 ], "faces": { - "down": { "uv": [ 12, 11.5, 13, 12.5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 3.5, 13, 4.5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 6, 4, 10 ], "texture": "#texture" }, - "south": { "uv": [ 12, 6, 13, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3.5, 6, 4.5, 10 ], "texture": "#texture" }, - "east": { "uv": [ 11.5, 6, 12.5, 10 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 13.25, 8.5, 14.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 1.25, 8.5, 2.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "west": { "uv": [ 1.25, 5, 2.75, 11 ], "texture": "#texture" }, + "east": { "uv": [ 13.25, 5, 14.75, 11 ], "texture": "#texture" } } }, { "__comment": "Box16", - "from": [ 12, 6, 11.5 ], - "to": [ 13, 10, 12.5 ], + "from": [ 7.5, 5, 13.25 ], + "to": [ 8.5, 11, 14.75 ], "faces": { - "down": { "uv": [ 12, 3.5, 13, 4.5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 11.5, 13, 12.5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 6, 4, 10 ], "texture": "#texture" }, - "south": { "uv": [ 12, 6, 13, 10 ], "texture": "#texture" }, - "west": { "uv": [ 11.5, 6, 12.5, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3.5, 6, 4.5, 10 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 1.25, 8.5, 2.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 13.25, 8.5, 14.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "west": { "uv": [ 13.25, 5, 14.75, 11 ], "texture": "#texture" }, + "east": { "uv": [ 1.25, 5, 2.75, 11 ], "texture": "#texture" } } }, { "__comment": "Box24", - "from": [ 12, 5.5, 4.5 ], - "to": [ 13, 10.5, 5.5 ], + "from": [ 7.5, 4.25, 2.75 ], + "to": [ 8.5, 11.75, 4.25 ], "faces": { - "down": { "uv": [ 12, 10.5, 13, 11.5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 4.5, 13, 5.5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 5.5, 4, 10.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 5.5, 13, 10.5 ], "texture": "#texture" }, - "west": { "uv": [ 4.5, 5.5, 5.5, 10.5 ], "texture": "#texture" }, - "east": { "uv": [ 10.5, 5.5, 11.5, 10.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 11.75, 8.5, 13.25 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 2.75, 8.5, 4.25 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 4.25, 8.5, 11.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 4.25, 8.5, 11.75 ], "texture": "#texture" }, + "west": { "uv": [ 2.75, 4.25, 4.25, 11.75 ], "texture": "#texture" }, + "east": { "uv": [ 11.75, 4.25, 13.25, 11.75 ], "texture": "#texture" } } }, { "__comment": "Box24", - "from": [ 12, 5.5, 10.5 ], - "to": [ 13, 10.5, 11.5 ], + "from": [ 7.5, 4.25, 11.75 ], + "to": [ 8.5, 11.75, 13.25 ], "faces": { - "down": { "uv": [ 12, 4.5, 13, 5.5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 10.5, 13, 11.5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 5.5, 4, 10.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 5.5, 13, 10.5 ], "texture": "#texture" }, - "west": { "uv": [ 10.5, 5.5, 11.5, 10.5 ], "texture": "#texture" }, - "east": { "uv": [ 4.5, 5.5, 5.5, 10.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 2.75, 8.5, 4.25 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 11.75, 8.5, 13.25 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 4.25, 8.5, 11.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 4.25, 8.5, 11.75 ], "texture": "#texture" }, + "west": { "uv": [ 11.75, 4.25, 13.25, 11.75 ], "texture": "#texture" }, + "east": { "uv": [ 2.75, 4.25, 4.25, 11.75 ], "texture": "#texture" } } }, { "__comment": "Box28", - "from": [ 12, 4.5, 5.5 ], - "to": [ 13, 11.5, 10.5 ], + "from": [ 7.5, 2.75, 4.25 ], + "to": [ 8.5, 13.25, 11.75 ], "faces": { - "down": { "uv": [ 12, 5.5, 13, 10.5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 5.5, 13, 10.5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 4.5, 4, 11.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 4.5, 13, 11.5 ], "texture": "#texture" }, - "west": { "uv": [ 5.5, 4.5, 10.5, 11.5 ], "texture": "#texture" }, - "east": { "uv": [ 5.5, 4.5, 10.5, 11.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 4.25, 8.5, 11.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 4.25, 8.5, 11.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 2.75, 8.5, 13.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 2.75, 8.5, 13.25 ], "texture": "#texture" }, + "west": { "uv": [ 4.25, 2.75, 11.75, 13.25 ], "texture": "#texture" }, + "east": { "uv": [ 4.25, 2.75, 11.75, 13.25 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 10, 4 ], - "to": [ 13, 10.5, 4.5 ], + "from": [ 7.5, 11, 2 ], + "to": [ 8.5, 11.75, 2.75 ], "faces": { - "down": { "uv": [ 12, 11.5, 13, 12 ], "texture": "#texture" }, - "up": { "uv": [ 12, 4, 13, 4.5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 5.5, 4, 6 ], "texture": "#texture" }, - "south": { "uv": [ 12, 5.5, 13, 6 ], "texture": "#texture" }, - "west": { "uv": [ 4, 5.5, 4.5, 6 ], "texture": "#texture" }, - "east": { "uv": [ 11.5, 5.5, 12, 6 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "west": { "uv": [ 2, 4.25, 2.75, 5 ], "texture": "#texture" }, + "east": { "uv": [ 13.25, 4.25, 14, 5 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 10.5, 4.5 ], - "to": [ 13, 11, 5 ], + "from": [ 7.5, 11.75, 2.75 ], + "to": [ 8.5, 12.5, 3.5 ], "faces": { - "down": { "uv": [ 12, 11, 13, 11.5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 4.5, 13, 5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 5, 4, 5.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 5, 13, 5.5 ], "texture": "#texture" }, - "west": { "uv": [ 4.5, 5, 5, 5.5 ], "texture": "#texture" }, - "east": { "uv": [ 11, 5, 11.5, 5.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 12.5, 8.5, 13.25 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 2.75, 8.5, 3.5 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "west": { "uv": [ 2.75, 3.5, 3.5, 4.25 ], "texture": "#texture" }, + "east": { "uv": [ 12.5, 3.5, 13.25, 4.25 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 10.5, 5 ], - "to": [ 13, 11.5, 5.5 ], + "from": [ 7.5, 11.75, 3.5 ], + "to": [ 8.5, 13.25, 4.25 ], "faces": { - "down": { "uv": [ 12, 10.5, 13, 11 ], "texture": "#texture" }, - "up": { "uv": [ 12, 5, 13, 5.5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 4.5, 4, 5.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 4.5, 13, 5.5 ], "texture": "#texture" }, - "west": { "uv": [ 5, 4.5, 5.5, 5.5 ], "texture": "#texture" }, - "east": { "uv": [ 10.5, 4.5, 11, 5.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 2.75, 8.5, 4.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 2.75, 8.5, 4.25 ], "texture": "#texture" }, + "west": { "uv": [ 3.5, 2.75, 4.25, 4.25 ], "texture": "#texture" }, + "east": { "uv": [ 11.75, 2.75, 12.5, 4.25 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 4.5, 5 ], - "to": [ 13, 5.5, 5.5 ], + "from": [ 7.5, 2.75, 3.5 ], + "to": [ 8.5, 4.25, 4.25 ], "faces": { - "down": { "uv": [ 12, 10.5, 13, 11 ], "texture": "#texture" }, - "up": { "uv": [ 12, 5, 13, 5.5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 10.5, 4, 11.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 10.5, 13, 11.5 ], "texture": "#texture" }, - "west": { "uv": [ 5, 10.5, 5.5, 11.5 ], "texture": "#texture" }, - "east": { "uv": [ 10.5, 10.5, 11, 11.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 11.75, 8.5, 13.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 11.75, 8.5, 13.25 ], "texture": "#texture" }, + "west": { "uv": [ 3.5, 11.75, 4.25, 13.25 ], "texture": "#texture" }, + "east": { "uv": [ 11.75, 11.75, 12.5, 13.25 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 10.5, 10.5 ], - "to": [ 13, 11.5, 11 ], + "from": [ 7.5, 11.75, 11.75 ], + "to": [ 8.5, 13.25, 12.5 ], "faces": { - "down": { "uv": [ 12, 5, 13, 5.5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 10.5, 13, 11 ], "texture": "#texture" }, - "north": { "uv": [ 3, 4.5, 4, 5.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 4.5, 13, 5.5 ], "texture": "#texture" }, - "west": { "uv": [ 10.5, 4.5, 11, 5.5 ], "texture": "#texture" }, - "east": { "uv": [ 5, 4.5, 5.5, 5.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 2.75, 8.5, 4.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 2.75, 8.5, 4.25 ], "texture": "#texture" }, + "west": { "uv": [ 11.75, 2.75, 12.5, 4.25 ], "texture": "#texture" }, + "east": { "uv": [ 3.5, 2.75, 4.25, 4.25 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 4.5, 10.5 ], - "to": [ 13, 5.5, 11 ], + "from": [ 7.5, 2.75, 11.75 ], + "to": [ 8.5, 4.25, 12.5 ], "faces": { - "down": { "uv": [ 12, 5, 13, 5.5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 10.5, 13, 11 ], "texture": "#texture" }, - "north": { "uv": [ 3, 10.5, 4, 11.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 10.5, 13, 11.5 ], "texture": "#texture" }, - "west": { "uv": [ 10.5, 10.5, 11, 11.5 ], "texture": "#texture" }, - "east": { "uv": [ 5, 10.5, 5.5, 11.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 11.75, 8.5, 13.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 11.75, 8.5, 13.25 ], "texture": "#texture" }, + "west": { "uv": [ 11.75, 11.75, 12.5, 13.25 ], "texture": "#texture" }, + "east": { "uv": [ 3.5, 11.75, 4.25, 13.25 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 11.5, 5.5 ], - "to": [ 13, 12, 6 ], + "from": [ 7.5, 13.25, 4.25 ], + "to": [ 8.5, 14, 5 ], "faces": { - "down": { "uv": [ 12, 10, 13, 10.5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 5.5, 13, 6 ], "texture": "#texture" }, - "north": { "uv": [ 3, 4, 4, 4.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 4, 13, 4.5 ], "texture": "#texture" }, - "west": { "uv": [ 5.5, 4, 6, 4.5 ], "texture": "#texture" }, - "east": { "uv": [ 10, 4, 10.5, 4.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "west": { "uv": [ 4.25, 2, 5, 2.75 ], "texture": "#texture" }, + "east": { "uv": [ 11, 2, 11.75, 2.75 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 5.5, 4 ], - "to": [ 13, 6, 4.5 ], + "from": [ 7.5, 4.25, 2 ], + "to": [ 8.5, 5, 2.75 ], "faces": { - "down": { "uv": [ 12, 11.5, 13, 12 ], "texture": "#texture" }, - "up": { "uv": [ 12, 4, 13, 4.5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 10, 4, 10.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 10, 13, 10.5 ], "texture": "#texture" }, - "west": { "uv": [ 4, 10, 4.5, 10.5 ], "texture": "#texture" }, - "east": { "uv": [ 11.5, 10, 12, 10.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "west": { "uv": [ 2, 11, 2.75, 11.75 ], "texture": "#texture" }, + "east": { "uv": [ 13.25, 11, 14, 11.75 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 5, 4.5 ], - "to": [ 13, 5.5, 5 ], + "from": [ 7.5, 3.5, 2.75 ], + "to": [ 8.5, 4.25, 3.5 ], "faces": { - "down": { "uv": [ 12, 11, 13, 11.5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 4.5, 13, 5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 10.5, 4, 11 ], "texture": "#texture" }, - "south": { "uv": [ 12, 10.5, 13, 11 ], "texture": "#texture" }, - "west": { "uv": [ 4.5, 10.5, 5, 11 ], "texture": "#texture" }, - "east": { "uv": [ 11, 10.5, 11.5, 11 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 12.5, 8.5, 13.25 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 2.75, 8.5, 3.5 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "west": { "uv": [ 2.75, 11.75, 3.5, 12.5 ], "texture": "#texture" }, + "east": { "uv": [ 12.5, 11.75, 13.25, 12.5 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 4, 5.5 ], - "to": [ 13, 4.5, 6 ], + "from": [ 7.5, 2, 4.25 ], + "to": [ 8.5, 2.75, 5 ], "faces": { - "down": { "uv": [ 12, 10, 13, 10.5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 5.5, 13, 6 ], "texture": "#texture" }, - "north": { "uv": [ 3, 11.5, 4, 12 ], "texture": "#texture" }, - "south": { "uv": [ 12, 11.5, 13, 12 ], "texture": "#texture" }, - "west": { "uv": [ 5.5, 11.5, 6, 12 ], "texture": "#texture" }, - "east": { "uv": [ 10, 11.5, 10.5, 12 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "west": { "uv": [ 4.25, 13.25, 5, 14 ], "texture": "#texture" }, + "east": { "uv": [ 11, 13.25, 11.75, 14 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 4, 10 ], - "to": [ 13, 4.5, 10.5 ], + "from": [ 7.5, 2, 11 ], + "to": [ 8.5, 2.75, 11.75 ], "faces": { - "down": { "uv": [ 12, 5.5, 13, 6 ], "texture": "#texture" }, - "up": { "uv": [ 12, 10, 13, 10.5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 11.5, 4, 12 ], "texture": "#texture" }, - "south": { "uv": [ 12, 11.5, 13, 12 ], "texture": "#texture" }, - "west": { "uv": [ 10, 11.5, 10.5, 12 ], "texture": "#texture" }, - "east": { "uv": [ 5.5, 11.5, 6, 12 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "west": { "uv": [ 11, 13.25, 11.75, 14 ], "texture": "#texture" }, + "east": { "uv": [ 4.25, 13.25, 5, 14 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 5, 11 ], - "to": [ 13, 5.5, 11.5 ], + "from": [ 7.5, 3.5, 12.5 ], + "to": [ 8.5, 4.25, 13.25 ], "faces": { - "down": { "uv": [ 12, 4.5, 13, 5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 11, 13, 11.5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 10.5, 4, 11 ], "texture": "#texture" }, - "south": { "uv": [ 12, 10.5, 13, 11 ], "texture": "#texture" }, - "west": { "uv": [ 11, 10.5, 11.5, 11 ], "texture": "#texture" }, - "east": { "uv": [ 4.5, 10.5, 5, 11 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 2.75, 8.5, 3.5 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 12.5, 8.5, 13.25 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "west": { "uv": [ 12.5, 11.75, 13.25, 12.5 ], "texture": "#texture" }, + "east": { "uv": [ 2.75, 11.75, 3.5, 12.5 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 5.5, 11.5 ], - "to": [ 13, 6, 12 ], + "from": [ 7.5, 4.25, 13.25 ], + "to": [ 8.5, 5, 14 ], "faces": { - "down": { "uv": [ 12, 4, 13, 4.5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 11.5, 13, 12 ], "texture": "#texture" }, - "north": { "uv": [ 3, 10, 4, 10.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 10, 13, 10.5 ], "texture": "#texture" }, - "west": { "uv": [ 11.5, 10, 12, 10.5 ], "texture": "#texture" }, - "east": { "uv": [ 4, 10, 4.5, 10.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "west": { "uv": [ 13.25, 11, 14, 11.75 ], "texture": "#texture" }, + "east": { "uv": [ 2, 11, 2.75, 11.75 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 11.5, 10 ], - "to": [ 13, 12, 10.5 ], + "from": [ 7.5, 13.25, 11 ], + "to": [ 8.5, 14, 11.75 ], "faces": { - "down": { "uv": [ 12, 5.5, 13, 6 ], "texture": "#texture" }, - "up": { "uv": [ 12, 10, 13, 10.5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 4, 4, 4.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 4, 13, 4.5 ], "texture": "#texture" }, - "west": { "uv": [ 10, 4, 10.5, 4.5 ], "texture": "#texture" }, - "east": { "uv": [ 5.5, 4, 6, 4.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "west": { "uv": [ 11, 2, 11.75, 2.75 ], "texture": "#texture" }, + "east": { "uv": [ 4.25, 2, 5, 2.75 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 10.5, 11 ], - "to": [ 13, 11, 11.5 ], + "from": [ 7.5, 11.75, 12.5 ], + "to": [ 8.5, 12.5, 13.25 ], "faces": { - "down": { "uv": [ 12, 4.5, 13, 5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 11, 13, 11.5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 5, 4, 5.5 ], "texture": "#texture" }, - "south": { "uv": [ 12, 5, 13, 5.5 ], "texture": "#texture" }, - "west": { "uv": [ 11, 5, 11.5, 5.5 ], "texture": "#texture" }, - "east": { "uv": [ 4.5, 5, 5, 5.5 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 2.75, 8.5, 3.5 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 12.5, 8.5, 13.25 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "west": { "uv": [ 12.5, 3.5, 13.25, 4.25 ], "texture": "#texture" }, + "east": { "uv": [ 2.75, 3.5, 3.5, 4.25 ], "texture": "#texture" } } }, { "__comment": "Box30", - "from": [ 12, 10, 11.5 ], - "to": [ 13, 10.5, 12 ], + "from": [ 7.5, 11, 13.25 ], + "to": [ 8.5, 11.75, 14 ], "faces": { - "down": { "uv": [ 12, 4, 13, 4.5 ], "texture": "#texture" }, - "up": { "uv": [ 12, 11.5, 13, 12 ], "texture": "#texture" }, - "north": { "uv": [ 3, 5.5, 4, 6 ], "texture": "#texture" }, - "south": { "uv": [ 12, 5.5, 13, 6 ], "texture": "#texture" }, - "west": { "uv": [ 11.5, 5.5, 12, 6 ], "texture": "#texture" }, - "east": { "uv": [ 4, 5.5, 4.5, 6 ], "texture": "#texture" } + "down": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "west": { "uv": [ 13.25, 4.25, 14, 5 ], "texture": "#texture" }, + "east": { "uv": [ 2, 4.25, 2.75, 5 ], "texture": "#texture" } } }, { "__comment": "Box46", - "from": [ 12.25, 7, 3.5 ], - "to": [ 12.75, 8, 4 ], - "rotation": { "origin": [ 12.25, 8, 4 ], "axis": "x", "angle": 45 }, + "from": [ 7.75, 6.5, 1.25 ], + "to": [ 8.25, 8, 2 ], + "rotation": { "origin": [ 7.75, 8, 2 ], "axis": "x", "angle": 45 }, "faces": { - "down": { "uv": [ 12.25, 3.5, 12.75, 4 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 12, 12.75, 12.5 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 8.5, 12.25, 7.5 ], "texture": "#light" }, - "south": { "uv": [ 3.75, 8.5, 3.25, 7.5 ], "texture": "#light" }, - "west": { "uv": [ 3.5, 7.5, 4, 8.5 ], "texture": "#light", "rotation": 180 }, - "east": { "uv": [ 12, 7.5, 12.5, 8.5 ], "texture": "#light", "rotation": 180 } + "down": { "uv": [ 7.75, 14.84099, 8.25, 15.59099 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 0.4090099, 8.25, 1.15901 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 7.03033, 8.25, 8.53033 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 7.03033, 8.25, 8.53033 ], "texture": "#light" }, + "west": { "uv": [ 0.4090095, 7.03033, 1.159009, 8.53033 ], "texture": "#light" }, + "east": { "uv": [ 14.84099, 7.03033, 15.59099, 8.53033 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 12, 8 ], - "to": [ 12.75, 13, 8.5 ], - "rotation": { "origin": [ 12.25, 12, 8 ], "axis": "x", "angle": -45 }, + "from": [ 7.75, 14, 8 ], + "to": [ 8.25, 15.5, 8.75 ], + "rotation": { "origin": [ 7.75, 14, 8 ], "axis": "x", "angle": -45 }, "faces": { - "down": { "uv": [ 12.25, 8, 12.75, 8.5 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 7.5, 12.75, 8 ], "texture": "#light" }, - "north": { "uv": [ 3.25, 2.5, 3.75, 3.5 ], "texture": "#light" }, - "south": { "uv": [ 12.25, 2.5, 12.75, 3.5 ], "texture": "#light" }, - "west": { "uv": [ 7.5, 2.5, 8, 3.5 ], "texture": "#light" }, - "east": { "uv": [ 8, 2.5, 8.5, 3.5 ], "texture": "#light" } + "down": { "uv": [ 7.75, 7.25, 8.25, 8 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 8, 8.25, 8.75 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 0.5, 8.25, 2 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 0.5, 8.25, 2 ], "texture": "#light" }, + "west": { "uv": [ 8, 0.5, 8.75, 2 ], "texture": "#light" }, + "east": { "uv": [ 7.25, 0.5, 8, 2 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 3, 7.5 ], - "to": [ 12.75, 4, 8 ], - "rotation": { "origin": [ 12.25, 4, 8 ], "axis": "x", "angle": -45 }, + "from": [ 7.75, 0.5, 7.25 ], + "to": [ 8.25, 2, 8 ], + "rotation": { "origin": [ 7.75, 2, 8 ], "axis": "x", "angle": -45 }, "faces": { - "down": { "uv": [ 12.25, 8.06066, 12.75, 8.56066 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 7.439341, 12.75, 7.939341 ], "texture": "#light" }, - "north": { "uv": [ 3.25, 11.85355, 3.75, 12.85355 ], "texture": "#light" }, - "south": { "uv": [ 12.25, 11.85355, 12.75, 12.85355 ], "texture": "#light" }, - "west": { "uv": [ 7.43934, 11.85355, 7.93934, 12.85355 ], "texture": "#light" }, - "east": { "uv": [ 8.06066, 11.85355, 8.56066, 12.85355 ], "texture": "#light" } + "down": { "uv": [ 7.75, 6.719669, 8.25, 7.469669 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 8.530331, 8.25, 9.280331 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 14.09099, 8.25, 15.59099 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 14.09099, 8.25, 15.59099 ], "texture": "#light" }, + "west": { "uv": [ 8.530331, 14.09099, 9.280331, 15.59099 ], "texture": "#light" }, + "east": { "uv": [ 6.719669, 14.09099, 7.469669, 15.59099 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 8, 12 ], - "to": [ 12.75, 9, 12.5 ], - "rotation": { "origin": [ 12.25, 8, 12 ], "axis": "x", "angle": 45 }, + "from": [ 7.75, 8, 14 ], + "to": [ 8.25, 9.5, 14.75 ], + "rotation": { "origin": [ 7.75, 8, 14 ], "axis": "x", "angle": 45 }, "faces": { - "down": { "uv": [ 12.25, 12.85355, 12.75, 13.35355 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 2.646446, 12.75, 3.146446 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 8.56066, 12.25, 7.560659 ], "texture": "#light" }, - "south": { "uv": [ 3.75, 8.56066, 3.25, 7.560659 ], "texture": "#light" }, - "west": { "uv": [ 12.85355, 7.560659, 13.35355, 8.56066 ], "texture": "#light", "rotation": 180 }, - "east": { "uv": [ 2.646446, 7.560659, 3.146446, 8.56066 ], "texture": "#light", "rotation": 180 } + "down": { "uv": [ 7.75, 1.25, 8.25, 2 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 14, 8.25, 14.75 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 6.5, 8.25, 8 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 6.5, 8.25, 8 ], "texture": "#light" }, + "west": { "uv": [ 14, 6.5, 14.75, 8 ], "texture": "#light" }, + "east": { "uv": [ 1.25, 6.5, 2, 8 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 9.5, 3 ], - "to": [ 12.75, 10, 4 ], - "rotation": { "origin": [ 12.25, 9.5, 4 ], "axis": "x", "angle": -22.5 }, + "from": [ 7.75, 10.25, 0.5 ], + "to": [ 8.25, 11, 2 ], + "rotation": { "origin": [ 7.75, 10.25, 2 ], "axis": "x", "angle": -22.5 }, "faces": { - "down": { "uv": [ 3.75, 6.5, 3.25, 5.5 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 5.5, 12.75, 6.5 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 4, 12.25, 3.5 ], "texture": "#light" }, - "south": { "uv": [ 12.25, 12, 12.75, 12.5 ], "texture": "#light" }, - "west": { "uv": [ 3.5, 5.5, 4, 6.5 ], "texture": "#light", "rotation": 270 }, - "east": { "uv": [ 12, 5.5, 12.5, 6.5 ], "texture": "#light", "rotation": 90 } + "down": { "uv": [ 7.75, 13.88582, 8.25, 15.38582 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 0.6141806, 8.25, 2.114181 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 5.574026, 8.25, 6.324026 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 5.574026, 8.25, 6.324026 ], "texture": "#light" }, + "west": { "uv": [ 0.6141806, 5.574026, 2.114181, 6.324026 ], "texture": "#light" }, + "east": { "uv": [ 13.88582, 5.574026, 15.38582, 6.324026 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 12, 9.5 ], - "to": [ 12.75, 13, 10 ], - "rotation": { "origin": [ 12.25, 12, 9.5 ], "axis": "x", "angle": -22.5 }, + "from": [ 7.75, 14, 10.25 ], + "to": [ 8.25, 15.5, 11 ], + "rotation": { "origin": [ 7.75, 14, 10.25 ], "axis": "x", "angle": -22.5 }, "faces": { - "down": { "uv": [ 3.75, 3.96194, 3.25, 3.46194 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 3.46194, 12.75, 3.96194 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 10.69134, 12.25, 9.69134 ], "texture": "#light" }, - "south": { "uv": [ 12.25, 5.308661, 12.75, 6.308661 ], "texture": "#light" }, - "west": { "uv": [ 9.69134, 3.46194, 10.69134, 3.96194 ], "texture": "#light", "rotation": 270 }, - "east": { "uv": [ 5.30866, 3.46194, 6.30866, 3.96194 ], "texture": "#light", "rotation": 90 } + "down": { "uv": [ 7.75, 5, 8.25, 5.75 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 10.25, 8.25, 11 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 0.5, 8.25, 2 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 0.5, 8.25, 2 ], "texture": "#light" }, + "west": { "uv": [ 10.25, 0.5, 11, 2 ], "texture": "#light" }, + "east": { "uv": [ 5, 0.5, 5.75, 2 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 6, 12 ], - "to": [ 12.75, 6.5, 13 ], - "rotation": { "origin": [ 12.25, 6.5, 12 ], "axis": "x", "angle": -22.5 }, + "from": [ 7.75, 5, 14 ], + "to": [ 8.25, 5.75, 15.5 ], + "rotation": { "origin": [ 7.75, 5.75, 14 ], "axis": "x", "angle": -22.5 }, "faces": { - "down": { "uv": [ 3.75, 10.61522, 3.25, 9.615221 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 9.615221, 12.75, 10.61522 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 12.92074, 12.25, 12.42074 ], "texture": "#light" }, - "south": { "uv": [ 12.25, 3.079256, 12.75, 3.579256 ], "texture": "#light" }, - "west": { "uv": [ 12.42074, 9.615221, 12.92074, 10.61522 ], "texture": "#light", "rotation": 270 }, - "east": { "uv": [ 3.079256, 9.615221, 3.579256, 10.61522 ], "texture": "#light", "rotation": 90 } + "down": { "uv": [ 7.75, 0.2129879, 8.25, 1.712988 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 14.28701, 8.25, 15.78701 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 10.19291, 8.25, 10.94291 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 10.19291, 8.25, 10.94291 ], "texture": "#light" }, + "west": { "uv": [ 14.28701, 10.19291, 15.78701, 10.94291 ], "texture": "#light" }, + "east": { "uv": [ 0.2129879, 10.19291, 1.712988, 10.94291 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 11, 4 ], - "to": [ 12.75, 11.5, 5 ], + "from": [ 7.75, 12.5, 2 ], + "to": [ 8.25, 13.25, 3.5 ], "faces": { - "down": { "uv": [ 3.75, 5, 3.25, 4 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 4, 12.75, 5 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 5, 12.25, 4.5 ], "texture": "#light" }, - "south": { "uv": [ 12.25, 11, 12.75, 11.5 ], "texture": "#light" }, - "west": { "uv": [ 4.5, 4, 5, 5 ], "texture": "#light", "rotation": 270 }, - "east": { "uv": [ 11, 4, 11.5, 5 ], "texture": "#light", "rotation": 90 } + "down": { "uv": [ 7.75, 12.5, 8.25, 14 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 2, 8.25, 3.5 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 2.75, 8.25, 3.5 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 2.75, 8.25, 3.5 ], "texture": "#light" }, + "west": { "uv": [ 2, 2.75, 3.5, 3.5 ], "texture": "#light" }, + "east": { "uv": [ 12.5, 2.75, 14, 3.5 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 11, 11 ], - "to": [ 12.75, 12, 11.5 ], + "from": [ 7.75, 12.5, 12.5 ], + "to": [ 8.25, 14, 13.25 ], "faces": { - "down": { "uv": [ 3.75, 5, 3.25, 4.5 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 4.5, 12.75, 5 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 12, 12.25, 11 ], "texture": "#light" }, - "south": { "uv": [ 12.25, 4.000001, 12.75, 5.000001 ], "texture": "#light" }, - "west": { "uv": [ 11, 4.5, 12, 5 ], "texture": "#light", "rotation": 270 }, - "east": { "uv": [ 4.000001, 4.5, 5.000001, 5 ], "texture": "#light", "rotation": 90 } + "down": { "uv": [ 7.75, 2.75, 8.25, 3.5 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 12.5, 8.25, 13.25 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 2, 8.25, 3.5 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 2, 8.25, 3.5 ], "texture": "#light" }, + "west": { "uv": [ 12.5, 2, 13.25, 3.5 ], "texture": "#light" }, + "east": { "uv": [ 2.75, 2, 3.5, 3.5 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 4.5, 11 ], - "to": [ 12.75, 5, 12 ], - "rotation": { "origin": [ 12.25, 5, 11 ], "axis": "x", "angle": 0 }, + "from": [ 7.75, 2.75, 12.5 ], + "to": [ 8.25, 3.5, 14 ], "faces": { - "down": { "uv": [ 12.25, 11, 12.75, 12 ], "texture": "#light" }, - "up": { "uv": [ 3.75, 12, 3.25, 11 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 5, 12.25, 4.5 ], "texture": "#light" }, - "south": { "uv": [ 12.25, 11, 12.75, 11.5 ], "texture": "#light" }, - "west": { "uv": [ 11, 11, 11.5, 12 ], "texture": "#light", "rotation": 90 }, - "east": { "uv": [ 4.5, 11, 5, 12 ], "texture": "#light", "rotation": 270 } + "down": { "uv": [ 7.75, 2, 8.25, 3.5 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 12.5, 8.25, 14 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 12.5, 8.25, 13.25 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 12.5, 8.25, 13.25 ], "texture": "#light" }, + "west": { "uv": [ 12.5, 12.5, 14, 13.25 ], "texture": "#light" }, + "east": { "uv": [ 2, 12.5, 3.5, 13.25 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 4, 4.5 ], - "to": [ 12.75, 5, 5 ], + "from": [ 7.75, 2, 2.75 ], + "to": [ 8.25, 3.5, 3.5 ], "faces": { - "down": { "uv": [ 12.25, 11, 12.75, 11.5 ], "texture": "#light" }, - "up": { "uv": [ 3.75, 11.5, 3.25, 11 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 12, 12.25, 11 ], "texture": "#light" }, - "south": { "uv": [ 12.25, 4, 12.75, 5 ], "texture": "#light" }, - "west": { "uv": [ 4, 11, 5, 11.5 ], "texture": "#light", "rotation": 90 }, - "east": { "uv": [ 11, 11, 12, 11.5 ], "texture": "#light", "rotation": 270 } + "down": { "uv": [ 7.75, 12.5, 8.25, 13.25 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 2.75, 8.25, 3.5 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 12.5, 8.25, 14 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 12.5, 8.25, 14 ], "texture": "#light" }, + "west": { "uv": [ 2.75, 12.5, 3.5, 14 ], "texture": "#light" }, + "east": { "uv": [ 12.5, 12.5, 13.25, 14 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 11.5, 5 ], - "to": [ 12.75, 12, 6.5 ], - "rotation": { "origin": [ 12.25, 11.5, 6.5 ], "axis": "x", "angle": 22.5 }, + "from": [ 7.75, 13.25, 3.5 ], + "to": [ 8.25, 14, 5.75 ], + "rotation": { "origin": [ 7.75, 13.25, 5.75 ], "axis": "x", "angle": 22.5 }, "faces": { - "down": { "uv": [ 3.75, 4, 3.25, 2.5 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 2.5, 12.75, 4 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 6, 12.25, 5.5 ], "texture": "#light" }, - "south": { "uv": [ 12.25, 10, 12.75, 10.5 ], "texture": "#light" }, - "west": { "uv": [ 5.5, 2.5, 6, 4 ], "texture": "#light", "rotation": 270 }, - "east": { "uv": [ 10, 2.5, 10.5, 4 ], "texture": "#light", "rotation": 90 } + "down": { "uv": [ 7.75, 10.07873, 8.25, 12.32873 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 3.67127, 8.25, 5.92127 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 1.138962, 8.25, 1.888962 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 1.138962, 8.25, 1.888962 ], "texture": "#light" }, + "west": { "uv": [ 3.671271, 1.138962, 5.921271, 1.888962 ], "texture": "#light" }, + "east": { "uv": [ 10.07873, 1.138962, 12.32873, 1.888962 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 9.5, 11.5 ], - "to": [ 12.75, 11, 12 ], - "rotation": { "origin": [ 12.25, 9.5, 11.5 ], "axis": "x", "angle": 22.5 }, + "from": [ 7.75, 10.25, 13.25 ], + "to": [ 8.25, 12.5, 14 ], + "rotation": { "origin": [ 7.75, 10.25, 13.25 ], "axis": "x", "angle": 22.5 }, "faces": { - "down": { "uv": [ 3.75, 5.96194, 3.25, 5.46194 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 5.46194, 12.75, 5.96194 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 13.30866, 12.25, 11.80866 ], "texture": "#light" }, - "south": { "uv": [ 12.25, 2.691342, 12.75, 4.191341 ], "texture": "#light" }, - "west": { "uv": [ 11.80866, 5.46194, 13.30866, 5.96194 ], "texture": "#light", "rotation": 270 }, - "east": { "uv": [ 2.691342, 5.46194, 4.191342, 5.96194 ], "texture": "#light", "rotation": 90 } + "down": { "uv": [ 7.75, 2, 8.25, 2.75 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 13.25, 8.25, 14 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 3.5, 8.25, 5.75 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 3.5, 8.25, 5.75 ], "texture": "#light" }, + "west": { "uv": [ 13.25, 3.5, 14, 5.75 ], "texture": "#light" }, + "east": { "uv": [ 2, 3.5, 2.75, 5.75 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 4, 9.5 ], - "to": [ 12.75, 4.5, 11 ], - "rotation": { "origin": [ 12.25, 4.5, 9.5 ], "axis": "x", "angle": 22.5 }, + "from": [ 7.75, 2, 10.25 ], + "to": [ 8.25, 2.75, 12.5 ], + "rotation": { "origin": [ 7.75, 2.75, 10.25 ], "axis": "x", "angle": 22.5 }, "faces": { - "down": { "uv": [ 3.75, 13.19448, 3.25, 11.69448 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 11.69448, 12.75, 13.19448 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 9.964035, 12.25, 9.464035 ], "texture": "#light" }, - "south": { "uv": [ 12.25, 6.035965, 12.75, 6.535965 ], "texture": "#light" }, - "west": { "uv": [ 9.464035, 11.69448, 9.964035, 13.19448 ], "texture": "#light", "rotation": 270 }, - "east": { "uv": [ 6.035965, 11.69448, 6.535965, 13.19448 ], "texture": "#light", "rotation": 90 } + "down": { "uv": [ 7.75, 3.787012, 8.25, 6.037012 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 9.962988, 8.25, 12.21299 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 13.19291, 8.25, 13.94291 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 13.19291, 8.25, 13.94291 ], "texture": "#light" }, + "west": { "uv": [ 9.962988, 13.19291, 12.21299, 13.94291 ], "texture": "#light" }, + "east": { "uv": [ 3.787012, 13.19291, 6.037012, 13.94291 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 5, 4 ], - "to": [ 12.75, 6.5, 4.5 ], - "rotation": { "origin": [ 12.25, 6.5, 4.5 ], "axis": "x", "angle": 22.5 }, + "from": [ 7.75, 3.5, 2 ], + "to": [ 8.25, 5.75, 2.75 ], + "rotation": { "origin": [ 7.75, 5.75, 2.75 ], "axis": "x", "angle": 22.5 }, "faces": { - "down": { "uv": [ 3.75, 9.925975, 3.25, 9.425975 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 9.425975, 12.75, 9.925975 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 4.114182, 12.25, 2.614182 ], "texture": "#light" }, - "south": { "uv": [ 12.25, 11.88582, 12.75, 13.38582 ], "texture": "#light" }, - "west": { "uv": [ 2.614181, 9.425975, 4.114181, 9.925975 ], "texture": "#light", "rotation": 270 }, - "east": { "uv": [ 11.88582, 9.425975, 13.38582, 9.925975 ], "texture": "#light", "rotation": 90 } + "down": { "uv": [ 7.75, 14.05395, 8.25, 14.80395 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 1.196053, 8.25, 1.946053 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 9.791717, 8.25, 12.04172 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 9.791717, 8.25, 12.04172 ], "texture": "#light" }, + "west": { "uv": [ 1.196053, 9.791717, 1.946053, 12.04172 ], "texture": "#light" }, + "east": { "uv": [ 14.05395, 9.791717, 14.80395, 12.04172 ], "texture": "#light" } } }, { "__comment": "Box46", - "from": [ 12.25, 3, 6 ], - "to": [ 12.75, 4, 6.5 ], - "rotation": { "origin": [ 12.25, 4, 6.5 ], "axis": "x", "angle": -22.5 }, + "from": [ 7.75, 0.5, 5 ], + "to": [ 8.25, 2, 5.75 ], + "rotation": { "origin": [ 7.75, 2, 5.75 ], "axis": "x", "angle": -22.5 }, "faces": { - "down": { "uv": [ 12.25, 3.5, 12.75, 4 ], "texture": "#light" }, - "up": { "uv": [ 12.25, 12, 12.75, 12.5 ], "texture": "#light" }, - "north": { "uv": [ 12.75, 6.5, 12.25, 5.5 ], "texture": "#light" }, - "south": { "uv": [ 3.75, 6.5, 3.25, 5.5 ], "texture": "#light" }, - "west": { "uv": [ 3.5, 5.5, 4, 6.5 ], "texture": "#light", "rotation": 180 }, - "east": { "uv": [ 12, 5.5, 12.5, 6.5 ], "texture": "#light", "rotation": 180 } + "down": { "uv": [ 7.75, 9.618885, 8.25, 10.36889 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 5.631115, 8.25, 6.381115 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 14.17283, 8.25, 15.67283 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 14.17283, 8.25, 15.67283 ], "texture": "#light" }, + "west": { "uv": [ 5.631115, 14.17283, 6.381115, 15.67283 ], "texture": "#light" }, + "east": { "uv": [ 9.618885, 14.17283, 10.36889, 15.67283 ], "texture": "#light" } } } ], diff --git a/kfc/src/main/resources/assets/forgecraft/models/item/saw_model2.json b/kfc/src/main/resources/assets/forgecraft/models/item/saw_model2.json new file mode 100644 index 00000000..9b71e04f --- /dev/null +++ b/kfc/src/main/resources/assets/forgecraft/models/item/saw_model2.json @@ -0,0 +1,573 @@ +{ + "__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "blocks/e_particle", + "texture": "blocks/e_texture", + "light": "blocks/iron_ingot_light" + }, + "elements": [ + { + "__comment": "Box17", + "from": [ 5, 7.5, 7.5 ], + "to": [ 11, 8.5, 8.5 ], + "faces": { + "down": { "uv": [ 5, 7.5, 11, 8.5 ], "texture": "#texture" }, + "up": { "uv": [ 5, 7.5, 11, 8.5 ], "texture": "#texture" }, + "north": { "uv": [ 5, 7.5, 11, 8.5 ], "texture": "#texture" }, + "south": { "uv": [ 5, 7.5, 11, 8.5 ], "texture": "#texture" }, + "west": { "uv": [ 7.5, 7.5, 8.5, 8.5 ], "texture": "#texture" }, + "east": { "uv": [ 7.5, 7.5, 8.5, 8.5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box7", + "from": [ 7.5, 13.25, 5 ], + "to": [ 8.5, 14.75, 11 ], + "faces": { + "down": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 1.25, 8.5, 2.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 1.25, 8.5, 2.75 ], "texture": "#texture" }, + "west": { "uv": [ 5, 1.25, 11, 2.75 ], "texture": "#texture" }, + "east": { "uv": [ 5, 1.25, 11, 2.75 ], "texture": "#texture" } + } + }, + { + "__comment": "Box7", + "from": [ 7.5, 1.25, 5 ], + "to": [ 8.5, 2.75, 11 ], + "faces": { + "down": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 13.25, 8.5, 14.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 13.25, 8.5, 14.75 ], "texture": "#texture" }, + "west": { "uv": [ 5, 13.25, 11, 14.75 ], "texture": "#texture" }, + "east": { "uv": [ 5, 13.25, 11, 14.75 ], "texture": "#texture" } + } + }, + { + "__comment": "Box16", + "from": [ 7.5, 5, 1.25 ], + "to": [ 8.5, 11, 2.75 ], + "faces": { + "down": { "uv": [ 7.5, 13.25, 8.5, 14.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 1.25, 8.5, 2.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "west": { "uv": [ 1.25, 5, 2.75, 11 ], "texture": "#texture" }, + "east": { "uv": [ 13.25, 5, 14.75, 11 ], "texture": "#texture" } + } + }, + { + "__comment": "Box16", + "from": [ 7.5, 5, 13.25 ], + "to": [ 8.5, 11, 14.75 ], + "faces": { + "down": { "uv": [ 7.5, 1.25, 8.5, 2.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 13.25, 8.5, 14.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 5, 8.5, 11 ], "texture": "#texture" }, + "west": { "uv": [ 13.25, 5, 14.75, 11 ], "texture": "#texture" }, + "east": { "uv": [ 1.25, 5, 2.75, 11 ], "texture": "#texture" } + } + }, + { + "__comment": "Box24", + "from": [ 7.5, 4.25, 2.75 ], + "to": [ 8.5, 11.75, 4.25 ], + "faces": { + "down": { "uv": [ 7.5, 11.75, 8.5, 13.25 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 2.75, 8.5, 4.25 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 4.25, 8.5, 11.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 4.25, 8.5, 11.75 ], "texture": "#texture" }, + "west": { "uv": [ 2.75, 4.25, 4.25, 11.75 ], "texture": "#texture" }, + "east": { "uv": [ 11.75, 4.25, 13.25, 11.75 ], "texture": "#texture" } + } + }, + { + "__comment": "Box24", + "from": [ 7.5, 4.25, 11.75 ], + "to": [ 8.5, 11.75, 13.25 ], + "faces": { + "down": { "uv": [ 7.5, 2.75, 8.5, 4.25 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 11.75, 8.5, 13.25 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 4.25, 8.5, 11.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 4.25, 8.5, 11.75 ], "texture": "#texture" }, + "west": { "uv": [ 11.75, 4.25, 13.25, 11.75 ], "texture": "#texture" }, + "east": { "uv": [ 2.75, 4.25, 4.25, 11.75 ], "texture": "#texture" } + } + }, + { + "__comment": "Box28", + "from": [ 7.5, 2.75, 4.25 ], + "to": [ 8.5, 13.25, 11.75 ], + "faces": { + "down": { "uv": [ 7.5, 4.25, 8.5, 11.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 4.25, 8.5, 11.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 2.75, 8.5, 13.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 2.75, 8.5, 13.25 ], "texture": "#texture" }, + "west": { "uv": [ 4.25, 2.75, 11.75, 13.25 ], "texture": "#texture" }, + "east": { "uv": [ 4.25, 2.75, 11.75, 13.25 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 11, 2 ], + "to": [ 8.5, 11.75, 2.75 ], + "faces": { + "down": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "west": { "uv": [ 2, 4.25, 2.75, 5 ], "texture": "#texture" }, + "east": { "uv": [ 13.25, 4.25, 14, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 11.75, 2.75 ], + "to": [ 8.5, 12.5, 3.5 ], + "faces": { + "down": { "uv": [ 7.5, 12.5, 8.5, 13.25 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 2.75, 8.5, 3.5 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "west": { "uv": [ 2.75, 3.5, 3.5, 4.25 ], "texture": "#texture" }, + "east": { "uv": [ 12.5, 3.5, 13.25, 4.25 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 11.75, 3.5 ], + "to": [ 8.5, 13.25, 4.25 ], + "faces": { + "down": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 2.75, 8.5, 4.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 2.75, 8.5, 4.25 ], "texture": "#texture" }, + "west": { "uv": [ 3.5, 2.75, 4.25, 4.25 ], "texture": "#texture" }, + "east": { "uv": [ 11.75, 2.75, 12.5, 4.25 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 2.75, 3.5 ], + "to": [ 8.5, 4.25, 4.25 ], + "faces": { + "down": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 11.75, 8.5, 13.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 11.75, 8.5, 13.25 ], "texture": "#texture" }, + "west": { "uv": [ 3.5, 11.75, 4.25, 13.25 ], "texture": "#texture" }, + "east": { "uv": [ 11.75, 11.75, 12.5, 13.25 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 11.75, 11.75 ], + "to": [ 8.5, 13.25, 12.5 ], + "faces": { + "down": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 2.75, 8.5, 4.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 2.75, 8.5, 4.25 ], "texture": "#texture" }, + "west": { "uv": [ 11.75, 2.75, 12.5, 4.25 ], "texture": "#texture" }, + "east": { "uv": [ 3.5, 2.75, 4.25, 4.25 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 2.75, 11.75 ], + "to": [ 8.5, 4.25, 12.5 ], + "faces": { + "down": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 11.75, 8.5, 13.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 11.75, 8.5, 13.25 ], "texture": "#texture" }, + "west": { "uv": [ 11.75, 11.75, 12.5, 13.25 ], "texture": "#texture" }, + "east": { "uv": [ 3.5, 11.75, 4.25, 13.25 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 13.25, 4.25 ], + "to": [ 8.5, 14, 5 ], + "faces": { + "down": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "west": { "uv": [ 4.25, 2, 5, 2.75 ], "texture": "#texture" }, + "east": { "uv": [ 11, 2, 11.75, 2.75 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 4.25, 2 ], + "to": [ 8.5, 5, 2.75 ], + "faces": { + "down": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "west": { "uv": [ 2, 11, 2.75, 11.75 ], "texture": "#texture" }, + "east": { "uv": [ 13.25, 11, 14, 11.75 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 3.5, 2.75 ], + "to": [ 8.5, 4.25, 3.5 ], + "faces": { + "down": { "uv": [ 7.5, 12.5, 8.5, 13.25 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 2.75, 8.5, 3.5 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "west": { "uv": [ 2.75, 11.75, 3.5, 12.5 ], "texture": "#texture" }, + "east": { "uv": [ 12.5, 11.75, 13.25, 12.5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 2, 4.25 ], + "to": [ 8.5, 2.75, 5 ], + "faces": { + "down": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "west": { "uv": [ 4.25, 13.25, 5, 14 ], "texture": "#texture" }, + "east": { "uv": [ 11, 13.25, 11.75, 14 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 2, 11 ], + "to": [ 8.5, 2.75, 11.75 ], + "faces": { + "down": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "west": { "uv": [ 11, 13.25, 11.75, 14 ], "texture": "#texture" }, + "east": { "uv": [ 4.25, 13.25, 5, 14 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 3.5, 12.5 ], + "to": [ 8.5, 4.25, 13.25 ], + "faces": { + "down": { "uv": [ 7.5, 2.75, 8.5, 3.5 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 12.5, 8.5, 13.25 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 11.75, 8.5, 12.5 ], "texture": "#texture" }, + "west": { "uv": [ 12.5, 11.75, 13.25, 12.5 ], "texture": "#texture" }, + "east": { "uv": [ 2.75, 11.75, 3.5, 12.5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 4.25, 13.25 ], + "to": [ 8.5, 5, 14 ], + "faces": { + "down": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "west": { "uv": [ 13.25, 11, 14, 11.75 ], "texture": "#texture" }, + "east": { "uv": [ 2, 11, 2.75, 11.75 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 13.25, 11 ], + "to": [ 8.5, 14, 11.75 ], + "faces": { + "down": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 11, 8.5, 11.75 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "west": { "uv": [ 11, 2, 11.75, 2.75 ], "texture": "#texture" }, + "east": { "uv": [ 4.25, 2, 5, 2.75 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 11.75, 12.5 ], + "to": [ 8.5, 12.5, 13.25 ], + "faces": { + "down": { "uv": [ 7.5, 2.75, 8.5, 3.5 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 12.5, 8.5, 13.25 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 3.5, 8.5, 4.25 ], "texture": "#texture" }, + "west": { "uv": [ 12.5, 3.5, 13.25, 4.25 ], "texture": "#texture" }, + "east": { "uv": [ 2.75, 3.5, 3.5, 4.25 ], "texture": "#texture" } + } + }, + { + "__comment": "Box30", + "from": [ 7.5, 11, 13.25 ], + "to": [ 8.5, 11.75, 14 ], + "faces": { + "down": { "uv": [ 7.5, 2, 8.5, 2.75 ], "texture": "#texture" }, + "up": { "uv": [ 7.5, 13.25, 8.5, 14 ], "texture": "#texture" }, + "north": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "south": { "uv": [ 7.5, 4.25, 8.5, 5 ], "texture": "#texture" }, + "west": { "uv": [ 13.25, 4.25, 14, 5 ], "texture": "#texture" }, + "east": { "uv": [ 2, 4.25, 2.75, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 6.5, 1.25 ], + "to": [ 8.25, 8, 2 ], + "rotation": { "origin": [ 7.75, 8, 2 ], "axis": "x", "angle": 45 }, + "faces": { + "down": { "uv": [ 7.75, 14.84099, 8.25, 15.59099 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 0.4090099, 8.25, 1.15901 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 7.03033, 8.25, 8.53033 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 7.03033, 8.25, 8.53033 ], "texture": "#light" }, + "west": { "uv": [ 0.4090095, 7.03033, 1.159009, 8.53033 ], "texture": "#light" }, + "east": { "uv": [ 14.84099, 7.03033, 15.59099, 8.53033 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 14, 8 ], + "to": [ 8.25, 15.5, 8.75 ], + "rotation": { "origin": [ 7.75, 14, 8 ], "axis": "x", "angle": -45 }, + "faces": { + "down": { "uv": [ 7.75, 7.25, 8.25, 8 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 8, 8.25, 8.75 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 0.5, 8.25, 2 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 0.5, 8.25, 2 ], "texture": "#light" }, + "west": { "uv": [ 8, 0.5, 8.75, 2 ], "texture": "#light" }, + "east": { "uv": [ 7.25, 0.5, 8, 2 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 0.5, 7.25 ], + "to": [ 8.25, 2, 8 ], + "rotation": { "origin": [ 7.75, 2, 8 ], "axis": "x", "angle": -45 }, + "faces": { + "down": { "uv": [ 7.75, 6.719669, 8.25, 7.469669 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 8.530331, 8.25, 9.280331 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 14.09099, 8.25, 15.59099 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 14.09099, 8.25, 15.59099 ], "texture": "#light" }, + "west": { "uv": [ 8.530331, 14.09099, 9.280331, 15.59099 ], "texture": "#light" }, + "east": { "uv": [ 6.719669, 14.09099, 7.469669, 15.59099 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 8, 14 ], + "to": [ 8.25, 9.5, 14.75 ], + "rotation": { "origin": [ 7.75, 8, 14 ], "axis": "x", "angle": 45 }, + "faces": { + "down": { "uv": [ 7.75, 1.25, 8.25, 2 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 14, 8.25, 14.75 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 6.5, 8.25, 8 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 6.5, 8.25, 8 ], "texture": "#light" }, + "west": { "uv": [ 14, 6.5, 14.75, 8 ], "texture": "#light" }, + "east": { "uv": [ 1.25, 6.5, 2, 8 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 10.25, 0.5 ], + "to": [ 8.25, 11, 2 ], + "rotation": { "origin": [ 7.75, 10.25, 2 ], "axis": "x", "angle": -22.5 }, + "faces": { + "down": { "uv": [ 7.75, 13.88582, 8.25, 15.38582 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 0.6141806, 8.25, 2.114181 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 5.574026, 8.25, 6.324026 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 5.574026, 8.25, 6.324026 ], "texture": "#light" }, + "west": { "uv": [ 0.6141806, 5.574026, 2.114181, 6.324026 ], "texture": "#light" }, + "east": { "uv": [ 13.88582, 5.574026, 15.38582, 6.324026 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 14, 10.25 ], + "to": [ 8.25, 15.5, 11 ], + "rotation": { "origin": [ 7.75, 14, 10.25 ], "axis": "x", "angle": -22.5 }, + "faces": { + "down": { "uv": [ 7.75, 5, 8.25, 5.75 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 10.25, 8.25, 11 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 0.5, 8.25, 2 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 0.5, 8.25, 2 ], "texture": "#light" }, + "west": { "uv": [ 10.25, 0.5, 11, 2 ], "texture": "#light" }, + "east": { "uv": [ 5, 0.5, 5.75, 2 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 5, 14 ], + "to": [ 8.25, 5.75, 15.5 ], + "rotation": { "origin": [ 7.75, 5.75, 14 ], "axis": "x", "angle": -22.5 }, + "faces": { + "down": { "uv": [ 7.75, 0.2129879, 8.25, 1.712988 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 14.28701, 8.25, 15.78701 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 10.19291, 8.25, 10.94291 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 10.19291, 8.25, 10.94291 ], "texture": "#light" }, + "west": { "uv": [ 14.28701, 10.19291, 15.78701, 10.94291 ], "texture": "#light" }, + "east": { "uv": [ 0.2129879, 10.19291, 1.712988, 10.94291 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 12.5, 2 ], + "to": [ 8.25, 13.25, 3.5 ], + "faces": { + "down": { "uv": [ 7.75, 12.5, 8.25, 14 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 2, 8.25, 3.5 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 2.75, 8.25, 3.5 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 2.75, 8.25, 3.5 ], "texture": "#light" }, + "west": { "uv": [ 2, 2.75, 3.5, 3.5 ], "texture": "#light" }, + "east": { "uv": [ 12.5, 2.75, 14, 3.5 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 12.5, 12.5 ], + "to": [ 8.25, 14, 13.25 ], + "faces": { + "down": { "uv": [ 7.75, 2.75, 8.25, 3.5 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 12.5, 8.25, 13.25 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 2, 8.25, 3.5 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 2, 8.25, 3.5 ], "texture": "#light" }, + "west": { "uv": [ 12.5, 2, 13.25, 3.5 ], "texture": "#light" }, + "east": { "uv": [ 2.75, 2, 3.5, 3.5 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 2.75, 12.5 ], + "to": [ 8.25, 3.5, 14 ], + "faces": { + "down": { "uv": [ 7.75, 2, 8.25, 3.5 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 12.5, 8.25, 14 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 12.5, 8.25, 13.25 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 12.5, 8.25, 13.25 ], "texture": "#light" }, + "west": { "uv": [ 12.5, 12.5, 14, 13.25 ], "texture": "#light" }, + "east": { "uv": [ 2, 12.5, 3.5, 13.25 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 2, 2.75 ], + "to": [ 8.25, 3.5, 3.5 ], + "faces": { + "down": { "uv": [ 7.75, 12.5, 8.25, 13.25 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 2.75, 8.25, 3.5 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 12.5, 8.25, 14 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 12.5, 8.25, 14 ], "texture": "#light" }, + "west": { "uv": [ 2.75, 12.5, 3.5, 14 ], "texture": "#light" }, + "east": { "uv": [ 12.5, 12.5, 13.25, 14 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 13.25, 3.5 ], + "to": [ 8.25, 14, 5.75 ], + "rotation": { "origin": [ 7.75, 13.25, 5.75 ], "axis": "x", "angle": 22.5 }, + "faces": { + "down": { "uv": [ 7.75, 10.07873, 8.25, 12.32873 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 3.67127, 8.25, 5.92127 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 1.138962, 8.25, 1.888962 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 1.138962, 8.25, 1.888962 ], "texture": "#light" }, + "west": { "uv": [ 3.671271, 1.138962, 5.921271, 1.888962 ], "texture": "#light" }, + "east": { "uv": [ 10.07873, 1.138962, 12.32873, 1.888962 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 10.25, 13.25 ], + "to": [ 8.25, 12.5, 14 ], + "rotation": { "origin": [ 7.75, 10.25, 13.25 ], "axis": "x", "angle": 22.5 }, + "faces": { + "down": { "uv": [ 7.75, 2, 8.25, 2.75 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 13.25, 8.25, 14 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 3.5, 8.25, 5.75 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 3.5, 8.25, 5.75 ], "texture": "#light" }, + "west": { "uv": [ 13.25, 3.5, 14, 5.75 ], "texture": "#light" }, + "east": { "uv": [ 2, 3.5, 2.75, 5.75 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 2, 10.25 ], + "to": [ 8.25, 2.75, 12.5 ], + "rotation": { "origin": [ 7.75, 2.75, 10.25 ], "axis": "x", "angle": 22.5 }, + "faces": { + "down": { "uv": [ 7.75, 3.787012, 8.25, 6.037012 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 9.962988, 8.25, 12.21299 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 13.19291, 8.25, 13.94291 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 13.19291, 8.25, 13.94291 ], "texture": "#light" }, + "west": { "uv": [ 9.962988, 13.19291, 12.21299, 13.94291 ], "texture": "#light" }, + "east": { "uv": [ 3.787012, 13.19291, 6.037012, 13.94291 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 3.5, 2 ], + "to": [ 8.25, 5.75, 2.75 ], + "rotation": { "origin": [ 7.75, 5.75, 2.75 ], "axis": "x", "angle": 22.5 }, + "faces": { + "down": { "uv": [ 7.75, 14.05395, 8.25, 14.80395 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 1.196053, 8.25, 1.946053 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 9.791717, 8.25, 12.04172 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 9.791717, 8.25, 12.04172 ], "texture": "#light" }, + "west": { "uv": [ 1.196053, 9.791717, 1.946053, 12.04172 ], "texture": "#light" }, + "east": { "uv": [ 14.05395, 9.791717, 14.80395, 12.04172 ], "texture": "#light" } + } + }, + { + "__comment": "Box46", + "from": [ 7.75, 0.5, 5 ], + "to": [ 8.25, 2, 5.75 ], + "rotation": { "origin": [ 7.75, 2, 5.75 ], "axis": "x", "angle": -22.5 }, + "faces": { + "down": { "uv": [ 7.75, 9.618885, 8.25, 10.36889 ], "texture": "#light" }, + "up": { "uv": [ 7.75, 5.631115, 8.25, 6.381115 ], "texture": "#light" }, + "north": { "uv": [ 7.75, 14.17283, 8.25, 15.67283 ], "texture": "#light" }, + "south": { "uv": [ 7.75, 14.17283, 8.25, 15.67283 ], "texture": "#light" }, + "west": { "uv": [ 5.631115, 14.17283, 6.381115, 15.67283 ], "texture": "#light" }, + "east": { "uv": [ 9.618885, 14.17283, 10.36889, 15.67283 ], "texture": "#light" } + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [ 0, -90, 55 ], + "translation": [ 0, 0.2635, 0.5 ], + "scale": [ 0.85, 0.85, 0.85 ] + }, + "thirdperson_lefthand": { + "rotation": [ 0, -90, 55 ], + "translation": [ 0, 0.2635, 0.5 ], + "scale": [ 0.85, 0.85, 0.85 ] + }, + "firstperson_righthand": { + "rotation": [ 0, -90, 25 ], + "translation": [ 1.13, 3.2, 1.13 ], + "scale": [ 0.68, 0.68, 0.68 ] + }, + "firstperson_lefthand": { + "rotation": [ 0, 90, -25 ], + "translation": [ 1.13, 3.2, 1.13 ], + "scale": [ 0.68, 0.68, 0.68 ] + }, + "gui": { + "rotation": [ 30, 225, 0 ], + "translation": [ 2, 0, 0 ], + "scale": [ 0.625, 0.625, 0.625 ] + }, + "ground": { + "translation": [ 0, 3, 0 ], + "scale": [ 0.25, 0.25, 0.25 ] + } + } +} \ No newline at end of file diff --git a/kfc/src/main/resources/assets/forgecraft/sounds.json b/kfc/src/main/resources/assets/forgecraft/sounds.json index 47d07af8..adeebc1b 100644 --- a/kfc/src/main/resources/assets/forgecraft/sounds.json +++ b/kfc/src/main/resources/assets/forgecraft/sounds.json @@ -23,7 +23,25 @@ "chisel_hit_finished": { "category": "block", - "subtitle": "forgecraft.subtitle.chisel_hit_finishedg", + "subtitle": "forgecraft.subtitle.chisel_hit_finished", "sounds": [ "forgecraft:chisel_hit_finished" ] + }, + + "piston_engine_in": { + "category": "block", + "subtitle": "forgecraft.subtitle.piston_engine_in", + "sounds": [ "forgecraft:piston_engine_in" ] + }, + + "piston_engine_out": { + "category": "block", + "subtitle": "forgecraft.subtitle.piston_engine_out", + "sounds": [ "forgecraft:piston_engine_out" ] + }, + + "saw_machine": { + "category": "block", + "subtitle": "forgecraft.subtitle.saw_machine", + "sounds": [ "forgecraft:saw_machine" ] } -} \ No newline at end of file +} diff --git a/kfc/src/main/resources/assets/forgecraft/sounds/piston_engine_in.ogg b/kfc/src/main/resources/assets/forgecraft/sounds/piston_engine_in.ogg new file mode 100644 index 0000000000000000000000000000000000000000..18713f6750d9ac49fa9fa27e7ecff747d2f2dc95 GIT binary patch literal 9069 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 literal 0 HcmV?d00001