From ff3afbf0281a6931f7525e77e587b751c4c956a8 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 25 Jun 2023 19:10:29 +0200 Subject: [PATCH] ow --- gradle.properties | 2 +- src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../java/com/hbm/blocks/rail/IRailNTM.java | 6 +- .../hbm/blocks/rail/RailStandardBuffer.java | 90 +- .../hbm/entity/train/EntityRailCarBase.java | 62 +- .../inventory/recipes/AssemblerRecipes.java | 8 + .../java/com/hbm/items/special/ItemTrain.java | 6 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/CraftingManager.java | 2 + .../com/hbm/main/ModEventHandlerClient.java | 9 +- .../java/com/hbm/main/ResourceManager.java | 1 + .../block/RenderStandardBufferRail.java | 77 ++ src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../models/blocks/rail_standard_buffer.obj | 1143 +++++++++++++++++ .../textures/blocks/rail_standard_buffer.png | Bin 0 -> 890 bytes 17 files changed, 1380 insertions(+), 33 deletions(-) create mode 100644 src/main/java/com/hbm/render/block/RenderStandardBufferRail.java create mode 100644 src/main/resources/assets/hbm/models/blocks/rail_standard_buffer.obj create mode 100644 src/main/resources/assets/hbm/textures/blocks/rail_standard_buffer.png diff --git a/gradle.properties b/gradle.properties index 2f43c1817..fa397e559 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4627 +mod_build_number=4641 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index ea756421d..da5c00298 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2161,7 +2161,7 @@ public class ModBlocks { rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer"); crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate"); crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon"); diff --git a/src/main/java/com/hbm/blocks/rail/IRailNTM.java b/src/main/java/com/hbm/blocks/rail/IRailNTM.java index 782dc15e6..120c3b586 100644 --- a/src/main/java/com/hbm/blocks/rail/IRailNTM.java +++ b/src/main/java/com/hbm/blocks/rail/IRailNTM.java @@ -45,11 +45,13 @@ public interface IRailNTM { /** A wrapper for additional information like stopping on rails and what type of check we're doing */ public static class MoveContext { public RailCheckType type; + public double collisionBogieDistance; public boolean collision = false; //if a buffer stop or similar applies - public double overshoot; //how much of the travel distance was cut shor + public double overshoot; //how much of the travel distance was cut short - public MoveContext(RailCheckType type) { + public MoveContext(RailCheckType type, double collisionBogieDistance) { this.type = type; + this.collisionBogieDistance = collisionBogieDistance; } } diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java b/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java index 52bee4310..bb503060a 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java @@ -1,12 +1,17 @@ package com.hbm.blocks.rail; import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; +import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.material.Material; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class RailStandardBuffer extends BlockDummyable implements IRailNTM { @@ -19,9 +24,11 @@ public class RailStandardBuffer extends BlockDummyable implements IRailNTM { return null; } + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + @Override public int getRenderType() { - return 0; + return renderID; } @Override @@ -38,16 +45,89 @@ public class RailStandardBuffer extends BlockDummyable implements IRailNTM { public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); } - - // TBI + @Override public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { - return null; + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext(), new MoveContext(RailCheckType.OTHER, 0)); } @Override public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { - return null; + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info, context); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + + if(speed == 0) { + //return vec; + } + + if(dir == Library.POS_X || dir == Library.NEG_X) { + double targetX = trainX; + if(motionX > 0) { + targetX += speed; + info.yaw(-90F); + } else { + targetX -= speed; + info.yaw(90F); + } + vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3); + vec.yCoord = y + 0.1875; + vec.zCoord = cZ + 0.5 + rot.offsetZ * 0.5; + + double nX = (dir == Library.POS_X ? -1 - context.collisionBogieDistance : 2); + double pX = (dir == Library.NEG_X ? 0 - context.collisionBogieDistance : 3); + double buffer = MathHelper.clamp_double(targetX, cX - nX, cX + pX); + + if(buffer != vec.xCoord) { + context.collision = true; + context.overshoot = Math.abs(buffer - vec.xCoord); + vec.xCoord = buffer; + return vec; + } + + info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), y, cZ)); + } else { + double targetZ = trainZ; + if(motionZ > 0) { + targetZ += speed; + info.yaw(0F); + } else { + targetZ -= speed; + info.yaw(180F); + } + vec.xCoord = cX + 0.5 + rot.offsetX * 0.5; + vec.yCoord = y + 0.1875; + vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3); + + double nZ = (dir == Library.POS_Z ? -1 - context.collisionBogieDistance : 2); + double pZ = (dir == Library.NEG_Z ? 0 - context.collisionBogieDistance : 3); + double buffer = MathHelper.clamp_double(targetZ, cZ - nZ, cZ + pZ); + + if(buffer != vec.xCoord) { + context.collision = true; + context.overshoot = Math.abs(buffer - vec.zCoord); + vec.zCoord = buffer; + return vec; + } + + info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX, y, cZ + (motionZ * speed > 0 ? 3 : -3))); + } + + return vec; } @Override diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index 37f77f79f..f4a301914 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -14,8 +14,7 @@ import com.hbm.blocks.rail.IRailNTM.TrackGauge; import com.hbm.items.ModItems; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; -import com.hbm.util.ChatBuilder; +import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -27,7 +26,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentText; import net.minecraft.util.DamageSource; -import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -166,8 +164,8 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { } BlockPos anchor = this.getCurrentAnchorPos(); - Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan(), new MoveContext(RailCheckType.FRONT)); - Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan(), new MoveContext(RailCheckType.BACK)); + Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan(), new MoveContext(RailCheckType.FRONT, this.getCollisionSpan() - this.getLengthSpan())); + Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan(), new MoveContext(RailCheckType.BACK, this.getCollisionSpan() - this.getLengthSpan())); this.lastRenderX = this.renderX; this.lastRenderY = this.renderY; @@ -325,7 +323,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { EntityRailCarBase train = ltu.trains[0]; BlockPos anchor = new BlockPos(train.posX, train.posY, train.posZ); - Vec3 newPos = train.getRelPosAlongRail(anchor, speed, new MoveContext(RailCheckType.CORE)); + Vec3 newPos = train.getRelPosAlongRail(anchor, speed, new MoveContext(RailCheckType.CORE, 0)); if(newPos == null) { train.derail(); ltu.dissolveTrain(); @@ -333,8 +331,8 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { } train.setPosition(newPos.xCoord, newPos.yCoord, newPos.zCoord); anchor = train.getCurrentAnchorPos(); - Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT)); - Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK)); + Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT, train.getCollisionSpan() - train.getLengthSpan())); + Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK, train.getCollisionSpan() - train.getLengthSpan())); if(frontPos == null || backPos == null) { train.derail(); @@ -634,11 +632,11 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { BlockPos anchor = new BlockPos(moving.posX, moving.posY, moving.posZ); Vec3 trainPos = Vec3.createVectorHelper(moving.posX, moving.posY, moving.posZ); float yaw = EntityRailCarBase.generateYaw(prevLoc, nextLoc); - Vec3 newPos = EntityRailCarBase.getRelPosAlongRail(anchor, len, moving.getGauge(), moving.worldObj, trainPos, yaw, new MoveContext(RailCheckType.CORE)); + Vec3 newPos = EntityRailCarBase.getRelPosAlongRail(anchor, len, moving.getGauge(), moving.worldObj, trainPos, yaw, new MoveContext(RailCheckType.CORE, 0)); moving.setPosition(newPos.xCoord, newPos.yCoord, newPos.zCoord); anchor = moving.getCurrentAnchorPos(); //reset origin to new position - Vec3 frontPos = moving.getRelPosAlongRail(anchor, moving.getLengthSpan(), new MoveContext(RailCheckType.FRONT)); - Vec3 backPos = moving.getRelPosAlongRail(anchor, -moving.getLengthSpan(), new MoveContext(RailCheckType.BACK)); + Vec3 frontPos = moving.getRelPosAlongRail(anchor, moving.getLengthSpan(), new MoveContext(RailCheckType.FRONT, moving.getCollisionSpan() - moving.getLengthSpan())); + Vec3 backPos = moving.getRelPosAlongRail(anchor, -moving.getLengthSpan(), new MoveContext(RailCheckType.BACK, moving.getCollisionSpan() - moving.getLengthSpan())); if(frontPos == null || backPos == null) { moving.derail(); @@ -679,7 +677,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { for(EntityRailCarBase train : this.trains) { BlockPos anchor = train.getCurrentAnchorPos(); - Vec3 corePos = train.getRelPosAlongRail(anchor, totalSpeed, new MoveContext(RailCheckType.CORE)); + Vec3 corePos = train.getRelPosAlongRail(anchor, totalSpeed, new MoveContext(RailCheckType.CORE, 0)); if(corePos == null) { train.derail(); @@ -688,8 +686,8 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { } else { train.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); anchor = train.getCurrentAnchorPos(); //reset origin to new position - Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT)); - Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK)); + Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT, 0)); + Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK, 0)); if(frontPos == null || backPos == null) { train.derail(); @@ -763,16 +761,17 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { boolean inReverse = first.getCouplingFrom(null) == current.getCouplingFrom(null); int sigNum = inReverse ? 1 : -1; BlockPos anchor = current.getCurrentAnchorPos(); - Vec3 corePos = current.getRelPosAlongRail(anchor, speed * sigNum, new MoveContext(RailCheckType.CORE)); - if(corePos == null) { + /*Vec3 frontPos = current.getRelPosAlongRail(anchor, current.getLengthSpan(), new MoveContext(RailCheckType.FRONT)); + + if(frontPos == null) { current.derail(); this.dissolveTrain(); return; } else { - current.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); anchor = current.getCurrentAnchorPos(); //reset origin to new position - Vec3 frontPos = current.getRelPosAlongRail(anchor, current.getLengthSpan(), new MoveContext(RailCheckType.FRONT)); + Vec3 corePos = current.getRelPosAlongRail(anchor, speed * sigNum, new MoveContext(RailCheckType.CORE)); + current.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); Vec3 backPos = current.getRelPosAlongRail(anchor, -current.getLengthSpan(), new MoveContext(RailCheckType.BACK)); if(frontPos == null || backPos == null) { @@ -782,6 +781,33 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay { } else { setRenderPos(current, frontPos, backPos); } + }*/ + + Pair[] checks; + double dist = speed * sigNum; + + if(forward) { + checks = new Pair[] { + new Pair(dist + current.getLengthSpan(), RailCheckType.FRONT), + new Pair(dist, RailCheckType.CORE), + new Pair(dist - current.getLengthSpan(), RailCheckType.BACK) + }; + } else { + checks = new Pair[] { + new Pair(dist - current.getLengthSpan(), RailCheckType.BACK), + new Pair(dist, RailCheckType.CORE), + new Pair(dist + current.getLengthSpan(), RailCheckType.FRONT) + }; + } + + double brake = 0; + + for(Pair check : checks) { + MoveContext ctx = new MoveContext(check.getValue(), current.getCollisionSpan() - current.getLengthSpan()); + current.getRelPosAlongRail(anchor, check.getKey() - (brake * Math.signum(check.getKey())), ctx); + if(ctx.collision) { + brake += ctx.overshoot; + } } } else { diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 077b17bdc..db8e456d6 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -866,6 +866,14 @@ public class AssemblerRecipes { new OreDictStack(OreDictManager.getReflector(), 12), new ComparableStack(ModItems.circuit_copper, 12) }, 100); + makeRecipe(new ComparableStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_LAVA), new AStack[] { + new OreDictStack(STEEL.plate(), 24), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), + new ComparableStack(ModItems.rocket_fuel, 32), + new ComparableStack(ModItems.ball_tatb, 4), + new OreDictStack(VOLCANIC.gem(), 1), + new ComparableStack(ModItems.circuit_copper, 6) + }, 100); makeRecipe(new ComparableStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.LARGE), new AStack[] { new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), diff --git a/src/main/java/com/hbm/items/special/ItemTrain.java b/src/main/java/com/hbm/items/special/ItemTrain.java index 25dc46ccf..a99df9079 100644 --- a/src/main/java/com/hbm/items/special/ItemTrain.java +++ b/src/main/java/com/hbm/items/special/ItemTrain.java @@ -80,10 +80,10 @@ public class ItemTrain extends ItemEnumMulti { train.setPosition(x + fx, y + fy, z + fz); BlockPos anchor = train.getCurrentAnchorPos(); train.rotationYaw = entity.rotationYaw; - Vec3 corePos = train.getRelPosAlongRail(anchor, 0, new MoveContext(RailCheckType.CORE)); + Vec3 corePos = train.getRelPosAlongRail(anchor, 0, new MoveContext(RailCheckType.CORE, 0)); train.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); - Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT)); - Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK)); + Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT, train.getCollisionSpan() - train.getLengthSpan())); + Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK, train.getCollisionSpan() - train.getLengthSpan())); train.rotationYaw = train.generateYaw(frontPos, backPos); world.spawnEntityInWorld(train); } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 4e3d4bdfc..bfb6dcb7a 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4627)"; + public static final String VERSION = "1.0.27 BETA (4641)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index da86b7611..5852d92cd 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -801,6 +801,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderStandardStraightRail()); RenderingRegistry.registerBlockHandler(new RenderStandardCurveRail()); RenderingRegistry.registerBlockHandler(new RenderStandardRampRail()); + RenderingRegistry.registerBlockHandler(new RenderStandardBufferRail()); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite)); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4)); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 29b6606ed..c18a730e0 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -996,6 +996,8 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.upgrade_5g), new Object[] { ModItems.upgrade_template, ModItems.gem_alexandrite }); + addShapelessAuto(new ItemStack(ModItems.bdcl), new Object[] { ANY_TAR.any(), Fluids.WATER.getDict(1_000), KEY_WHITE }); + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting) { addShapelessAuto(new ItemStack(ModItems.cordite, 3), new Object[] { ModItems.ballistite, Items.gunpowder, new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); addShapelessAuto(new ItemStack(ModItems.ingot_semtex, 3), new Object[] { Items.slime_ball, Blocks.tnt, KNO.dust() }); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 019a369cc..9e3463f96 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -13,6 +13,10 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.MoveContext; +import com.hbm.blocks.rail.IRailNTM.RailCheckType; +import com.hbm.blocks.rail.IRailNTM.RailContext; import com.hbm.config.GeneralConfig; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.mob.EntityHunterChopper; @@ -66,6 +70,7 @@ import com.hbm.tileentity.machine.TileEntityNukeFurnace; import com.hbm.util.I18nUtil; import com.hbm.util.ItemStackUtil; import com.hbm.util.LoggingUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.wiaj.GuiWorldInAJar; import com.hbm.wiaj.cannery.CanneryBase; import com.hbm.wiaj.cannery.Jars; @@ -259,12 +264,12 @@ public class ModEventHandlerClient { boolean flip = distanceToCover < 0; if(it == 1) { - Vec3 snap = next = rail.getTravelLocation(world, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, info, new MoveContext(RailCheckType.CORE)); + Vec3 snap = next = rail.getTravelLocation(world, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, info, new MoveContext(RailCheckType.CORE, 0)); if(i == 0) world.spawnParticle("reddust", snap.xCoord, snap.yCoord + 0.25, snap.zCoord, 0.1, 1, 0.1); } Vec3 prev = next; - next = rail.getTravelLocation(world, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info, new MoveContext(i == 0 ? RailCheckType.FRONT : RailCheckType.BACK)); + next = rail.getTravelLocation(world, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info, new MoveContext(i == 0 ? RailCheckType.FRONT : RailCheckType.BACK, 0)); distanceToCover = info.overshoot; anchor = info.pos; if(i == 0) world.spawnParticle("reddust", next.xCoord, next.yCoord + 0.25, next.zCoord, 0, distanceToCover != 0 ? 0.5 : 0, 0); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 869fc2066..cf4b0f9df 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1344,6 +1344,7 @@ public class ResourceManager { public static final IModelCustom rail_standard_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard.obj")); public static final IModelCustom rail_standard_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend.obj")); public static final IModelCustom rail_standard_ramp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_ramp.obj")); + public static final IModelCustom rail_standard_buffer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_buffer.obj")); public static final IModelCustom capacitor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/capacitor.obj")); public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj")); diff --git a/src/main/java/com/hbm/render/block/RenderStandardBufferRail.java b/src/main/java/com/hbm/render/block/RenderStandardBufferRail.java new file mode 100644 index 000000000..5cf6381e1 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderStandardBufferRail.java @@ -0,0 +1,77 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.RailStandardBuffer; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderStandardBufferRail implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + + GL11.glTranslated(0, -0.0625, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.3, 0.3, 0.3); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_buffer, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + int meta = world.getBlockMetadata(x, y, z); + if(meta < 12) return true; + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + float rotation = 0; + + if(meta == 12) rotation = (float) Math.PI; + if(meta == 14) rotation = 270F / 180F * (float) Math.PI; + if(meta == 15) rotation = 90F / 180F * (float) Math.PI; + + if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_buffer, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return RailStandardBuffer.renderID; + } +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 6334c68bb..34aa19f02 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1000,6 +1000,7 @@ item.ammo_grenade_toxic.name=40mm Granate (Chemisch) item.ammo_grenade_tracer.name=40mm Übungsgranate item.ammo_himars_standard.name=227mm gelenkte Artillerierakete item.ammo_himars_standard_he.name=227mm Artillerielenkrakete (HE) +item.ammo_himars_standard_lava.name=227mm Artillerielenkrakete (Lava) item.ammo_himars_standard_mini_nuke.name=227mm Artillerielenkrakete (Miniatombombe) item.ammo_himars_standard_tb.name=227mm Artillerielenkrakete (Thermobarisch) item.ammo_himars_standard_wp.name=227mm Artillerielenkrakete (WP) diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 6bd3ff4e6..feac1b38e 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1580,6 +1580,7 @@ item.ammo_grenade_toxic.name=40mm Grenade (Chemical) item.ammo_grenade_tracer.name=40mm Training Grenade item.ammo_himars_standard.name=227mm Guided Artillery Rocket Pod item.ammo_himars_standard_he.name=227mm Guided Artillery Rocket Pod (HE) +item.ammo_himars_standard_lava.name=227mm Guided Artillery Rocket Pod (Lava) item.ammo_himars_standard_mini_nuke.name=227mm Guided Artillery Rocket Pod (Mini Nuke) item.ammo_himars_standard_tb.name=227mm Guided Artillery Rocket Pod (Thermobaric) item.ammo_himars_standard_wp.name=227mm Guided Artillery Rocket Pod (WP) diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard_buffer.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard_buffer.obj new file mode 100644 index 000000000..d56bd4b9b --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard_buffer.obj @@ -0,0 +1,1143 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_stop.blend' +# www.blender.org +o Plane.001 +v 1.000000 0.062500 -0.187500 +v 1.000000 0.062500 0.187500 +v -1.000000 0.062500 0.187500 +v -1.000000 0.062500 -0.187500 +v -1.000000 0.000000 0.187500 +v 1.000000 0.000000 0.187500 +v -1.000000 0.000000 -0.187500 +v 1.000000 0.000000 -0.187500 +v -1.000000 0.000000 -0.812500 +v 1.000000 0.000000 -0.812500 +v -1.000000 0.000000 -1.187500 +v 1.000000 0.000000 -1.187500 +v -1.000000 0.000000 -1.812500 +v 1.000000 0.000000 -1.812500 +v -1.000000 0.000000 -2.187500 +v 1.000000 0.000000 -2.187500 +v -1.000000 0.000000 2.187500 +v 1.000000 0.000000 2.187500 +v -1.000000 0.000000 1.812500 +v 1.000000 0.000000 1.812500 +v -1.000000 0.000000 1.187500 +v 1.000000 0.000000 1.187500 +v -1.000000 0.000000 0.812500 +v 1.000000 0.000000 0.812500 +v -1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -2.187500 +v -1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -2.187500 +v -1.000000 0.062500 1.812500 +v -1.000000 0.062500 2.187500 +v 1.000000 0.062500 2.187500 +v 1.000000 0.062500 1.812500 +v -1.000000 0.062500 0.812500 +v -1.000000 0.062500 1.187500 +v 1.000000 0.062500 1.187500 +v 1.000000 0.062500 0.812500 +v -0.812500 0.062500 2.500000 +v 0.812500 0.062500 2.500000 +v -0.812500 0.062500 -2.500000 +v 0.812500 0.062500 -2.500000 +v -0.812500 0.187500 2.500000 +v 0.812500 0.187500 2.500000 +v -0.812500 0.187500 -2.500000 +v 0.812500 0.187500 -2.500000 +v 0.750000 0.062500 2.500000 +v 0.750000 0.062500 -2.500000 +v 0.750000 0.187500 2.500000 +v 0.750000 0.187500 -2.500000 +v -0.750000 0.062500 -2.500000 +v -0.750000 0.062500 2.500000 +v -0.750000 0.187500 -2.500000 +v -0.750000 0.187500 2.500000 +v 0.625000 0.062500 2.062500 +v 0.937500 0.062500 2.062500 +v 0.625000 0.062500 1.937500 +v 0.937500 0.062500 1.937500 +v 0.625000 0.125000 2.062500 +v 0.937500 0.125000 2.062500 +v 0.625000 0.125000 1.937500 +v 0.937500 0.125000 1.937500 +v -0.937500 0.062500 2.062500 +v -0.625000 0.062500 2.062500 +v -0.937500 0.062500 1.937500 +v -0.625000 0.062500 1.937500 +v -0.937500 0.125000 2.062500 +v -0.625000 0.125000 2.062500 +v -0.937500 0.125000 1.937500 +v -0.625000 0.125000 1.937500 +v 0.625000 0.062500 1.062500 +v 0.937500 0.062500 1.062500 +v 0.625000 0.062500 0.937500 +v 0.937500 0.062500 0.937500 +v 0.625000 0.125000 1.062500 +v 0.937500 0.125000 1.062500 +v 0.625000 0.125000 0.937500 +v 0.937500 0.125000 0.937500 +v -0.937500 0.062500 1.062500 +v -0.625000 0.062500 1.062500 +v -0.937500 0.062500 0.937500 +v -0.625000 0.062500 0.937500 +v -0.937500 0.125000 1.062500 +v -0.625000 0.125000 1.062500 +v -0.937500 0.125000 0.937500 +v -0.625000 0.125000 0.937500 +v 0.625000 0.062500 0.062500 +v 0.937500 0.062500 0.062500 +v 0.625000 0.062500 -0.062500 +v 0.937500 0.062500 -0.062500 +v 0.625000 0.125000 0.062500 +v 0.937500 0.125000 0.062500 +v 0.625000 0.125000 -0.062500 +v 0.937500 0.125000 -0.062500 +v -0.937500 0.062500 0.062500 +v -0.625000 0.062500 0.062500 +v -0.937500 0.062500 -0.062500 +v -0.625000 0.062500 -0.062500 +v -0.937500 0.125000 0.062500 +v -0.625000 0.125000 0.062500 +v -0.937500 0.125000 -0.062500 +v -0.625000 0.125000 -0.062500 +v 0.625000 0.062500 -0.937500 +v 0.937500 0.062500 -0.937500 +v 0.625000 0.062500 -1.062500 +v 0.937500 0.062500 -1.062500 +v 0.625000 0.125000 -0.937500 +v 0.937500 0.125000 -0.937500 +v 0.625000 0.125000 -1.062500 +v 0.937500 0.125000 -1.062500 +v -0.937500 0.062500 -0.937500 +v -0.625000 0.062500 -0.937500 +v -0.937500 0.062500 -1.062500 +v -0.625000 0.062500 -1.062500 +v -0.937500 0.125000 -0.937500 +v -0.625000 0.125000 -0.937500 +v -0.937500 0.125000 -1.062500 +v -0.625000 0.125000 -1.062500 +v 0.625000 0.062500 -1.937500 +v 0.937500 0.062500 -1.937500 +v 0.625000 0.062500 -2.062500 +v 0.937500 0.062500 -2.062500 +v 0.625000 0.125000 -1.937500 +v 0.937500 0.125000 -1.937500 +v 0.625000 0.125000 -2.062500 +v 0.937500 0.125000 -2.062500 +v -0.937500 0.062500 -1.937500 +v -0.625000 0.062500 -1.937500 +v -0.937500 0.062500 -2.062500 +v -0.625000 0.062500 -2.062500 +v -0.937500 0.125000 -1.937500 +v -0.625000 0.125000 -1.937500 +v -0.937500 0.125000 -2.062500 +v -0.625000 0.125000 -2.062500 +v -0.812500 0.062500 -1.500000 +v -0.812500 0.062500 -0.500000 +v -0.812500 0.062500 0.500000 +v -0.812500 0.062500 1.500000 +v 0.812500 0.062500 1.500000 +v 0.812500 0.062500 0.500000 +v 0.812500 0.062500 -0.500000 +v 0.812500 0.062500 -1.500000 +v -0.812500 0.187500 -1.500000 +v -0.812500 0.187500 -0.500000 +v -0.812500 0.187500 0.500000 +v -0.812500 0.187500 1.500000 +v 0.812500 0.187500 1.500000 +v 0.812500 0.187500 0.500000 +v 0.812500 0.187500 -0.500000 +v 0.812500 0.187500 -1.500000 +v 0.750000 0.062500 1.500000 +v 0.750000 0.062500 0.500000 +v 0.750000 0.062500 -0.500000 +v 0.750000 0.062500 -1.500000 +v 0.750000 0.187500 1.500000 +v 0.750000 0.187500 0.500000 +v 0.750000 0.187500 -0.500000 +v 0.750000 0.187500 -1.500000 +v -0.750000 0.062500 -1.500000 +v -0.750000 0.062500 -0.500000 +v -0.750000 0.062500 0.500000 +v -0.750000 0.062500 1.500000 +v -0.750000 0.187500 -1.500000 +v -0.750000 0.187500 -0.500000 +v -0.750000 0.187500 0.500000 +v -0.750000 0.187500 1.500000 +v -1.000000 1.500000 -1.000000 +v 1.000000 1.500000 -1.000000 +v -1.000000 1.500000 -1.375000 +v 1.000000 1.500000 -1.375000 +v -1.000000 0.875000 -1.375000 +v -1.000000 0.875000 -1.000000 +v 1.000000 0.875000 -1.000000 +v 1.000000 0.875000 -1.375000 +v 0.687500 1.062500 -1.000000 +v 0.937500 1.062500 -1.000000 +v 0.687500 1.312500 -1.000000 +v 0.937500 1.312500 -1.000000 +v 0.687500 1.312500 -0.625000 +v 0.687500 1.062500 -0.625000 +v 0.937500 1.062500 -0.625000 +v 0.937500 1.312500 -0.625000 +v 0.562500 1.312500 -0.625000 +v 0.687500 1.437500 -0.625000 +v 0.687500 0.937500 -0.625000 +v 0.562500 1.062500 -0.625000 +v 1.062500 1.062500 -0.625000 +v 0.937500 0.937500 -0.625000 +v 0.937500 1.437500 -0.625000 +v 1.062500 1.312500 -0.625000 +v 0.687500 1.437500 -0.500000 +v 0.562500 1.312500 -0.500000 +v 0.562500 1.062500 -0.500000 +v 0.687500 0.937500 -0.500000 +v 0.937500 0.937500 -0.500000 +v 1.062500 1.062500 -0.500000 +v 1.062500 1.312500 -0.500000 +v 0.937500 1.437500 -0.500000 +v 0.625000 0.875000 -1.062500 +v 0.875000 0.875000 -1.062500 +v 0.625000 0.875000 -1.312500 +v 0.875000 0.875000 -1.312500 +v 0.625000 0.000000 -1.312500 +v 0.625000 0.000000 -1.062500 +v 0.875000 0.000000 -1.062500 +v 0.875000 0.000000 -1.312500 +v -0.875000 0.875000 -1.062500 +v -0.625000 0.875000 -1.062500 +v -0.875000 0.875000 -1.312500 +v -0.625000 0.875000 -1.312500 +v -0.875000 0.000000 -1.312500 +v -0.875000 0.000000 -1.062500 +v -0.625000 0.000000 -1.062500 +v -0.625000 0.000000 -1.312500 +v 0.625000 0.000000 -2.687500 +v 0.625000 0.000000 -2.437500 +v 0.875000 0.000000 -2.437500 +v 0.875000 0.000000 -2.687500 +v -0.875000 0.000000 -2.687500 +v -0.875000 0.000000 -2.437500 +v -0.625000 0.000000 -2.437500 +v -0.625000 0.000000 -2.687500 +v 0.625000 1.062500 -1.375000 +v 0.875000 1.062500 -1.375000 +v -0.875000 1.062500 -1.375000 +v -0.625000 1.062500 -1.375000 +v 0.625000 1.312500 -1.375000 +v 0.875000 1.312500 -1.375000 +v -0.875000 1.312500 -1.375000 +v -0.625000 1.312500 -1.375000 +v -0.937500 1.062500 -1.000000 +v -0.687500 1.062500 -1.000000 +v -0.937500 1.312500 -1.000000 +v -0.687500 1.312500 -1.000000 +v -0.937500 1.312500 -0.625000 +v -0.937500 1.062500 -0.625000 +v -0.687500 1.062500 -0.625000 +v -0.687500 1.312500 -0.625000 +v -1.062500 1.312500 -0.625000 +v -0.937500 1.437500 -0.625000 +v -0.937500 0.937500 -0.625000 +v -1.062500 1.062500 -0.625000 +v -0.562500 1.062500 -0.625000 +v -0.687500 0.937500 -0.625000 +v -0.687500 1.437500 -0.625000 +v -0.562500 1.312500 -0.625000 +v -0.937500 1.437500 -0.500000 +v -1.062500 1.312500 -0.500000 +v -1.062500 1.062500 -0.500000 +v -0.937500 0.937500 -0.500000 +v -0.687500 0.937500 -0.500000 +v -0.562500 1.062500 -0.500000 +v -0.562500 1.312500 -0.500000 +v -0.687500 1.437500 -0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.250000 0.078125 +vt 0.218750 0.328125 +vt 0.218750 0.078125 +vt 0.265625 0.328125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.265625 0.359375 +vt 0.250000 0.328125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.203125 0.078125 +vt 0.250000 0.328125 +vt 0.265625 0.359375 +vt 0.250000 0.359375 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.328125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.203125 0.078125 +vt 0.203125 0.328125 +vt 0.265625 0.359375 +vt 0.250000 0.328125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.265625 0.359375 +vt 0.250000 0.359375 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.203125 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.467018 0.000041 +vt 0.560886 0.500669 +vt 0.467018 0.500669 +vt 0.562500 -0.000000 +vt 0.468750 0.500000 +vt 0.468750 -0.000000 +vt 0.312500 0.500000 +vt 0.468750 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.500000 +vt 0.468750 0.593750 +vt 0.312500 0.593750 +vt 0.312500 -0.000000 +vt 0.468750 0.500000 +vt 0.312500 -0.000000 +vt 0.656250 0.187500 +vt 0.562500 0.125000 +vt 0.656250 0.125000 +vt 0.656250 0.062500 +vt 0.562500 0.000000 +vt 0.656250 0.000000 +vt 0.562500 0.062500 +vt 0.656250 0.250000 +vt 0.562500 0.187500 +vt 0.625000 0.437500 +vt 0.687500 0.406250 +vt 0.687500 0.437500 +vt 0.718750 0.312500 +vt 0.593750 0.375000 +vt 0.687500 0.406250 +vt 0.593750 0.375000 +vt 0.625000 0.281250 +vt 0.687500 0.250000 +vt 0.625000 0.281250 +vt 0.625000 0.250000 +vt 0.750000 0.375000 +vt 0.750000 0.312500 +vt 0.718750 0.437500 +vt 0.718750 0.281250 +vt 0.687500 0.281250 +vt 0.593750 0.250000 +vt 0.593750 0.406250 +vt 0.625000 0.406250 +vt 0.562500 0.312500 +vt 0.562500 0.375000 +vt 0.781250 0.000000 +vt 0.718750 0.062500 +vt 0.718750 0.000000 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.781250 0.000000 +vt 0.718750 0.062500 +vt 0.718750 0.000000 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.250000 0.500000 +vt 0.312500 0.562500 +vt 0.250000 0.562500 +vt 0.250000 0.500000 +vt 0.312500 0.562500 +vt 0.250000 0.562500 +vt 0.187500 0.921875 +vt 0.250000 0.546875 +vt 0.250000 0.921875 +vt 0.187500 0.921875 +vt 0.250000 0.546875 +vt 0.250000 0.921875 +vt 0.000000 0.546875 +vt 0.062500 0.968750 +vt 0.000000 0.921875 +vt 0.125000 0.500000 +vt 0.125000 0.968750 +vt 0.000000 0.546875 +vt 0.062500 0.968750 +vt 0.000000 0.921875 +vt 0.125000 0.500000 +vt 0.125000 0.968750 +vt 0.656250 0.187500 +vt 0.562500 0.125000 +vt 0.656250 0.125000 +vt 0.656250 0.062500 +vt 0.562500 0.000000 +vt 0.656250 0.000000 +vt 0.562500 0.062500 +vt 0.656250 0.250000 +vt 0.562500 0.187500 +vt 0.625000 0.437500 +vt 0.687500 0.406250 +vt 0.687500 0.437500 +vt 0.718750 0.312500 +vt 0.593750 0.375000 +vt 0.687500 0.406250 +vt 0.593750 0.375000 +vt 0.625000 0.281250 +vt 0.687500 0.250000 +vt 0.625000 0.281250 +vt 0.625000 0.250000 +vt 0.750000 0.375000 +vt 0.750000 0.312500 +vt 0.718750 0.437500 +vt 0.718750 0.281250 +vt 0.687500 0.281250 +vt 0.593750 0.250000 +vt 0.593750 0.406250 +vt 0.625000 0.406250 +vt 0.562500 0.312500 +vt 0.562500 0.375000 +vt 0.203125 0.000000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.296875 0.015625 +vt 0.296875 0.015625 +vt 0.203125 0.000000 +vt 0.203125 0.000000 +vt 0.093750 0.500000 +vt 0.203125 0.000000 +vt 0.093750 0.500000 +vt 0.296875 0.015625 +vt 0.093750 0.500000 +vt 0.296875 0.015625 +vt 0.296875 0.015625 +vt 0.203125 0.000000 +vt 0.250000 0.359375 +vt 0.203125 0.328125 +vt 0.265625 0.328125 +vt 0.250000 0.359375 +vt 0.265625 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.328125 +vt 0.560886 0.000041 +vt 0.562500 0.500000 +vt 0.468750 -0.000000 +vt 0.562500 0.250000 +vt 0.593750 0.312500 +vt 0.718750 0.375000 +vt 0.687500 0.281250 +vt 0.718750 0.312500 +vt 0.718750 0.375000 +vt 0.625000 0.406250 +vt 0.593750 0.312500 +vt 0.718750 0.406250 +vt 0.718750 0.250000 +vt 0.593750 0.281250 +vt 0.593750 0.437500 +vt 0.781250 0.062500 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.781250 0.062500 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.187500 0.546875 +vt 0.187500 0.546875 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.562500 0.250000 +vt 0.593750 0.312500 +vt 0.718750 0.375000 +vt 0.687500 0.281250 +vt 0.718750 0.312500 +vt 0.718750 0.375000 +vt 0.625000 0.406250 +vt 0.593750 0.312500 +vt 0.718750 0.406250 +vt 0.718750 0.250000 +vt 0.593750 0.281250 +vt 0.593750 0.437500 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +s off +f 2/1/1 4/2/1 3/3/1 +f 7/4/2 6/5/2 5/6/2 +f 11/7/2 10/8/2 9/9/2 +f 15/10/2 14/11/2 13/12/2 +f 19/13/2 18/14/2 17/15/2 +f 23/16/2 22/17/2 21/18/2 +f 27/19/1 25/20/1 26/21/1 +f 31/22/1 29/23/1 30/24/1 +f 35/25/1 33/26/1 34/27/1 +f 39/28/1 37/29/1 38/30/1 +f 17/31/3 33/32/3 19/33/3 +f 10/34/4 26/35/4 9/36/4 +f 18/37/4 34/38/4 17/39/4 +f 12/40/5 27/41/5 10/8/5 +f 20/42/5 35/43/5 18/14/5 +f 11/7/6 28/44/6 12/45/6 +f 5/46/3 4/47/3 7/48/3 +f 19/13/6 36/49/6 20/50/6 +f 13/51/3 29/52/3 15/53/3 +f 6/54/4 3/55/4 5/56/4 +f 21/57/3 37/58/3 23/59/3 +f 14/60/4 30/61/4 13/62/4 +f 8/63/5 2/64/5 6/5/5 +f 22/65/4 38/66/4 21/67/4 +f 16/68/5 31/69/5 14/11/5 +f 7/4/6 1/70/6 8/71/6 +f 24/72/5 39/73/5 22/17/5 +f 15/10/6 32/74/6 16/75/6 +f 9/76/3 25/77/3 11/78/3 +f 23/16/6 40/79/6 24/80/6 +f 149/81/5 42/82/5 141/83/5 +f 145/84/3 43/85/3 137/86/3 +f 49/87/3 157/88/3 153/89/3 +f 46/90/4 49/91/4 42/92/4 +f 48/93/1 160/94/1 152/95/1 +f 42/82/2 153/96/2 141/83/2 +f 44/97/6 52/98/6 48/99/6 +f 53/100/5 165/101/5 161/102/5 +f 45/103/1 168/104/1 148/105/1 +f 43/106/2 161/102/2 137/107/2 +f 47/108/6 53/109/6 43/110/6 +f 41/111/4 56/112/4 45/113/4 +f 61/114/3 59/115/3 57/116/3 +f 63/117/6 60/118/6 59/119/6 +f 62/120/4 57/121/4 58/122/4 +f 64/123/5 58/124/5 60/125/5 +f 61/114/1 64/123/1 63/117/1 +f 69/126/3 67/127/3 65/128/3 +f 71/129/6 68/130/6 67/131/6 +f 70/132/4 65/133/4 66/134/4 +f 72/135/5 66/136/5 68/137/5 +f 69/126/1 72/135/1 71/129/1 +f 77/138/3 75/139/3 73/140/3 +f 79/141/6 76/142/6 75/143/6 +f 78/144/4 73/145/4 74/146/4 +f 80/147/5 74/148/5 76/149/5 +f 77/138/1 80/147/1 79/141/1 +f 85/150/3 83/151/3 81/152/3 +f 87/153/6 84/154/6 83/155/6 +f 86/156/4 81/157/4 82/158/4 +f 88/159/5 82/160/5 84/161/5 +f 85/150/1 88/159/1 87/153/1 +f 93/162/3 91/163/3 89/164/3 +f 95/165/6 92/166/6 91/167/6 +f 94/168/4 89/169/4 90/170/4 +f 96/171/5 90/172/5 92/173/5 +f 93/162/1 96/171/1 95/165/1 +f 101/174/3 99/175/3 97/176/3 +f 103/177/6 100/178/6 99/179/6 +f 102/180/4 97/181/4 98/182/4 +f 104/183/5 98/184/5 100/185/5 +f 101/174/1 104/183/1 103/177/1 +f 109/186/3 107/187/3 105/188/3 +f 111/189/6 108/190/6 107/191/6 +f 110/192/4 105/193/4 106/194/4 +f 112/195/5 106/196/5 108/197/5 +f 109/186/1 112/195/1 111/189/1 +f 117/198/3 115/199/3 113/200/3 +f 119/201/6 116/202/6 115/203/6 +f 118/204/4 113/205/4 114/206/4 +f 120/207/5 114/208/5 116/209/5 +f 117/198/1 120/207/1 119/201/1 +f 125/210/3 123/211/3 121/212/3 +f 127/213/6 124/214/6 123/215/6 +f 126/216/4 121/217/4 122/218/4 +f 128/219/5 122/220/5 124/221/5 +f 125/210/1 128/219/1 127/213/1 +f 133/222/3 131/223/3 129/224/3 +f 135/225/6 132/226/6 131/227/6 +f 134/228/4 129/229/4 130/230/4 +f 136/231/5 130/232/5 132/233/5 +f 133/222/1 136/231/1 135/225/1 +f 140/234/2 54/235/2 41/236/2 +f 139/237/2 164/238/2 140/239/2 +f 138/240/2 163/241/2 139/242/2 +f 137/243/2 162/244/2 138/245/2 +f 145/84/1 55/246/1 47/247/1 +f 146/248/1 165/249/1 145/250/1 +f 147/251/1 166/252/1 146/253/1 +f 148/254/1 167/255/1 147/256/1 +f 164/257/5 56/258/5 54/235/5 +f 163/259/5 168/260/5 164/238/5 +f 162/261/5 167/262/5 163/241/5 +f 161/263/5 166/264/5 162/244/5 +f 144/265/2 50/266/2 44/267/2 +f 143/268/2 156/269/2 144/270/2 +f 142/271/2 155/272/2 143/273/2 +f 141/274/2 154/275/2 142/276/2 +f 149/81/1 51/277/1 46/278/1 +f 150/279/1 157/280/1 149/281/1 +f 151/282/1 158/283/1 150/284/1 +f 152/285/1 159/286/1 151/287/1 +f 156/288/3 52/289/3 50/290/3 +f 155/291/3 160/292/3 156/293/3 +f 154/294/3 159/295/3 155/296/3 +f 153/297/3 158/298/3 154/299/3 +f 45/103/3 140/300/3 41/301/3 +f 148/254/3 139/302/3 140/303/3 +f 147/251/3 138/304/3 139/305/3 +f 146/248/3 137/306/3 138/307/3 +f 48/93/5 144/265/5 44/267/5 +f 152/285/5 143/268/5 144/270/5 +f 151/282/5 142/271/5 143/273/5 +f 150/279/5 141/274/5 142/276/5 +f 170/308/1 171/309/1 169/310/1 +f 173/311/2 175/312/2 174/313/2 +f 170/314/5 176/315/5 172/316/5 +f 171/317/3 174/318/3 169/319/3 +f 172/320/6 173/321/6 171/317/6 +f 169/322/4 175/312/4 170/314/4 +f 179/323/1 184/324/1 180/325/1 +f 178/326/2 182/327/2 177/328/2 +f 180/325/5 183/329/5 178/326/5 +f 177/330/3 181/331/3 179/323/3 +f 186/332/1 200/333/1 191/334/1 +f 198/335/4 200/333/4 194/336/4 +f 186/337/6 192/338/6 190/339/6 +f 190/340/2 196/341/2 187/342/2 +f 192/343/5 198/335/5 189/344/5 +f 200/333/7 192/345/7 191/334/7 +f 190/340/8 198/346/8 197/347/8 +f 196/341/9 188/348/9 187/342/9 +f 186/332/10 194/349/10 193/350/10 +f 188/351/3 194/336/3 185/352/3 +f 205/353/2 207/354/2 206/355/2 +f 202/356/5 208/357/5 204/358/5 +f 203/359/3 206/355/3 201/360/3 +f 204/361/6 205/362/6 203/363/6 +f 201/364/4 207/365/4 202/366/4 +f 213/367/2 215/368/2 214/369/2 +f 210/370/5 216/371/5 212/372/5 +f 211/373/3 214/369/3 209/374/3 +f 212/375/6 213/376/6 211/377/6 +f 209/378/4 215/379/4 210/380/4 +f 217/381/2 219/382/2 218/383/2 +f 221/384/2 223/385/2 222/386/2 +f 223/387/11 227/388/11 222/389/11 +f 219/390/11 225/391/11 218/392/11 +f 225/393/3 217/394/3 218/395/3 +f 217/394/12 230/396/12 220/397/12 +f 230/396/5 219/390/5 220/397/5 +f 227/398/3 221/399/3 222/400/3 +f 221/399/12 232/401/12 224/402/12 +f 232/401/5 223/387/5 224/402/5 +f 235/403/1 240/404/1 236/405/1 +f 234/406/2 238/407/2 233/408/2 +f 236/405/5 239/409/5 234/406/5 +f 233/410/3 237/411/3 235/403/3 +f 242/412/1 256/413/1 247/414/1 +f 254/415/4 256/413/4 250/416/4 +f 242/417/6 248/418/6 246/419/6 +f 246/420/2 252/421/2 243/422/2 +f 248/423/5 254/415/5 245/424/5 +f 256/413/7 248/425/7 247/414/7 +f 246/420/8 254/426/8 253/427/8 +f 252/421/9 244/428/9 243/422/9 +f 242/412/10 250/429/10 249/430/10 +f 244/431/3 250/416/3 241/432/3 +f 2/1/1 1/70/1 4/2/1 +f 7/4/2 8/71/2 6/5/2 +f 11/7/2 12/45/2 10/8/2 +f 15/10/2 16/75/2 14/11/2 +f 19/13/2 20/50/2 18/14/2 +f 23/16/2 24/80/2 22/17/2 +f 27/19/1 28/44/1 25/20/1 +f 31/22/1 32/74/1 29/23/1 +f 35/25/1 36/49/1 33/26/1 +f 39/28/1 40/79/1 37/29/1 +f 17/31/3 34/433/3 33/32/3 +f 10/34/4 27/434/4 26/35/4 +f 18/37/4 35/435/4 34/38/4 +f 12/40/5 28/436/5 27/41/5 +f 20/42/5 36/437/5 35/43/5 +f 11/7/6 25/20/6 28/44/6 +f 5/46/3 3/438/3 4/47/3 +f 19/13/6 33/26/6 36/49/6 +f 13/51/3 30/439/3 29/52/3 +f 6/54/4 2/440/4 3/55/4 +f 21/57/3 38/441/3 37/58/3 +f 14/60/4 31/442/4 30/61/4 +f 8/63/5 1/443/5 2/64/5 +f 22/65/4 39/444/4 38/66/4 +f 16/68/5 32/445/5 31/69/5 +f 7/4/6 4/2/6 1/70/6 +f 24/72/5 40/446/5 39/73/5 +f 15/10/6 29/23/6 32/74/6 +f 9/76/3 26/447/3 25/77/3 +f 23/16/6 37/29/6 40/79/6 +f 149/81/5 46/278/5 42/82/5 +f 145/84/3 47/247/3 43/85/3 +f 49/87/3 51/277/3 157/88/3 +f 46/90/4 51/448/4 49/91/4 +f 48/93/1 52/289/1 160/94/1 +f 42/82/2 49/449/2 153/96/2 +f 44/97/6 50/450/6 52/98/6 +f 53/100/5 55/246/5 165/101/5 +f 45/103/1 56/258/1 168/104/1 +f 43/106/2 53/100/2 161/102/2 +f 47/108/6 55/451/6 53/109/6 +f 41/111/4 54/452/4 56/112/4 +f 61/114/3 63/117/3 59/115/3 +f 63/117/6 64/123/6 60/118/6 +f 62/120/4 61/114/4 57/121/4 +f 64/123/5 62/120/5 58/124/5 +f 61/114/1 62/120/1 64/123/1 +f 69/126/3 71/129/3 67/127/3 +f 71/129/6 72/135/6 68/130/6 +f 70/132/4 69/126/4 65/133/4 +f 72/135/5 70/132/5 66/136/5 +f 69/126/1 70/132/1 72/135/1 +f 77/138/3 79/141/3 75/139/3 +f 79/141/6 80/147/6 76/142/6 +f 78/144/4 77/138/4 73/145/4 +f 80/147/5 78/144/5 74/148/5 +f 77/138/1 78/144/1 80/147/1 +f 85/150/3 87/153/3 83/151/3 +f 87/153/6 88/159/6 84/154/6 +f 86/156/4 85/150/4 81/157/4 +f 88/159/5 86/156/5 82/160/5 +f 85/150/1 86/156/1 88/159/1 +f 93/162/3 95/165/3 91/163/3 +f 95/165/6 96/171/6 92/166/6 +f 94/168/4 93/162/4 89/169/4 +f 96/171/5 94/168/5 90/172/5 +f 93/162/1 94/168/1 96/171/1 +f 101/174/3 103/177/3 99/175/3 +f 103/177/6 104/183/6 100/178/6 +f 102/180/4 101/174/4 97/181/4 +f 104/183/5 102/180/5 98/184/5 +f 101/174/1 102/180/1 104/183/1 +f 109/186/3 111/189/3 107/187/3 +f 111/189/6 112/195/6 108/190/6 +f 110/192/4 109/186/4 105/193/4 +f 112/195/5 110/192/5 106/196/5 +f 109/186/1 110/192/1 112/195/1 +f 117/198/3 119/201/3 115/199/3 +f 119/201/6 120/207/6 116/202/6 +f 118/204/4 117/198/4 113/205/4 +f 120/207/5 118/204/5 114/208/5 +f 117/198/1 118/204/1 120/207/1 +f 125/210/3 127/213/3 123/211/3 +f 127/213/6 128/219/6 124/214/6 +f 126/216/4 125/210/4 121/217/4 +f 128/219/5 126/216/5 122/220/5 +f 125/210/1 126/216/1 128/219/1 +f 133/222/3 135/225/3 131/223/3 +f 135/225/6 136/231/6 132/226/6 +f 134/228/4 133/222/4 129/229/4 +f 136/231/5 134/228/5 130/232/5 +f 133/222/1 134/228/1 136/231/1 +f 140/234/2 164/257/2 54/235/2 +f 139/237/2 163/259/2 164/238/2 +f 138/240/2 162/261/2 163/241/2 +f 137/243/2 161/263/2 162/244/2 +f 145/84/1 165/101/1 55/246/1 +f 146/248/1 166/264/1 165/249/1 +f 147/251/1 167/262/1 166/252/1 +f 148/254/1 168/260/1 167/255/1 +f 164/257/5 168/104/5 56/258/5 +f 163/259/5 167/255/5 168/260/5 +f 162/261/5 166/252/5 167/262/5 +f 161/263/5 165/249/5 166/264/5 +f 144/265/2 156/453/2 50/266/2 +f 143/268/2 155/454/2 156/269/2 +f 142/271/2 154/455/2 155/272/2 +f 141/274/2 153/456/2 154/275/2 +f 149/81/1 157/88/1 51/277/1 +f 150/279/1 158/298/1 157/280/1 +f 151/282/1 159/295/1 158/283/1 +f 152/285/1 160/292/1 159/286/1 +f 156/288/3 160/94/3 52/289/3 +f 155/291/3 159/286/3 160/292/3 +f 154/294/3 158/283/3 159/295/3 +f 153/297/3 157/280/3 158/298/3 +f 45/103/3 148/105/3 140/300/3 +f 148/254/3 147/256/3 139/302/3 +f 147/251/3 146/253/3 138/304/3 +f 146/248/3 145/250/3 137/306/3 +f 48/93/5 152/95/5 144/265/5 +f 152/285/5 151/287/5 143/268/5 +f 151/282/5 150/284/5 142/271/5 +f 150/279/5 149/281/5 141/274/5 +f 170/308/1 172/457/1 171/309/1 +f 173/311/2 176/458/2 175/312/2 +f 170/314/5 175/312/5 176/315/5 +f 171/317/3 173/321/3 174/318/3 +f 172/320/6 176/459/6 173/321/6 +f 169/322/4 174/313/4 175/312/4 +f 179/323/1 181/331/1 184/324/1 +f 178/326/2 183/329/2 182/327/2 +f 180/325/5 184/324/5 183/329/5 +f 177/330/3 182/460/3 181/331/3 +f 186/332/1 193/350/1 200/333/1 +f 194/336/4 195/461/4 196/341/4 +f 196/341/4 197/347/4 198/335/4 +f 198/335/4 199/462/4 200/333/4 +f 200/333/4 193/350/4 194/336/4 +f 194/336/4 196/341/4 198/335/4 +f 190/339/6 187/463/6 188/464/6 +f 188/464/6 185/465/6 186/337/6 +f 186/337/6 191/466/6 192/338/6 +f 192/338/6 189/467/6 190/339/6 +f 190/339/6 188/464/6 186/337/6 +f 190/340/2 197/347/2 196/341/2 +f 192/343/5 199/462/5 198/335/5 +f 200/333/7 199/468/7 192/345/7 +f 190/340/8 189/469/8 198/346/8 +f 196/341/9 195/470/9 188/348/9 +f 186/332/10 185/471/10 194/349/10 +f 188/351/3 195/461/3 194/336/3 +f 205/353/2 208/472/2 207/354/2 +f 202/356/5 207/473/5 208/357/5 +f 203/359/3 205/474/3 206/355/3 +f 204/361/6 208/475/6 205/362/6 +f 201/364/4 206/476/4 207/365/4 +f 213/367/2 216/477/2 215/368/2 +f 210/370/5 215/478/5 216/371/5 +f 211/373/3 213/479/3 214/369/3 +f 212/375/6 216/480/6 213/376/6 +f 209/378/4 214/481/4 215/379/4 +f 217/381/2 220/482/2 219/382/2 +f 221/384/2 224/483/2 223/385/2 +f 223/387/11 228/484/11 227/388/11 +f 219/390/11 226/485/11 225/391/11 +f 225/393/3 229/486/3 217/394/3 +f 217/394/12 229/486/12 230/396/12 +f 230/396/5 226/485/5 219/390/5 +f 227/398/3 231/487/3 221/399/3 +f 221/399/12 231/487/12 232/401/12 +f 232/401/5 228/484/5 223/387/5 +f 235/403/1 237/411/1 240/404/1 +f 234/406/2 239/409/2 238/407/2 +f 236/405/5 240/404/5 239/409/5 +f 233/410/3 238/488/3 237/411/3 +f 242/412/1 249/430/1 256/413/1 +f 250/416/4 251/489/4 252/421/4 +f 252/421/4 253/427/4 254/415/4 +f 254/415/4 255/490/4 256/413/4 +f 256/413/4 249/430/4 250/416/4 +f 250/416/4 252/421/4 254/415/4 +f 246/419/6 243/491/6 244/492/6 +f 244/492/6 241/493/6 242/417/6 +f 242/417/6 247/494/6 248/418/6 +f 248/418/6 245/495/6 246/419/6 +f 246/419/6 244/492/6 242/417/6 +f 246/420/2 253/427/2 252/421/2 +f 248/423/5 255/490/5 254/415/5 +f 256/413/7 255/496/7 248/425/7 +f 246/420/8 245/497/8 254/426/8 +f 252/421/9 251/498/9 244/428/9 +f 242/412/10 241/499/10 250/429/10 +f 244/431/3 251/489/3 250/416/3 diff --git a/src/main/resources/assets/hbm/textures/blocks/rail_standard_buffer.png b/src/main/resources/assets/hbm/textures/blocks/rail_standard_buffer.png new file mode 100644 index 0000000000000000000000000000000000000000..a8943aaf877e18d8ebf7dbbae062706411f5d5ab GIT binary patch literal 890 zcmV-=1BLvFP)RX_}Vj^BDl(`#u1m z`kbceMDqK=;{eymKkE2QpCRHTN%Hi>n)DqCZqpwmNm5p~$bP>c^ww~w2SCke0O|oy zGa7(;0Mv{IpdJ7H$zQ8i0BL)Qkq89so6?0jLK+&1eAX0Z{Yh4bb>d z^byaV9QWlg)wltG+r^3scHzKcLj|NAiA!2PcSr`CVR0j`_?2b0HkR;d35)u zyBrl)en_4$`StT#<30TS$8V)E+Qx*gz03uG#XJB2yuO_fyv%U=c;_8-nu=$$fY^`1 za~$A0IfmzXwGKM%Gf=ApgO{1IqfQ$#dRUsT(VG@IzMfyqq4W58k_C?mX1vqd$XhGEEE zU)0)Sqq8Q}Hp#7kchon{iY zr`aA?P1sZ>sAU0FwWrf;QJr9(=T;^UNWKL`bec_csm@9oEQ*3xd?Gr{7P9iU+BSs? zTFq*Ek@B6Lp6dm9i;8?U5 z&;DiF;c$@F;i~t2=B^YLU0yK9|DK}{hnPBS-+++pzV$FKR}