From 0a0af7e3630183b89da34e5b54cd2fddeaf6b4f2 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Thu, 20 Jul 2023 20:41:21 -0500 Subject: [PATCH 01/15] changed concrete bricks and rebar reinforced concrete blast resistances to be more reasonable as per their recipes --- changelog | 1 + src/main/java/com/hbm/blocks/ModBlocks.java | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/changelog b/changelog index ec89d27e1..d6afda003 100644 --- a/changelog +++ b/changelog @@ -9,3 +9,4 @@ * Standard glyphids now have a base health of 100 * Glyphid scouts are now immune to fire and explosive damage, have a 50% damage reduction against projectiles and have passive regeneration * Increased hive block blast resistance, they can no longer be blown up wiith conventional explosives +* Rebar reinforced concrete and concrete bricks now have an appropriate blast resistance. \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 55b367285..c1b4181fb 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1554,9 +1554,9 @@ public class ModBlocks { concrete_asbestos = new BlockGeneric(Material.rock).setBlockName("concrete_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_asbestos"); concrete_super = new BlockUberConcrete().setBlockName("concrete_super").setCreativeTab(MainRegistry.blockTab).setHardness(150.0F).setResistance(10000.0F); concrete_super_broken = new BlockFalling(Material.rock).setBlockName("concrete_super_broken").setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":concrete_super_broken"); - concrete_pillar = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":concrete_pillar_top").setBlockName("concrete_pillar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_pillar_side"); - brick_concrete = new BlockGeneric(Material.rock).setBlockName("brick_concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - brick_concrete_mossy = new BlockGeneric(Material.rock).setBlockName("brick_concrete_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_mossy"); + concrete_pillar = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":concrete_pillar_top").setBlockName("concrete_pillar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_pillar_side"); + brick_concrete = new BlockGeneric(Material.rock).setBlockName("brick_concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(5000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); + brick_concrete_mossy = new BlockGeneric(Material.rock).setBlockName("brick_concrete_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(5000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_mossy"); brick_concrete_cracked = new BlockGeneric(Material.rock).setBlockName("brick_concrete_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(2000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_cracked"); brick_concrete_broken = new BlockGeneric(Material.rock).setBlockName("brick_concrete_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(1500.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_broken"); brick_concrete_marked = new BlockWriting(Material.rock, RefStrings.MODID + ":brick_concrete").setBlockName("brick_concrete_marked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(1500.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_marked"); From 52f39064fc2a9512393f4647c5e3b2abb87c5296 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Fri, 28 Jul 2023 16:23:36 -0500 Subject: [PATCH 02/15] removed the compat for the fluid gauge due to crashes related to the TE. --- .../hbm/blocks/network/FluidDuctGauge.java | 36 +------------------ 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index abf4cc4d1..f9dc2498f 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -15,13 +15,8 @@ import com.hbm.tileentity.network.TileEntityPipeBaseNT; import com.hbm.util.I18nUtil; import api.hbm.fluid.IPipeNet; -import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import li.cil.oc.api.machine.Arguments; -import li.cil.oc.api.machine.Callback; -import li.cil.oc.api.machine.Context; -import li.cil.oc.api.network.SimpleComponent; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -106,8 +101,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL return IBlockMultiPass.getRenderType(); } - @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) - public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver, SimpleComponent { + public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver { private BigInteger lastMeasurement = BigInteger.valueOf(10); private long deltaTick = 0; @@ -151,33 +145,5 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); } - @Override - public String getComponentName() { - return "ntm_fluid_gauge"; - } - - @Callback(direct = true, limit = 16) - @Optional.Method(modid = "OpenComputers") - public Object[] getTick(Context context, Arguments args) { - return new Object[] {deltaTick}; - } - - @Callback(direct = true, limit = 16) - @Optional.Method(modid = "OpenComputers") - public Object[] getSecond(Context context, Arguments args) { - return new Object[] {deltaSecond}; - } - - @Callback(direct = true, limit = 16) - @Optional.Method(modid = "OpenComputers") - public Object[] getType(Context context, Arguments args) { - return new Object[] {I18nUtil.resolveKey(getType().getUnlocalizedName())}; - } - - @Callback(direct = true, limit = 16) - @Optional.Method(modid = "OpenComputers") - public Object[] getInfo(Context context, Arguments args) { - return new Object[] {deltaTick, deltaSecond, I18nUtil.resolveKey(getType().getUnlocalizedName()), xCoord, yCoord, zCoord}; - } } } From eaedb33a77000f5e4efbc2d9f89d0b71d746dd9f Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 1 Aug 2023 23:49:50 -0500 Subject: [PATCH 03/15] Revamped OpenComputers compatibility, the following is a list of changes/additions. Added compatibility to the large launch pad Changed the way that fluids are handled by OC, they now use the internal names of said fluids. Changing over to a more compact function for energy related compatibility, not doing it fully until people have a bit of time to modify their programs. Fixed a minor bug where changing the steam type using OC in a RBMK boiler could potentially make infinite steam. Wiki will be updated for the compatibility on merge of this PR. --- .../tileentity/bomb/TileEntityLaunchPad.java | 18 ++-- .../bomb/TileEntityLaunchTable.java | 84 ++++++++++++++++++- .../machine/TileEntityCoreEmitter.java | 10 ++- .../machine/TileEntityCoreInjector.java | 10 +-- .../machine/TileEntityCoreReceiver.java | 12 ++- .../machine/TileEntityCoreStabilizer.java | 10 ++- .../machine/rbmk/TileEntityRBMKBoiler.java | 4 + .../machine/rbmk/TileEntityRBMKHeater.java | 6 +- .../machine/storage/TileEntityBarrel.java | 4 +- .../storage/TileEntityMachineBattery.java | 26 +++++- .../storage/TileEntityMachineFluidTank.java | 4 +- 11 files changed, 159 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index 9e7084101..d6a31650e 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -280,12 +280,18 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI @Callback @Optional.Method(modid = "OpenComputers") public Object[] getEnergyStored(Context context, Arguments args) { - return new Object[] {getPower()}; + return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } @Callback @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { - return new Object[] {getMaxPower()}; + return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; } @Callback @@ -296,13 +302,15 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI int zCoord2 = slots[1].stackTagCompound.getInteger("zCoord"); // Not sure if i should have this + /* if(xCoord2 == xCoord && zCoord2 == zCoord) { xCoord2 += 1; } + */ return new Object[] {xCoord2, zCoord2}; } - return new Object[] {"Designator not found"}; + return new Object[] {false, "Designator not found"}; } @Callback @Optional.Method(modid = "OpenComputers") @@ -311,9 +319,9 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI slots[1].stackTagCompound.setInteger("xCoord", args.checkInteger(0)); slots[1].stackTagCompound.setInteger("zCoord", args.checkInteger(1)); - return new Object[] {"Success"}; + return new Object[] {true}; } - return new Object[] {"Designator not found"}; + return new Object[] {false, "Designator not found"}; } @Callback diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 71a0d7289..748d63c6c 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -2,6 +2,8 @@ package com.hbm.tileentity.bomb; import java.util.List; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.bomb.LaunchPad; import com.hbm.entity.missile.EntityMissileCustom; import com.hbm.handler.MissileStruct; import com.hbm.interfaces.IFluidAcceptor; @@ -28,9 +30,14 @@ import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.item.IDesignatorItem; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -43,7 +50,8 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent { private ItemStack slots[]; @@ -597,6 +605,80 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide return tanks; } + // do some opencomputer stuff + @Override + public String getComponentName() { + return "large_launch_pad"; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyStored(Context context, Arguments args) { + return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxEnergy(Context context, Arguments args) { + return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getContents(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getName(), tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getName(), solid, maxSolid}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getLaunchInfo(Context context, Arguments args) { + return new Object[] {canLaunch(), isMissileValid(), hasDesignator(), hasFuel()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoords(Context context, Arguments args) { + if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + int xCoord2 = slots[1].stackTagCompound.getInteger("xCoord"); + int zCoord2 = slots[1].stackTagCompound.getInteger("zCoord"); + + //unsure if this is needed, leaving here in case it is + /* + if(xCoord2 == xCoord && zCoord2 == zCoord) { + xCoord2 += 1; + } + */ + + return new Object[] {xCoord2, zCoord2}; + } + return new Object[] {false, "Designator not found"}; + } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] setCoords(Context context, Arguments args) { + if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + slots[1].stackTagCompound.setInteger("xCoord", args.checkInteger(0)); + slots[1].stackTagCompound.setInteger("zCoord", args.checkInteger(1)); + + return new Object[] {true}; + } + return new Object[] {false, "Designator not found"}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] launch(Context context, Arguments args) { + //worldObj.getBlock(xCoord, yCoord, zCoord).explode(worldObj, xCoord, yCoord, zCoord); + ((LaunchPad) ModBlocks.launch_pad).explode(worldObj, xCoord, yCoord, zCoord); + return new Object[] {}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerLaunchTable(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 218168090..4c51759ef 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -279,13 +279,19 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyStored(Context context, Arguments args) { - return new Object[] {getPower()}; + return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { - return new Object[] {getMaxPower()}; + return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; } @Callback(direct = true, limit = 4) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java index 7285639bd..b4fffdb9c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -202,20 +202,20 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") - public Object[] getFirstFuel(Context context, Arguments args) { - return new Object[] {tanks[0].getFill()}; + public Object[] getFuel(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; } @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") - public Object[] getSecondFuel(Context context, Arguments args) { - return new Object[] {tanks[1].getFill()}; + public Object[] getTypes(Context context, Arguments args) { + return new Object[] {tanks[0].getTankType().getName(), tanks[1].getTankType().getName()}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; + return new Object[] {tanks[0].getFill(), tanks[0].getTankType().getName(), tanks[1].getFill(), tanks[1].getTankType().getName()}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index 51b79e242..57fef61d5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -194,13 +194,19 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInput(Context context, Arguments args) { - return new Object[] {joules}; + return new Object[] {joules, "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getOutput(Context context, Arguments args) { - return new Object[] {power}; + return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {joules, getPower()}; //literally only doing this for the consistency between components } @Callback(direct = true, limit = 4) @@ -212,7 +218,7 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {joules, power, tank.getFill()}; + return new Object[] {joules, getPower(), tank.getFill()}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index de41bd82a..694dbd9f1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -176,13 +176,19 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyStored(Context context, Arguments args) { - return new Object[] {power}; + return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { - return new Object[] {maxPower}; + return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; } @Callback(direct = true, limit = 4) diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index 92dd33539..654c7878e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -401,15 +401,19 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I } if(type == 0) { steam.setTankType(Fluids.STEAM); + steam.setFill(0); //too lazy to add a ton of additional code to divide the fill amount, fuck your steam return new Object[] {true}; } else if(type == 1) { steam.setTankType(Fluids.HOTSTEAM); + steam.setFill(0); return new Object[] {true}; } else if(type == 2) { steam.setTankType(Fluids.SUPERHOTSTEAM); + steam.setFill(0); return new Object[] {true}; } else { steam.setTankType(Fluids.ULTRAHOTSTEAM); + steam.setFill(0); return new Object[] {true}; } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java index 618f41a96..e9699b87f 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -312,19 +312,19 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getFillType(Context context, Arguments args) { - return new Object[] {feed.getTankType().getID()}; + return new Object[] {feed.getTankType().getName()}; } @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getExportType(Context context, Arguments args) { - return new Object[] {steam.getTankType().getID()}; + return new Object[] {steam.getTankType().getName()}; } @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getID(), steam.getTankType().getID(), xCoord, yCoord, zCoord}; + return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getName(), steam.getTankType().getName(), xCoord, yCoord, zCoord}; } @Callback(direct = true, limit = 8) diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index c6fea9500..360d25ebe 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -389,12 +389,12 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getTypeStored(Context context, Arguments args) { - return new Object[] {tank.getTankType().getUnlocalizedName()}; + return new Object[] {tank.getTankType().getName()}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getUnlocalizedName()}; + return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 594fec515..334c6806f 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.storage; import api.hbm.energy.*; +import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.MachineBattery; import com.hbm.inventory.container.ContainerMachineBattery; import com.hbm.inventory.gui.GUIMachineBattery; @@ -15,6 +16,7 @@ import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.SimpleComponent; +import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -392,19 +394,35 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I // do some opencomputer stuff @Override public String getComponentName() { - return "ntm_energy_storage"; // need a way to somehow detect the first word of the energy storage block so people wont get confused when it comes to multiple energy storage blocks + Block block = worldObj.getBlock(xCoord, yCoord, zCoord); + if (block.equals(ModBlocks.machine_battery_potato)) { + return "ntm_energy_storage_potato"; + } else if (block.equals(ModBlocks.machine_lithium_battery)) { + return "ntm_energy_storage_lithium"; + } else if (block.equals(ModBlocks.machine_schrabidium_battery)) { + return "ntm_energy_storage_schrabidum"; + } else if (block.equals(ModBlocks.machine_dineutronium_battery)) { + return "ntm_energy_storage_dineutronium"; + } else + return "ntm_energy_storage"; } @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") - public Object[] getEnergyStored(Context context, Arguments args) { - return new Object[] {getPower()}; + public Object[] getEnergyStored(Context context, Arguments args) { //TODO for gamma: when ready remove these deprecated functions in all components + return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { - return new Object[] {getMaxPower()}; + return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; } @Callback(direct = true, limit = 8) diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 1269da0a6..9332cb750 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -487,12 +487,12 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getTypeStored(Context context, Arguments args) { - return new Object[] {tank.getTankType().getUnlocalizedName()}; + return new Object[] {tank.getTankType().getName()}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getUnlocalizedName()}; + return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; } } \ No newline at end of file From 5e1f3b3134a3a571cf0009a4282eec65e5245efd Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Thu, 3 Aug 2023 00:51:12 -0500 Subject: [PATCH 04/15] Makes the new functions direct calls, which I had forgotten to do beforehand. --- .../java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java | 2 +- .../com/hbm/tileentity/machine/TileEntityCoreStabilizer.java | 2 +- .../tileentity/machine/storage/TileEntityMachineBattery.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 4c51759ef..95b972949 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -288,7 +288,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 694dbd9f1..82ce38079 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -185,7 +185,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 334c6806f..15e321eec 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -419,7 +419,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; From 39e37f0676c896df7c6ff3ed441b9672dc0339dd Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Thu, 3 Aug 2023 02:36:58 -0500 Subject: [PATCH 05/15] Fixed a minor bug in the coordinate OC compat for launch pads, also removed a feature because it keeps throwing a NullPointerException and I have no clue how to fix it --- .../hbm/tileentity/bomb/TileEntityLaunchPad.java | 16 ++++++++++++---- .../tileentity/bomb/TileEntityLaunchTable.java | 12 +++++++++--- .../storage/TileEntityMachineBattery.java | 13 ++----------- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index d6a31650e..e69f71203 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -4,6 +4,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.bomb.LaunchPad; import com.hbm.inventory.container.ContainerLaunchPadTier1; import com.hbm.inventory.gui.GUILaunchPadTier1; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemDesingator; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; @@ -298,8 +300,13 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI @Optional.Method(modid = "OpenComputers") public Object[] getCoords(Context context, Arguments args) { if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { - int xCoord2 = slots[1].stackTagCompound.getInteger("xCoord"); - int zCoord2 = slots[1].stackTagCompound.getInteger("zCoord"); + int xCoord2; + int zCoord2; + if (slots[1].stackTagCompound != null) { + xCoord2 = slots[1].stackTagCompound.getInteger("xCoord"); + zCoord2 = slots[1].stackTagCompound.getInteger("zCoord"); + } else + return new Object[] {false}; // Not sure if i should have this /* @@ -307,7 +314,7 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI xCoord2 += 1; } */ - + return new Object[] {xCoord2, zCoord2}; } return new Object[] {false, "Designator not found"}; @@ -316,9 +323,10 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI @Optional.Method(modid = "OpenComputers") public Object[] setCoords(Context context, Arguments args) { if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + slots[1].stackTagCompound = new NBTTagCompound(); slots[1].stackTagCompound.setInteger("xCoord", args.checkInteger(0)); slots[1].stackTagCompound.setInteger("zCoord", args.checkInteger(1)); - + return new Object[] {true}; } return new Object[] {false, "Designator not found"}; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 748d63c6c..fa1018dc7 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -645,10 +645,15 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide @Optional.Method(modid = "OpenComputers") public Object[] getCoords(Context context, Arguments args) { if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { - int xCoord2 = slots[1].stackTagCompound.getInteger("xCoord"); - int zCoord2 = slots[1].stackTagCompound.getInteger("zCoord"); + int xCoord2; + int zCoord2; + if (slots[1].stackTagCompound != null) { + xCoord2 = slots[1].stackTagCompound.getInteger("xCoord"); + zCoord2 = slots[1].stackTagCompound.getInteger("zCoord"); + } else + return new Object[] {false}; - //unsure if this is needed, leaving here in case it is + // Not sure if i should have this /* if(xCoord2 == xCoord && zCoord2 == zCoord) { xCoord2 += 1; @@ -663,6 +668,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide @Optional.Method(modid = "OpenComputers") public Object[] setCoords(Context context, Arguments args) { if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + slots[1].stackTagCompound = new NBTTagCompound(); slots[1].stackTagCompound.setInteger("xCoord", args.checkInteger(0)); slots[1].stackTagCompound.setInteger("zCoord", args.checkInteger(1)); diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 15e321eec..2d05bbf25 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.storage; import api.hbm.energy.*; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.bomb.LaunchPad; import com.hbm.blocks.machine.MachineBattery; import com.hbm.inventory.container.ContainerMachineBattery; import com.hbm.inventory.gui.GUIMachineBattery; @@ -394,17 +395,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I // do some opencomputer stuff @Override public String getComponentName() { - Block block = worldObj.getBlock(xCoord, yCoord, zCoord); - if (block.equals(ModBlocks.machine_battery_potato)) { - return "ntm_energy_storage_potato"; - } else if (block.equals(ModBlocks.machine_lithium_battery)) { - return "ntm_energy_storage_lithium"; - } else if (block.equals(ModBlocks.machine_schrabidium_battery)) { - return "ntm_energy_storage_schrabidum"; - } else if (block.equals(ModBlocks.machine_dineutronium_battery)) { - return "ntm_energy_storage_dineutronium"; - } else - return "ntm_energy_storage"; + return "ntm_energy_storage"; //ok if someone else can figure out how to do this that'd be nice (change the component name based on the type of storage block) } @Callback(direct = true, limit = 8) From 3387cc7f4ec2d282a6182fb6e0361f774d7713cc Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 8 Aug 2023 13:16:25 -0500 Subject: [PATCH 06/15] idk why those imports were there (removed them) --- .../tileentity/machine/storage/TileEntityMachineBattery.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 2d05bbf25..e14db7c8e 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -1,8 +1,6 @@ package com.hbm.tileentity.machine.storage; import api.hbm.energy.*; -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.bomb.LaunchPad; import com.hbm.blocks.machine.MachineBattery; import com.hbm.inventory.container.ContainerMachineBattery; import com.hbm.inventory.gui.GUIMachineBattery; @@ -17,7 +15,6 @@ import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.SimpleComponent; -import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; From e02e28b5d089d164890345087c610dfc0c85ec48 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 8 Aug 2023 13:17:13 -0500 Subject: [PATCH 07/15] Boiler fix and fluid gauge compatibility re-added. --- .../hbm/blocks/network/FluidDuctGauge.java | 23 ++++++++++++++++++- .../machine/rbmk/TileEntityRBMKBoiler.java | 6 +---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index f9dc2498f..dfd617423 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -15,8 +15,13 @@ import com.hbm.tileentity.network.TileEntityPipeBaseNT; import com.hbm.util.I18nUtil; import api.hbm.fluid.IPipeNet; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -101,7 +106,8 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL return IBlockMultiPass.getRenderType(); } - public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver { + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) + public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver, SimpleComponent { private BigInteger lastMeasurement = BigInteger.valueOf(10); private long deltaTick = 0; @@ -145,5 +151,20 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); } + public String getComponentName() { + return "rbmk_boiler"; + } + + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getTransfer(Context context, Arguments args) { + return new Object[] {deltaTick, deltaSecond}; + } + + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {deltaTick, deltaSecond}; + } } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index 654c7878e..44baadde9 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -375,7 +375,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I else if(type == Fluids.HOTSTEAM) {type_1 = "1";} else if(type == Fluids.SUPERHOTSTEAM) {type_1 = "2";} else if(type == Fluids.ULTRAHOTSTEAM) {type_1 = "3";} - else {type_1 = "Steam out-of-bounds";} + else {type_1 = "Unknown Error";} return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill(), type_1, xCoord, yCoord, zCoord}; } @@ -401,19 +401,15 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I } if(type == 0) { steam.setTankType(Fluids.STEAM); - steam.setFill(0); //too lazy to add a ton of additional code to divide the fill amount, fuck your steam return new Object[] {true}; } else if(type == 1) { steam.setTankType(Fluids.HOTSTEAM); - steam.setFill(0); return new Object[] {true}; } else if(type == 2) { steam.setTankType(Fluids.SUPERHOTSTEAM); - steam.setFill(0); return new Object[] {true}; } else { steam.setTankType(Fluids.ULTRAHOTSTEAM); - steam.setFill(0); return new Object[] {true}; } } From 02e80da344281bff6b194b17d4b2bd067fdb0ef1 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 8 Aug 2023 14:14:32 -0500 Subject: [PATCH 08/15] whoops forgot to change the component name (also added the `getFluid()` function to the pipe gauge) --- .../java/com/hbm/blocks/network/FluidDuctGauge.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index dfd617423..948befc56 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -152,7 +152,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL } public String getComponentName() { - return "rbmk_boiler"; + return "ntm_fluid_gauge"; } @Callback(direct = true, limit = 8) @@ -161,10 +161,16 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL return new Object[] {deltaTick, deltaSecond}; } + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] {getType().getName()}; + } + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {deltaTick, deltaSecond}; + return new Object[] {deltaTick, deltaSecond, getType().getName(), xCoord, yCoord, zCoord}; } } } From afd75b26af6831422bdc81839bf8d494e691e139 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 9 Aug 2023 22:28:14 +0200 Subject: [PATCH 09/15] assets, fixes --- src/main/java/com/hbm/main/MainRegistry.java | 4 ++-- .../machine/TileEntityElectrolyser.java | 1 + .../textures/models/projectiles/leadburster.png | Bin 0 -> 983 bytes .../hbm/textures/models/weapons/congolake.png | Bin 0 -> 3306 bytes 4 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/projectiles/leadburster.png create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/congolake.png diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 6b7451986..438847446 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -955,6 +955,8 @@ public class MainRegistry { WeaponConfig.loadFromConfig(config); MobConfig.loadFromConfig(config); StructureConfig.loadFromConfig(config); + + config.save(); try { if(GeneralConfig.enableThermosPreventer && Class.forName("thermos.Thermos") != null) { @@ -967,8 +969,6 @@ public class MainRegistry { + "change Thermos' config anyway so that extra change in NTM's config can't be that big of a burden."); } } catch(ClassNotFoundException e) { } - - config.save(); } private static HashSet ignoreMappings = new HashSet(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index 5f1801c59..8d34ffa2c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -308,6 +308,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn if(this.tanks[3].getFill() < 100) return false; ElectrolysisMetalRecipe recipe = ElectrolyserMetalRecipes.getRecipe(slots[14]); + if(recipe == null) return false; if(leftStack != null) { if(recipe.output1.material != leftStack.material) return false; diff --git a/src/main/resources/assets/hbm/textures/models/projectiles/leadburster.png b/src/main/resources/assets/hbm/textures/models/projectiles/leadburster.png new file mode 100644 index 0000000000000000000000000000000000000000..281f6ca1fb66c9ce9ba6d5cd39dc942f8ce3edae GIT binary patch literal 983 zcmV;|11S87P)pJ(=m_d^9cax z`+n_fSV3=0q;xc&9mZqXy1#+QaUOl&qwo9G5dhGXl*ycs&9!#q4E0{y&1G3Ozpm?6 zBl+3d+^@zwm;r6cC}rS0&qZf2qN8MOGra4%ZB_ZV8QWCW%B9w$Wa$j)%B z!4Z@*eP6?kD0pS(S;^Eo#^!lLJ(WvPbCqNL5d&T^z@Kybv62x!325^?Z+2x*L}z$8 zPxZ*5%d%`4;K9b5q3j%nx)pexNY21Y@(z6pUQ?mT6wB!EWq6(1YmfVt(NQ0e#|JeQ zv7qG!?=qv55Y-?GqHJKKxN7^GL-ku*1wTV8dj(WXV1}qf$;&DSMzk*l!sx0~#%4~~ z!~m7J@K_Y_mGP>d+xGlhX>Lh|S;A;dnJlL_gKD!zWhl3K9gftjY_w~h+TKVH#W3z` zBgGYkYhpoG2(j@IqoN)3&iEur;&mEUP$`}DXB6KnYsl_wb3%4AsG7jTilOK8xvd5> zV?1?hvOQ)_ZFX3?<~*f+66O279PloN`o4e1fD*j%d#*&AzsCu+=`FCoNaFS7HCR$s zrO!$}niDziCsDs9cgWZvQ(;yxxVM~U zlxVL$j`*w*5DZYeT7&45SxLUO608|lYpGP4$JZ}H{!_t%;FW{{P_9-bMVmV1+&T4yO|Y%)Q^p1@U;{3r+2)B-<&PpPv)X-$P$A+?jk zFkqUd@TDr%Rpb6$!!U%(Mn*CGS@-#VR4OwXR>(gySXoBRbr~UZs-a|j&28YF!f5aJ zyA(Vgj~hkJ0qlrrnu>;dX6^a7Qj-mqD!^H{-gIiv>aqX76&4f{@%)1!_10~%0B|qIx@Y4KR5sY002ovPDHLk FV1gw4){+1K literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/congolake.png b/src/main/resources/assets/hbm/textures/models/weapons/congolake.png new file mode 100644 index 0000000000000000000000000000000000000000..dd3c9cd71c018fbcbae3a1710f1cb525d93e3166 GIT binary patch literal 3306 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 literal 0 HcmV?d00001 From 30e2a13f62e6b319cf95b2e7b1608f1006baa1b6 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 10 Aug 2023 15:18:54 +0200 Subject: [PATCH 10/15] fixing mojank spaghetti episode 58304 --- .../entity/projectile/EntityBulletBaseNT.java | 17 +++---- .../entity/projectile/EntityThrowableNT.java | 29 ++++++++---- .../hbm/handler/BulletConfigSyncingUtil.java | 2 + .../handler/guncfg/BulletConfigFactory.java | 13 ++++-- .../hbm/handler/guncfg/Gun20GaugeFactory.java | 1 + .../handler/guncfg/Gun44MagnumFactory.java | 2 +- .../hbm/handler/guncfg/Gun4GaugeFactory.java | 6 +-- .../hbm/handler/guncfg/Gun50BMGFactory.java | 13 ++++-- .../hbm/handler/guncfg/Gun556mmFactory.java | 9 ++-- .../hbm/handler/guncfg/Gun75BoltFactory.java | 2 +- .../hbm/handler/guncfg/GunCannonFactory.java | 2 +- .../handler/guncfg/GunDetonatorFactory.java | 2 +- .../hbm/handler/guncfg/GunEnergyFactory.java | 10 ++-- .../hbm/handler/guncfg/GunFatmanFactory.java | 16 +++---- .../hbm/handler/guncfg/GunGrenadeFactory.java | 18 ++++++- .../com/hbm/handler/guncfg/GunNPCFactory.java | 6 +-- .../hbm/handler/guncfg/GunOSIPRFactory.java | 2 +- .../hbm/handler/guncfg/GunRocketFactory.java | 4 +- .../java/com/hbm/items/ItemAmmoEnums.java | 3 +- .../java/com/hbm/items/weapon/ItemAmmo.java | 1 + .../com/hbm/items/weapon/ItemAmmoArty.java | 2 +- src/main/java/com/hbm/util/TrackerUtil.java | 44 ++++++++++++++++++ .../items/ammo_grenade_leadburster.png | Bin 0 -> 291 bytes 23 files changed, 147 insertions(+), 57 deletions(-) create mode 100644 src/main/java/com/hbm/util/TrackerUtil.java create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_grenade_leadburster.png diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java index 65741dbd4..a1a3a0961 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java @@ -166,6 +166,7 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet @Override protected void entityInit() { + super.entityInit(); //style this.dataWatcher.addObject(16, Byte.valueOf((byte) 0)); //trail @@ -251,11 +252,11 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet if(mop.typeOfHit == mop.typeOfHit.BLOCK) { boolean hRic = rand.nextInt(100) < config.HBRC; - boolean doesRic = config.doesRicochet || hRic; + boolean doesRic = config.doesRicochet && hRic; if(!config.isSpectral && !doesRic) { this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); - this.onBlockImpact(mop.blockX, mop.blockY, mop.blockZ); + this.onBlockImpact(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit); } if(doesRic) { @@ -302,7 +303,7 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet } else { if(!worldObj.isRemote) { this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); - onBlockImpact(mop.blockX, mop.blockY, mop.blockZ); + onBlockImpact(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit); } } @@ -375,13 +376,13 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet } //for when a bullet dies by hitting a block - private void onBlockImpact(int bX, int bY, int bZ) { + private void onBlockImpact(int bX, int bY, int bZ, int sideHit) { if(config.bntImpact != null) - config.bntImpact.behaveBlockHit(this, bX, bY, bZ); + config.bntImpact.behaveBlockHit(this, bX, bY, bZ, sideHit); if(!worldObj.isRemote) { - if(!config.liveAfterImpact && !config.isSpectral && bY > -1) this.setDead(); + if(!config.liveAfterImpact && !config.isSpectral && bY > -1 && !this.inGround) this.setDead(); if(!config.doesPenetrate && bY == -1) this.setDead(); } @@ -472,7 +473,7 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet //for when a bullet dies by hitting an entity private void onEntityImpact(Entity e) { onEntityHurt(e); - onBlockImpact(-1, -1, -1); + onBlockImpact(-1, -1, -1, -1); if(config.bntHit != null) config.bntHit.behaveEntityHit(this, e); @@ -582,6 +583,6 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet public static interface IBulletHurtBehaviorNT { public void behaveEntityHurt(EntityBulletBaseNT bullet, Entity hit); } public static interface IBulletHitBehaviorNT { public void behaveEntityHit(EntityBulletBaseNT bullet, Entity hit); } public static interface IBulletRicochetBehaviorNT { public void behaveBlockRicochet(EntityBulletBaseNT bullet, int x, int y, int z); } - public static interface IBulletImpactBehaviorNT { public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z); } + public static interface IBulletImpactBehaviorNT { public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit); } public static interface IBulletUpdateBehaviorNT { public void behaveUpdate(EntityBulletBaseNT bullet); } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java index fbd99c23c..892e59e79 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java @@ -2,6 +2,8 @@ package com.hbm.entity.projectile; import java.util.List; +import com.hbm.util.TrackerUtil; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -32,7 +34,7 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { public int throwableShake; protected EntityLivingBase thrower; private String throwerName; - private int ticksInGround; + public int ticksInGround; private int ticksInAir; public EntityThrowableNT(World world) { @@ -41,7 +43,17 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { } @Override - protected void entityInit() { } + protected void entityInit() { + this.dataWatcher.addObject(2, Byte.valueOf((byte)0)); + } + + public void setStuckIn(int side) { + this.dataWatcher.updateObject(2, (byte) side); + } + + public int getStuckIn() { + return this.dataWatcher.getWatchableObjectByte(2); + } @Override @SideOnly(Side.CLIENT) @@ -214,10 +226,6 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { } } - this.posX += this.motionX * motionMult(); - this.posY += this.motionY * motionMult(); - this.posZ += this.motionZ * motionMult(); - if(mop != null) { if(mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && this.worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ) == Blocks.portal) { this.setInPortal(); @@ -250,6 +258,10 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { float drag = this.getAirDrag(); double gravity = this.getGravityVelocity(); + this.posX += this.motionX * motionMult(); + this.posY += this.motionY * motionMult(); + this.posZ += this.motionZ * motionMult(); + if(this.isInWater()) { for(int i = 0; i < 4; ++i) { float f = 0.25F; @@ -264,7 +276,6 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { this.motionZ *= (double) drag; this.motionY -= gravity; this.setPosition(this.posX, this.posY, this.posZ); - } } @@ -280,7 +291,7 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { return 5; } - public void getStuck(int x, int y, int z) { + public void getStuck(int x, int y, int z, int side) { this.stuckBlockX = x; this.stuckBlockY = y; this.stuckBlockZ = z; @@ -289,6 +300,8 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { this.motionX = 0; this.motionY = 0; this.motionZ = 0; + this.setStuckIn(side); + TrackerUtil.sendTeleport(worldObj, this); } public double getGravityVelocity() { diff --git a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java index 19987ab65..3c2c2e7a3 100644 --- a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java @@ -68,6 +68,7 @@ public class BulletConfigSyncingUtil { public static int GRENADE_PHOSPHORUS = i++; public static int GRENADE_TRACER = i++; public static int GRENADE_KAMPF = i++; + public static int GRENADE_LEADBURSTER = i++; public static int G12_NORMAL = i++; public static int G12_INCENDIARY = i++; @@ -365,6 +366,7 @@ public class BulletConfigSyncingUtil { configSet.put(GRENADE_NUCLEAR, GunGrenadeFactory.getGrenadeNuclearConfig()); configSet.put(GRENADE_TRACER, GunGrenadeFactory.getGrenadeTracerConfig()); configSet.put(GRENADE_KAMPF, GunGrenadeFactory.getGrenadeKampfConfig()); + configSet.put(GRENADE_LEADBURSTER, GunGrenadeFactory.getGrenadeLeadbursterConfig()); configSet.put(G12_NORMAL, Gun12GaugeFactory.get12GaugeConfig()); configSet.put(G12_INCENDIARY, Gun12GaugeFactory.get12GaugeFireConfig()); diff --git a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java index 01549a613..c4672568d 100644 --- a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java @@ -146,7 +146,7 @@ public class BulletConfigFactory { bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(bullet.worldObj.isRemote) return; @@ -310,12 +310,19 @@ public class BulletConfigFactory { } } + public static void makeFlechette(BulletConfiguration bullet) { + + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + bulletnt.getStuck(x, y, z, sideHit); + }; + } + public static IBulletImpactBehaviorNT getPhosphorousEffect(final int radius, final int duration, final int count, final double motion, float hazeChance) { IBulletImpactBehaviorNT impact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { List hit = bullet.worldObj.getEntitiesWithinAABBExcludingEntity(bullet, AxisAlignedBB.getBoundingBox(bullet.posX - radius, bullet.posY - radius, bullet.posZ - radius, bullet.posX + radius, bullet.posY + radius, bullet.posZ + radius)); @@ -357,7 +364,7 @@ public class BulletConfigFactory { IBulletImpactBehaviorNT impact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { List hit = bullet.worldObj.getEntitiesWithinAABBExcludingEntity(bullet, AxisAlignedBB.getBoundingBox(bullet.posX - radius, bullet.posY - radius, bullet.posZ - radius, bullet.posX + radius, bullet.posY + radius, bullet.posZ + radius)); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java index a985bf636..755296329 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java @@ -147,6 +147,7 @@ public class Gun20GaugeFactory { bullet.style = BulletConfiguration.STYLE_FLECHETTE; bullet.HBRC = 2; bullet.LBRC = 95; + BulletConfigFactory.makeFlechette(bullet); bullet.spentCasing = CASING20GAUGE.clone().register("20GaFlech").setColor(0x2847FF, SpentCasing.COLOR_CASE_BRASS); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java index a0dff1be2..515b1b8bf 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java @@ -223,7 +223,7 @@ public class Gun44MagnumFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaburst"); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java index 191c0eb93..9760fb083 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java @@ -205,7 +205,7 @@ public class Gun4GaugeFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaburst"); @@ -251,7 +251,7 @@ public class Gun4GaugeFactory { bullet.trail = 1; bullet.explosive = 0.0F; - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { if(bulletnt.worldObj.isRemote) return; @@ -283,7 +283,7 @@ public class Gun4GaugeFactory { bullet.trail = 1; bullet.explosive = 0.0F; - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { if(bulletnt.worldObj.isRemote) return; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java index beda66771..f9e0a191b 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java @@ -62,7 +62,7 @@ public class Gun50BMGFactory { bullet.leadChance = 20; bullet.blockDamage = false; - bullet.bntImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 2.0F, false, false); + bullet.bntImpact = (projectile, x, y, z, sideHit) -> projectile.worldObj.newExplosion(projectile, x, y, z, 2.0F, false, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaStock"); @@ -76,7 +76,7 @@ public class Gun50BMGFactory { bullet.ammo.meta = 1; bullet.incendiary = 10; - bullet.bntImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false); + bullet.bntImpact = (projectile, x, y, z, sideHit) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaInc"); @@ -91,7 +91,7 @@ public class Gun50BMGFactory { bullet.ammo.meta = 2; bullet.explosive = 25; bullet.destroysBlocks = true; - bullet.bntImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 25.0F, true, false); + bullet.bntImpact = (projectile, x, y, z, sideHit) -> projectile.worldObj.newExplosion(projectile, x, y, z, 25.0F, true, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaExp"); @@ -264,7 +264,7 @@ public class Gun50BMGFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaburst"); @@ -368,7 +368,7 @@ public class Gun50BMGFactory { bulletnt.worldObj.spawnEntityInWorld(meteor); }; - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { if(bulletnt.worldObj.isRemote) return; @@ -397,6 +397,7 @@ public class Gun50BMGFactory { bullet.dmgMin = 50; bullet.dmgMax = 54; bullet.style = bullet.STYLE_FLECHETTE; + BulletConfigFactory.makeFlechette(bullet); bullet.spentCasing = CASING50BMG.clone().register("50BMGFlech"); @@ -412,6 +413,7 @@ public class Gun50BMGFactory { bullet.dmgMin = 60; bullet.dmgMax = 64; bullet.style = bullet.STYLE_FLECHETTE; + BulletConfigFactory.makeFlechette(bullet); bullet.bntHit = (bulletnt, hit) -> { @@ -437,6 +439,7 @@ public class Gun50BMGFactory { bullet.dmgMin = 60; bullet.dmgMax = 64; bullet.style = bullet.STYLE_FLECHETTE; + BulletConfigFactory.makeFlechette(bullet); bullet.bntHit = (bulletnt, hit) -> { diff --git a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java index d983998e8..fafa0b642 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java @@ -182,7 +182,7 @@ public class Gun556mmFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaburst"); @@ -266,7 +266,7 @@ public class Gun556mmFactory { bulletnt.worldObj.spawnEntityInWorld(meteor); }; - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { if(bulletnt.worldObj.isRemote) return; @@ -322,6 +322,7 @@ public class Gun556mmFactory { bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE_INCENDIARY)); bullet.incendiary = 5; + BulletConfigFactory.makeFlechette(bullet); bullet.spentCasing = CASING556.clone().register("556FlecInc"); @@ -340,7 +341,7 @@ public class Gun556mmFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaburst"); @@ -395,7 +396,7 @@ public class Gun556mmFactory { bulletnt.worldObj.spawnEntityInWorld(meteor); }; - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { if(bulletnt.worldObj.isRemote) return; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java index b3d9bae6f..cc05924f6 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java @@ -134,7 +134,7 @@ public class Gun75BoltFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaburst"); diff --git a/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java index 2d8710522..411574bbe 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java @@ -84,7 +84,7 @@ public class GunCannonFactory { bullet.dmgMin = 100; bullet.dmgMax = 150; - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); }; diff --git a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java index ab25f43bc..093a3d90b 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java @@ -88,7 +88,7 @@ public class GunDetonatorFactory { bullet.doesRicochet = false; bullet.setToBolt(BulletConfiguration.BOLT_LASER); - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { World world = bulletnt.worldObj; if(!world.isRemote && y > 0) { diff --git a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java index 1e7d4342d..0ea31f450 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java @@ -431,7 +431,7 @@ public class GunEnergyFactory { bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { NBTTagCompound data = new NBTTagCompound(); @@ -554,7 +554,7 @@ public class GunEnergyFactory { bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { @@ -632,7 +632,7 @@ public class GunEnergyFactory { bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { @@ -721,7 +721,7 @@ public class GunEnergyFactory { bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { @@ -812,7 +812,7 @@ public class GunEnergyFactory { bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { ExplosionChaos.explodeZOMG(bullet.worldObj, (int)Math.floor(bullet.posX), (int)Math.floor(bullet.posY), (int)Math.floor(bullet.posZ), 5); diff --git a/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java b/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java index e068b15f4..5ed0b21db 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java @@ -135,7 +135,7 @@ public class GunFatmanFactory { bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_MEDIUM); } }; @@ -151,7 +151,7 @@ public class GunFatmanFactory { bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_LOW); } }; @@ -167,7 +167,7 @@ public class GunFatmanFactory { bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_HIGH); } }; @@ -187,7 +187,7 @@ public class GunFatmanFactory { bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); } }; @@ -203,7 +203,7 @@ public class GunFatmanFactory { bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_SAFE); } }; @@ -220,7 +220,7 @@ public class GunFatmanFactory { bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { @@ -252,7 +252,7 @@ public class GunFatmanFactory { bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { @@ -503,7 +503,7 @@ public class GunFatmanFactory { bullet.style = BulletConfiguration.STYLE_BF; bullet.bntImpact = new IBulletImpactBehaviorNT() { - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { + @Override public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { if(!bullet.worldObj.isRemote) { diff --git a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java index d65f964e9..2d31dca38 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java @@ -60,6 +60,7 @@ public class GunGrenadeFactory { config.config.add(BulletConfigSyncingUtil.GRENADE_NUCLEAR); config.config.add(BulletConfigSyncingUtil.GRENADE_TRACER); config.config.add(BulletConfigSyncingUtil.GRENADE_KAMPF); + config.config.add(BulletConfigSyncingUtil.GRENADE_LEADBURSTER); config.durability = 300; config.ejector = EJECTOR_LAUNCHER; @@ -211,7 +212,7 @@ public class GunGrenadeFactory { bullet.velocity = 4; bullet.explosive = 0.0F; - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); }; @@ -253,4 +254,19 @@ public class GunGrenadeFactory { return bullet; } + + public static BulletConfiguration getGrenadeLeadbursterConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.LEADBURSTER)); + bullet.spread = 0.0F; + bullet.gravity = 0.01D; + bullet.explosive = 0F; + bullet.style = BulletConfiguration.STYLE_APDS; + bullet.doesRicochet = false; + BulletConfigFactory.makeFlechette(bullet); + + return bullet; + } } diff --git a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java index 8a6bffe40..d7fff5e2b 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java @@ -124,7 +124,7 @@ public class GunNPCFactory { bullet.vPFX = "reddust"; bullet.damageType = ModDamageSource.s_laser; - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { if(bulletnt.worldObj.isRemote) return; @@ -252,7 +252,7 @@ public class GunNPCFactory { if(target != null) { if(bullet.getDistanceSqToEntity(target) < 5) { - bullet.getConfig().bntImpact.behaveBlockHit(bullet, -1, -1, -1); + bullet.getConfig().bntImpact.behaveBlockHit(bullet, -1, -1, -1, -1); bullet.setDead(); return; } @@ -306,7 +306,7 @@ public class GunNPCFactory { } }; - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { bulletnt.worldObj.playSoundEffect(bulletnt.posX, bulletnt.posY, bulletnt.posZ, "hbm:entity.ufoBlast", 5.0F, 0.9F + bulletnt.worldObj.rand.nextFloat() * 0.2F); bulletnt.worldObj.playSoundEffect(bulletnt.posX, bulletnt.posY, bulletnt.posZ, "fireworks.blast", 5.0F, 0.5F); diff --git a/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java b/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java index 720a57e2c..47c3e698c 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java @@ -127,7 +127,7 @@ public class GunOSIPRFactory { }; - bullet.bntImpact = (ball, x, y, z) -> { + bullet.bntImpact = (ball, x, y, z, sideHit) -> { final Block block = ball.worldObj.getBlock(x, y, z); if(block instanceof RedBarrel) ((RedBarrel) block).explode(ball.worldObj, x, y, z); diff --git a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java index cea0490c3..b6b0714dd 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java @@ -284,7 +284,7 @@ public class GunRocketFactory { bullet.incendiary = 0; bullet.trail = 7; - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_MEDIUM); }; @@ -395,7 +395,7 @@ public class GunRocketFactory { bullet.incendiary = 0; bullet.trail = 7; - bullet.bntImpact = (bulletnt, x, y, z) -> { + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { if(bulletnt.worldObj.isRemote) return; diff --git a/src/main/java/com/hbm/items/ItemAmmoEnums.java b/src/main/java/com/hbm/items/ItemAmmoEnums.java index 8ef0638d7..54ad9f1c6 100644 --- a/src/main/java/com/hbm/items/ItemAmmoEnums.java +++ b/src/main/java/com/hbm/items/ItemAmmoEnums.java @@ -186,7 +186,8 @@ public class ItemAmmoEnums { FINNED("ammo_grenade_finned", AmmoItemTrait.PRO_GRAVITY, AmmoItemTrait.CON_RADIUS), NUCLEAR("ammo_grenade_nuclear", AmmoItemTrait.PRO_NUCLEAR, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.CON_HEAVY_WEAR), TRACER("ammo_grenade_tracer", AmmoItemTrait.NEU_BLANK), - KAMPF("ammo_grenade_kampf", AmmoItemTrait.PRO_ROCKET_PROPELLED, AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.CON_WEAR); + KAMPF("ammo_grenade_kampf", AmmoItemTrait.PRO_ROCKET_PROPELLED, AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.CON_WEAR), + LEADBURSTER("ammo_grenade_leadburster", AmmoItemTrait.NEU_LEADBURSTER, AmmoItemTrait.CON_NO_EXPLODE1); private final Set traits; private final String unloc; diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmo.java b/src/main/java/com/hbm/items/weapon/ItemAmmo.java index f83ea596c..eebc241a8 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmo.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmo.java @@ -65,6 +65,7 @@ public class ItemAmmo extends ItemEnumMulti { NEU_STARMETAL, NEU_TRACER, NEU_UHH, + NEU_LEADBURSTER, NEU_WARCRIME1, NEU_WARCRIME2, PRO_ACCURATE1, diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java index d4d263fa5..bb62a11b5 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java @@ -305,7 +305,7 @@ public class ItemAmmoArty extends Item { this.itemTypes[CARGO] = new ArtilleryShell("ammo_arty_cargo", SpentCasing.COLOR_CASE_16INCH) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { if(mop.typeOfHit == MovingObjectType.BLOCK) { shell.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); - shell.getStuck(mop.blockX, mop.blockY, mop.blockZ); + shell.getStuck(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit); } }}; diff --git a/src/main/java/com/hbm/util/TrackerUtil.java b/src/main/java/com/hbm/util/TrackerUtil.java new file mode 100644 index 000000000..9889d0c6e --- /dev/null +++ b/src/main/java/com/hbm/util/TrackerUtil.java @@ -0,0 +1,44 @@ +package com.hbm.util; + +import cpw.mods.fml.relauncher.ReflectionHelper; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityTracker; +import net.minecraft.entity.EntityTrackerEntry; +import net.minecraft.network.play.server.S18PacketEntityTeleport; +import net.minecraft.util.IntHashMap; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; + +/** + * This absolute fucking mess of a class is the direct consequence of mojank's terrible entity tracker that allows for 0 flexibility with how entities are synced. + * + * @author hbm + */ +public class TrackerUtil { + + /** Grabs the tracker entry from the given entity */ + public static EntityTrackerEntry getTrackerEntry(WorldServer world, int entityId) { + EntityTracker entitytracker = world.getEntityTracker(); + IntHashMap map = ReflectionHelper.getPrivateValue(EntityTracker.class, entitytracker, "trackedEntityIDs", "field_72794_c"); + EntityTrackerEntry entry = (EntityTrackerEntry) map.lookup(entityId); + return entry; + } + + /** Force-teleports the given entity using the tracker, resetting the tick count to 0 to prevent movement during this tick */ + public static void sendTeleport(World world, Entity e) { + + if(world instanceof WorldServer) { + WorldServer server = (WorldServer) world; + EntityTrackerEntry entry = getTrackerEntry(server, e.getEntityId()); + int xScaled = e.myEntitySize.multiplyBy32AndRound(e.posX); + int yScaled = MathHelper.floor_double(e.posY * 32.0D); + int zScaled = e.myEntitySize.multiplyBy32AndRound(e.posZ); + int yaw = MathHelper.floor_float(e.rotationYaw * 256.0F / 360.0F); + int pitch = MathHelper.floor_float(e.rotationPitch * 256.0F / 360.0F); + entry.func_151259_a(new S18PacketEntityTeleport(e.getEntityId(), xScaled, yScaled, zScaled, (byte)yaw, (byte)pitch)); + //this prevents the tracker from sending movement updates in the same tick + entry.ticks = 0; + } + } +} diff --git a/src/main/resources/assets/hbm/textures/items/ammo_grenade_leadburster.png b/src/main/resources/assets/hbm/textures/items/ammo_grenade_leadburster.png new file mode 100644 index 0000000000000000000000000000000000000000..dd2737ccb2bea3565b4261ce3e531e47394a1a8f GIT binary patch literal 291 zcmV+;0o?wHP)Vy(qmOG@bkd<)2$=NVO{s;bM7 z0wATtvMc}?V{SnTfMFQS9x{$2ecxY#Y$qHcBC<)>*n^%utk zJf6@whpHkXh{$gXyar@Qj#ZVWY3>2`!_GMX+O}Q2_fLji`fc#=C8dO_K6&xy23ax2 p&6DF6x8%KF>$?6Nko7MRfFH!Cb%!?pgY5tS002ovPDHLkV1k~{c69&% literal 0 HcmV?d00001 From 3b94f3dafd15817f99ce49fdc09b1180c585e7b9 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 11 Aug 2023 12:02:18 +0200 Subject: [PATCH 11/15] 40mm leadburster --- .../entity/projectile/EntityThrowableNT.java | 43 ++++---- .../com/hbm/handler/guncfg/Gun9mmFactory.java | 2 +- .../hbm/handler/guncfg/GunGrenadeFactory.java | 103 +++++++++++++++++- src/main/java/com/hbm/items/ModItems.java | 3 + src/main/java/com/hbm/lib/HbmCollection.java | 4 +- src/main/resources/assets/hbm/lang/en_US.lang | 2 +- .../assets/hbm/textures/items/boltgun.png | Bin 0 -> 324 bytes .../assets/hbm/textures/items/gun_ar15.png | Bin 0 -> 208 bytes .../hbm/textures/items/gun_bio_revolver.png | Bin 0 -> 309 bytes .../assets/hbm/textures/items/gun_coilgun.png | Bin 0 -> 341 bytes .../assets/hbm/textures/items/gun_flamer.png | Bin 0 -> 304 bytes .../assets/hbm/textures/items/gun_spas12.png | Bin 0 -> 227 bytes 12 files changed, 132 insertions(+), 25 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/boltgun.png create mode 100644 src/main/resources/assets/hbm/textures/items/gun_ar15.png create mode 100644 src/main/resources/assets/hbm/textures/items/gun_bio_revolver.png create mode 100644 src/main/resources/assets/hbm/textures/items/gun_coilgun.png create mode 100644 src/main/resources/assets/hbm/textures/items/gun_flamer.png create mode 100644 src/main/resources/assets/hbm/textures/items/gun_spas12.png diff --git a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java index 892e59e79..15cda441f 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java @@ -234,27 +234,30 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { } } - float hyp = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - for(this.rotationPitch = (float) (Math.atan2(this.motionY, (double) hyp) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { - ; + if(!this.onGround) { + float hyp = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + + for(this.rotationPitch = (float) (Math.atan2(this.motionY, (double) hyp) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { + ; + } + + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { + this.prevRotationPitch += 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw < -180.0F) { + this.prevRotationYaw -= 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { + this.prevRotationYaw += 360.0F; + } + + this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; + this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; } - - while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { - this.prevRotationPitch += 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw < -180.0F) { - this.prevRotationYaw -= 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { - this.prevRotationYaw += 360.0F; - } - - this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; - this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; + float drag = this.getAirDrag(); double gravity = this.getGravityVelocity(); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java index 827950fd8..2e7c68cc4 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java @@ -44,7 +44,7 @@ public class Gun9mmFactory { config.reloadSoundEnd = false; config.name = "mp40"; - config.manufacturer = EnumGunManufacturer.NAZI; + config.manufacturer = EnumGunManufacturer.ERFURT; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.P9_NORMAL); diff --git a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java index 2d31dca38..d6516af60 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java @@ -2,6 +2,7 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; @@ -14,14 +15,20 @@ import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; +import com.hbm.util.TrackerUtil; + +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; public class GunGrenadeFactory { - + private static final CasingEjector EJECTOR_LAUNCHER; + private static final CasingEjector EJECTOR_CONGOLAKE; private static final SpentCasing CASING40MM; static { EJECTOR_LAUNCHER = new CasingEjector().setAngleRange(0.02F, 0.03F).setAfterReload(); + EJECTOR_CONGOLAKE = new CasingEjector().setMotion(0.3, 0.1, 0).setAngleRange(0.02F, 0.03F).setDelay(15); CASING40MM = new SpentCasing(CasingType.STRAIGHT).setScale(4F, 4F, 3F).setBounceMotion(0.02F, 0.03F).setColor(0x777777).setupSmoke(1F, 0.5D, 60, 40); } @@ -67,6 +74,47 @@ public class GunGrenadeFactory { return config; } + + public static GunConfiguration getCongoConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 30; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_MANUAL; + config.reloadDuration = 20; + config.firingDuration = 0; + config.ammoCap = 4; + config.reloadType = GunConfiguration.RELOAD_SINGLE; + config.allowsInfinity = true; + config.crosshair = Crosshair.L_CIRCUMFLEX; + config.firingSound = "hbm:weapon.hkShoot"; + config.reloadSound = GunConfiguration.RSOUND_GRENADE; + config.reloadSoundEnd = false; + + config.name = "congoLake"; + config.manufacturer = EnumGunManufacturer.NAWS; + + config.config = new ArrayList(); + config.config.add(BulletConfigSyncingUtil.GRENADE_NORMAL); + config.config.add(BulletConfigSyncingUtil.GRENADE_HE); + config.config.add(BulletConfigSyncingUtil.GRENADE_INCENDIARY); + config.config.add(BulletConfigSyncingUtil.GRENADE_PHOSPHORUS); + config.config.add(BulletConfigSyncingUtil.GRENADE_CHEMICAL); + config.config.add(BulletConfigSyncingUtil.GRENADE_CONCUSSION); + config.config.add(BulletConfigSyncingUtil.GRENADE_FINNED); + config.config.add(BulletConfigSyncingUtil.GRENADE_SLEEK); + config.config.add(BulletConfigSyncingUtil.GRENADE_NUCLEAR); + config.config.add(BulletConfigSyncingUtil.GRENADE_TRACER); + config.config.add(BulletConfigSyncingUtil.GRENADE_KAMPF); + config.config.add(BulletConfigSyncingUtil.GRENADE_LEADBURSTER); + config.durability = 1500; + + config.ejector = EJECTOR_CONGOLAKE; + + return config; + } public static BulletConfiguration getGrenadeConfig() { @@ -265,7 +313,58 @@ public class GunGrenadeFactory { bullet.explosive = 0F; bullet.style = BulletConfiguration.STYLE_APDS; bullet.doesRicochet = false; - BulletConfigFactory.makeFlechette(bullet); + + bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + + Vec3 vec = Vec3.createVectorHelper(0, 0, 1); + vec.rotateAroundX((float) -Math.toRadians(bulletnt.rotationPitch)); + vec.rotateAroundY((float) Math.toRadians(bulletnt.rotationYaw)); + + bulletnt.posX -= vec.xCoord * 0.1; + bulletnt.posY -= vec.yCoord * 0.1; + bulletnt.posZ -= vec.zCoord * 0.1; + + bulletnt.getStuck(x, y, z, sideHit); + }; + + bullet.bntUpdate = (bulletnt) -> { + if(bulletnt.worldObj.isRemote) return; + + switch(bulletnt.getStuckIn()) { + case 0: bulletnt.rotationPitch = (float) (90); break; + case 1: bulletnt.rotationPitch = (float) (-90); break; + case 2: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = 0; break; + case 3: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = (float) 180; break; + case 4: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = 90; break; + case 5: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = (float) -90; break; + } + + if(bulletnt.ticksInGround < 20) return; + int timer = bulletnt.ticksInGround - 20; + if(timer > 60) return; + + for(int i = 0; i < 5; i++) { + Vec3 vec = Vec3.createVectorHelper(0, 1, 0); + vec.rotateAroundX((float) Math.toRadians(11.25 * i)); + vec.rotateAroundZ((float) -Math.toRadians(13 * timer)); + vec.rotateAroundX((float) (bulletnt.rotationPitch * Math.PI / 180D)); + vec.rotateAroundY((float) (bulletnt.rotationYaw * Math.PI / 180)); + + EntityBulletBaseNT pellet = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.R556_NORMAL); + double dist = 0.5; + pellet.setPosition(bulletnt.posX + vec.xCoord * dist, bulletnt.posY + vec.yCoord * dist, bulletnt.posZ + vec.zCoord * dist); + double vel = 0.5; + pellet.motionX = vec.xCoord * vel; + pellet.motionY = vec.yCoord * vel; + pellet.motionZ = vec.zCoord * vel; + + float hyp = MathHelper.sqrt_double(pellet.motionX * pellet.motionX + pellet.motionZ * pellet.motionZ); + pellet.prevRotationYaw = pellet.rotationYaw = (float) (Math.atan2(pellet.motionX, pellet.motionZ) * 180.0D / Math.PI); + pellet.prevRotationPitch = pellet.rotationPitch = (float) (Math.atan2(pellet.motionY, (double) hyp) * 180.0D / Math.PI); + + bulletnt.worldObj.spawnEntityInWorld(pellet); + } + }; return bullet; } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 8ec82b805..f4be014fc 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1522,6 +1522,7 @@ public class ModItems { public static Item gun_panzerschreck; public static Item gun_quadro; public static Item gun_hk69; + public static Item gun_congolake; public static Item gun_stinger; public static Item gun_skystinger; public static Item gun_revolver; @@ -4127,6 +4128,7 @@ public class ModItems { gun_panzerschreck = new ItemGunBase(GunRocketFactory.getPanzConfig()).setUnlocalizedName("gun_panzerschreck").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_panzerschreck"); gun_quadro = new ItemGunBase(GunRocketFactory.getQuadroConfig()).setUnlocalizedName("gun_quadro").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_quadro"); gun_hk69 = new ItemGunBase(GunGrenadeFactory.getHK69Config()).setUnlocalizedName("gun_hk69").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hk69"); + gun_congolake = new ItemGunBase(GunGrenadeFactory.getHK69Config()).setUnlocalizedName("gun_congolake").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_congolake"); gun_stinger = new ItemGunBase(GunRocketHomingFactory.getStingerConfig()).setUnlocalizedName("gun_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_stinger"); gun_skystinger = new ItemGunBase(GunRocketHomingFactory.getSkyStingerConfig()).setUnlocalizedName("gun_skystinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_skystinger"); gun_revolver = new ItemGunBase(Gun357MagnumFactory.getRevolverConfig()).setUnlocalizedName("gun_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver"); @@ -6992,6 +6994,7 @@ public class ModItems { GameRegistry.registerItem(gun_panzerschreck, gun_panzerschreck.getUnlocalizedName()); GameRegistry.registerItem(gun_quadro, gun_quadro.getUnlocalizedName()); GameRegistry.registerItem(gun_hk69, gun_hk69.getUnlocalizedName()); + GameRegistry.registerItem(gun_congolake, gun_congolake.getUnlocalizedName()); GameRegistry.registerItem(gun_stinger, gun_stinger.getUnlocalizedName()); GameRegistry.registerItem(gun_fatman, gun_fatman.getUnlocalizedName()); GameRegistry.registerItem(gun_proto, gun_proto.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/lib/HbmCollection.java b/src/main/java/com/hbm/lib/HbmCollection.java index dba947b9b..6472f8338 100644 --- a/src/main/java/com/hbm/lib/HbmCollection.java +++ b/src/main/java/com/hbm/lib/HbmCollection.java @@ -133,8 +133,10 @@ public class HbmCollection { METRO, /**MWT Prototype Labs**/ MWT, + /**Naval Air Weapons Station**/ + NAWS, /**Erfurter Maschinenfabrik Geipel**/ - NAZI, + ERFURT, /**No manufacturer, just puts "-" **/ NONE, /**OxfordEM Technologies**/ diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 9c2194b06..a6bd587a5 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1103,7 +1103,7 @@ gun.make.MANN=Open Mann Co. gun.make.MAXIM=Hiram Maxim gun.make.METRO=Metro Gunsmiths gun.make.MWT=MWT Prototype Labs -gun.make.NAZI=Erfurter Maschinenfabrik Geipel +gun.make.ERFURT=Erfurter Maschinenfabrik Geipel gun.make.NONE=- gun.make.RAYTHEON=Raytheon Missile Systems gun.make.REMINGTON=Remington Arms diff --git a/src/main/resources/assets/hbm/textures/items/boltgun.png b/src/main/resources/assets/hbm/textures/items/boltgun.png new file mode 100644 index 0000000000000000000000000000000000000000..a45e128a7d3b6ff0fb8223ba17365eb136ef8893 GIT binary patch literal 324 zcmV-K0lWT*P)OX;v3`+(CiJ|P|O8zPdZDfNr!0h3EcVy zZr~27(oh%-G?CISMYNX9Vtyp@s?|#0?0Yk_@Jxw_ew1;{K`EsHJkKMJW2YXe$~A{H zO&x$N%N{jh%ec8mmQ@ka#>FV`*>7_ImebkASe45%{N@h<=)Lv<$g>^M`=?dJy#$+n z0IZ?}fW9{%n1@z0w+=q+^1{g~O3*b$Dq}3a3@{ESx;yxb@Rh6?1-=#M=Df>A!0w4# z2O2fMe~LH&`)!Vf!a?I2Y1UlY06G3VNqH4A*T0v0edHk&_i z%{nnbs^sWV)4y}mgpS=c{$5l3E`{x1_1^t5N0!tF>2ER-3+}io2Bdz!k!W~5yEMIC zB!O$@m(J6>dzW?zHE7(*I)3re;tXvu1&2v*s;jGo8Gghm*lVqSb=5&Am+3w?%Ykj@ zwcjqBnqt6s;PvgztP4W=7{bqOxxAS5isJOmm%Uc^8*?%2u+U@(aJ{*+`(k@hy>-4s zng4v=^Apd>=*>CxC-%>$A0JJt62u=_3GM2;$Zi}}?>f)za!c_%XQ00sJYD@<);T3K F0RRF~esll; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/gun_coilgun.png b/src/main/resources/assets/hbm/textures/items/gun_coilgun.png new file mode 100644 index 0000000000000000000000000000000000000000..5c130d10963b9331ac31134f9c52517161628143 GIT binary patch literal 341 zcmV-b0jmCqP)s^l9Igqb{UsPIb`HJH zbp(&=nC_UO;x(8VTJ&rk=MPtPuu3Q#JbHKe1P zLubzV%V50nxn8)mfmDEplUD!)kja$3HE0D9dhvW~sbO~mz}3Q~Zw<&~%G8NCp5&qq z(9w%wcSBN`0EAA|D#;GOp5)>;h~3L;A+@pAo}rS$q&!Cfb}whV3IKSC9z`Rdl>R1n zsYfQ$ZAY<;XJYS!pSpOGA}P#0^VFGFGe=DTfcwuIGWk)}Z|Ad}e&Y!v*H`-HaJ$*o nzO*qxXg5ByiO)?RDvw{lA0>0#3}YHdLT;GDxb7uakv04R#W z1Egs>H#zxx;Ze=ZB3ZO;tHkDEficDdeEnVsik1wfCS_TU`@ZjI+ErDJTu|V_100MY z%d#0LvDQ-8wHgZq1o+8w0M7gUsuBfo&GX=H-?y6rFvj?IC2!yRS&0}#3rvu%>#)`? z!T`Hhung2N48(Cvk|Y8AGV(X3Qz>(?I-h*5&G`c~~M_$0000+FmO9Jz~7s z(#0W;_B1I1UCH3->gTe~DWM4f0fAA1 literal 0 HcmV?d00001 From 98ec88678ae94848a652c73374e64549bed10b45 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 11 Aug 2023 14:18:23 +0200 Subject: [PATCH 12/15] leadburster tweaks --- .../com/hbm/handler/BulletConfiguration.java | 1 + .../hbm/handler/guncfg/GunGrenadeFactory.java | 17 +- src/main/java/com/hbm/items/ModItems.java | 2 +- .../assets/hbm/models/trinkets/lantern.obj | 500 ++++++++++++++++++ .../hbm/textures/models/trinkets/lantern.png | Bin 0 -> 288 bytes 5 files changed, 513 insertions(+), 7 deletions(-) create mode 100644 src/main/resources/assets/hbm/models/trinkets/lantern.obj create mode 100644 src/main/resources/assets/hbm/textures/models/trinkets/lantern.png diff --git a/src/main/java/com/hbm/handler/BulletConfiguration.java b/src/main/java/com/hbm/handler/BulletConfiguration.java index 1a5c07498..9a08d0c03 100644 --- a/src/main/java/com/hbm/handler/BulletConfiguration.java +++ b/src/main/java/com/hbm/handler/BulletConfiguration.java @@ -140,6 +140,7 @@ public class BulletConfiguration implements Cloneable { public static final int STYLE_BLADE = 15; public static final int STYLE_BARREL = 16; public static final int STYLE_TAU = 17; + public static final int STYLE_LEADBURSTER = 18; public static final int PLINK_NONE = 0; public static final int PLINK_BULLET = 1; diff --git a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java index d6516af60..0432fc147 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java @@ -15,7 +15,6 @@ import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; -import com.hbm.util.TrackerUtil; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; @@ -50,7 +49,6 @@ public class GunGrenadeFactory { config.crosshair = Crosshair.L_CIRCUMFLEX; config.firingSound = "hbm:weapon.hkShoot"; config.reloadSound = GunConfiguration.RSOUND_GRENADE; - config.reloadSoundEnd = false; config.name = "gPistol"; config.manufacturer = EnumGunManufacturer.H_AND_K; @@ -311,14 +309,15 @@ public class GunGrenadeFactory { bullet.spread = 0.0F; bullet.gravity = 0.01D; bullet.explosive = 0F; - bullet.style = BulletConfiguration.STYLE_APDS; + bullet.style = BulletConfiguration.STYLE_LEADBURSTER; bullet.doesRicochet = false; + bullet.doesPenetrate = true; bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { Vec3 vec = Vec3.createVectorHelper(0, 0, 1); - vec.rotateAroundX((float) -Math.toRadians(bulletnt.rotationPitch)); - vec.rotateAroundY((float) Math.toRadians(bulletnt.rotationYaw)); + vec.rotateAroundX((float) (bulletnt.rotationPitch * Math.PI / 180D)); + vec.rotateAroundY((float) (bulletnt.rotationYaw * Math.PI / 180)); bulletnt.posX -= vec.xCoord * 0.1; bulletnt.posY -= vec.yCoord * 0.1; @@ -343,6 +342,12 @@ public class GunGrenadeFactory { int timer = bulletnt.ticksInGround - 20; if(timer > 60) return; + Vec3 offset = Vec3.createVectorHelper(0, 0, -0.5); + offset.rotateAroundX((float) (bulletnt.rotationPitch * Math.PI / 180D)); + offset.rotateAroundY((float) (bulletnt.rotationYaw * Math.PI / 180)); + + bulletnt.worldObj.playSoundEffect(bulletnt.posX, bulletnt.posY, bulletnt.posZ, "hbm:weapon.silencerShoot", 2F, 1F); + for(int i = 0; i < 5; i++) { Vec3 vec = Vec3.createVectorHelper(0, 1, 0); vec.rotateAroundX((float) Math.toRadians(11.25 * i)); @@ -352,7 +357,7 @@ public class GunGrenadeFactory { EntityBulletBaseNT pellet = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.R556_NORMAL); double dist = 0.5; - pellet.setPosition(bulletnt.posX + vec.xCoord * dist, bulletnt.posY + vec.yCoord * dist, bulletnt.posZ + vec.zCoord * dist); + pellet.setPosition(bulletnt.posX + vec.xCoord * dist + offset.xCoord, bulletnt.posY + vec.yCoord * dist + offset.yCoord, bulletnt.posZ + vec.zCoord * dist + offset.zCoord); double vel = 0.5; pellet.motionX = vec.xCoord * vel; pellet.motionY = vec.yCoord * vel; diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index f4be014fc..d14e310e8 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4128,7 +4128,7 @@ public class ModItems { gun_panzerschreck = new ItemGunBase(GunRocketFactory.getPanzConfig()).setUnlocalizedName("gun_panzerschreck").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_panzerschreck"); gun_quadro = new ItemGunBase(GunRocketFactory.getQuadroConfig()).setUnlocalizedName("gun_quadro").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_quadro"); gun_hk69 = new ItemGunBase(GunGrenadeFactory.getHK69Config()).setUnlocalizedName("gun_hk69").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hk69"); - gun_congolake = new ItemGunBase(GunGrenadeFactory.getHK69Config()).setUnlocalizedName("gun_congolake").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_congolake"); + gun_congolake = new ItemGunBase(GunGrenadeFactory.getCongoConfig()).setUnlocalizedName("gun_congolake").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_congolake"); gun_stinger = new ItemGunBase(GunRocketHomingFactory.getStingerConfig()).setUnlocalizedName("gun_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_stinger"); gun_skystinger = new ItemGunBase(GunRocketHomingFactory.getSkyStingerConfig()).setUnlocalizedName("gun_skystinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_skystinger"); gun_revolver = new ItemGunBase(Gun357MagnumFactory.getRevolverConfig()).setUnlocalizedName("gun_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver"); diff --git a/src/main/resources/assets/hbm/models/trinkets/lantern.obj b/src/main/resources/assets/hbm/models/trinkets/lantern.obj new file mode 100644 index 000000000..46f55c49d --- /dev/null +++ b/src/main/resources/assets/hbm/models/trinkets/lantern.obj @@ -0,0 +1,500 @@ +# Blender v2.79 (sub 0) OBJ File: 'lantern.blend' +# www.blender.org +o Light +v 0.187500 4.062500 0.187500 +v 0.312500 4.812500 0.312500 +v 0.187500 4.062500 -0.187500 +v 0.312500 4.812500 -0.312500 +v -0.181700 4.062500 0.187500 +v -0.306700 4.812500 0.312500 +v -0.181700 4.062500 -0.187500 +v -0.306700 4.812500 -0.312500 +vn 0.0000 -0.1644 0.9864 +vn -0.9864 -0.1644 0.0000 +vn 0.0000 -0.1644 -0.9864 +vn 0.9864 -0.1644 0.0000 +s off +f 2//1 5//1 1//1 +f 7//2 6//2 8//2 +f 3//3 8//3 4//3 +f 1//4 4//4 2//4 +f 2//1 6//1 5//1 +f 7//2 5//2 6//2 +f 3//3 7//3 8//3 +f 1//4 3//4 4//4 +o Lantern +v -0.125000 -0.250000 0.125000 +v 0.125000 -0.250000 0.125000 +v -0.125000 -0.250000 -0.125000 +v 0.125000 -0.250000 -0.125000 +v -0.125000 0.937500 0.125000 +v 0.125000 0.937500 0.125000 +v -0.125000 0.937500 -0.125000 +v 0.125000 0.937500 -0.125000 +v -0.062500 1.000000 0.062500 +v 0.062500 1.000000 0.062500 +v -0.062500 1.000000 -0.062500 +v 0.062500 1.000000 -0.062500 +v -0.125000 1.062500 0.125000 +v 0.125000 1.062500 0.125000 +v -0.125000 1.062500 -0.125000 +v 0.125000 1.062500 -0.125000 +v -0.125000 1.187500 0.125000 +v 0.125000 1.187500 0.125000 +v -0.125000 1.187500 -0.125000 +v 0.125000 1.187500 -0.125000 +v -0.062500 1.250000 0.062500 +v 0.062500 1.250000 0.062500 +v -0.062500 1.250000 -0.062500 +v 0.062500 1.250000 -0.062500 +v -0.062500 3.250000 -0.062500 +v -0.062500 3.250000 0.062500 +v 0.062500 3.250000 0.062500 +v 0.062500 3.250000 -0.062500 +v -0.125000 3.312500 -0.125000 +v -0.125000 3.312500 0.125000 +v 0.125000 3.312500 0.125000 +v 0.125000 3.312500 -0.125000 +v -0.125000 3.437500 -0.125000 +v -0.125000 3.437500 0.125000 +v 0.125000 3.437500 0.125000 +v 0.125000 3.437500 -0.125000 +v -0.062500 3.500000 -0.062500 +v -0.062500 3.500000 0.062500 +v 0.062500 3.500000 0.062500 +v 0.062500 3.500000 -0.062500 +v -0.062500 4.000000 -0.062500 +v -0.062500 4.000000 0.062500 +v 0.062500 4.000000 0.062500 +v 0.062500 4.000000 -0.062500 +v -0.250000 4.000000 0.250000 +v 0.250000 4.000000 0.250000 +v -0.250000 4.000000 -0.250000 +v 0.250000 4.000000 -0.250000 +v -0.250000 4.062500 -0.250000 +v -0.250000 4.062500 0.250000 +v 0.250000 4.062500 0.250000 +v 0.250000 4.062500 -0.250000 +v 0.250000 4.062500 0.250000 +v 0.250000 4.062500 0.187500 +v 0.187500 4.062500 0.250000 +v 0.187500 4.062500 0.187500 +v 0.375000 4.812500 0.375000 +v 0.375000 4.812500 0.312500 +v 0.312500 4.812500 0.375000 +v 0.312500 4.812500 0.312500 +v 0.250000 4.062500 -0.187500 +v 0.250000 4.062500 -0.250000 +v 0.187500 4.062500 -0.187500 +v 0.187500 4.062500 -0.250000 +v 0.375000 4.812500 -0.312500 +v 0.375000 4.812500 -0.375000 +v 0.312500 4.812500 -0.312500 +v 0.312500 4.812500 -0.375000 +v -0.181700 4.062500 0.250000 +v -0.181700 4.062500 0.187500 +v -0.244200 4.062500 0.250000 +v -0.244200 4.062500 0.187500 +v -0.306700 4.812500 0.375000 +v -0.306700 4.812500 0.312500 +v -0.369200 4.812500 0.375000 +v -0.369200 4.812500 0.312500 +v -0.181700 4.062500 -0.187500 +v -0.181700 4.062500 -0.250000 +v -0.244200 4.062500 -0.187500 +v -0.244200 4.062500 -0.250000 +v -0.306700 4.812500 -0.312500 +v -0.306700 4.812500 -0.375000 +v -0.369200 4.812500 -0.312500 +v -0.369200 4.812500 -0.375000 +v 0.375000 4.812500 0.375000 +v 0.375000 4.812500 -0.375000 +v -0.369200 4.812500 0.375000 +v -0.369200 4.812500 -0.375000 +v 0.375000 4.875000 0.375000 +v 0.375000 4.875000 -0.375000 +v -0.369200 4.875000 0.375000 +v -0.369200 4.875000 -0.375000 +v 0.125000 5.000000 -0.125000 +v 0.125000 5.000000 0.125000 +v -0.119200 5.000000 0.125000 +v -0.119200 5.000000 -0.125000 +v -0.059600 5.000000 0.062500 +v 0.065400 5.000000 0.062500 +v -0.059600 5.000000 -0.062500 +v 0.065400 5.000000 -0.062500 +v -0.059600 5.500000 0.062500 +v 0.065400 5.500000 0.062500 +v -0.059600 5.500000 -0.062500 +v 0.065400 5.500000 -0.062500 +vt 0.764706 0.176471 +vt 1.000000 0.235294 +vt 0.764706 0.235294 +vt 0.294118 0.279412 +vt 0.117647 0.294118 +vt 0.058824 0.279412 +vt 0.294118 -0.000000 +vt 0.058824 0.279412 +vt 0.058824 -0.000000 +vt 0.294118 -0.000000 +vt 0.058824 0.279412 +vt 0.058824 -0.000000 +vt 0.294118 -0.000000 +vt 0.058824 -0.000000 +vt 0.294118 -0.000000 +vt 0.058824 0.279412 +vt 0.058824 -0.000000 +vt 0.235294 0.294118 +vt 0.058824 0.308824 +vt 0.117647 0.294118 +vt 0.294118 0.279412 +vt 0.117647 0.294118 +vt 0.294118 0.279412 +vt 0.294118 0.279412 +vt 0.117647 0.294118 +vt 0.294118 0.308824 +vt 0.058824 0.338235 +vt 0.058824 0.308824 +vt 0.235294 0.294118 +vt 0.235294 0.294118 +vt 0.058824 0.308824 +vt 0.235294 0.294118 +vt 0.058824 0.308824 +vt 0.294118 0.338235 +vt 0.117647 0.352941 +vt 0.058824 0.338235 +vt 0.294118 0.308824 +vt 0.294118 0.308824 +vt 0.058824 0.338235 +vt 0.294118 0.308824 +vt 0.058824 0.338235 +vt 0.235294 0.352941 +vt 0.117647 0.823529 +vt 0.117647 0.352941 +vt 0.294118 0.338235 +vt 0.117647 0.352941 +vt 0.294118 0.338235 +vt 0.294118 0.338235 +vt 0.117647 0.352941 +vt 0.117647 0.823529 +vt 0.294118 0.838235 +vt 0.058824 0.838235 +vt 0.235294 0.352941 +vt 0.117647 0.823529 +vt 0.235294 0.352941 +vt 0.235294 0.352941 +vt 0.117647 0.823529 +vt 0.058824 0.867647 +vt 0.294118 0.838235 +vt 0.058824 0.838235 +vt 0.294118 0.838235 +vt 0.058824 0.838235 +vt 0.294118 0.838235 +vt 0.058824 0.838235 +vt 0.294118 0.867647 +vt 0.117647 0.882353 +vt 0.058824 0.867647 +vt 0.058824 0.867647 +vt 0.058824 0.867647 +vt 0.235294 0.882353 +vt 0.117647 1.000000 +vt 0.117647 0.882353 +vt 0.294118 0.867647 +vt 0.117647 0.882353 +vt 0.294118 0.867647 +vt 0.294118 0.867647 +vt 0.117647 0.882353 +vt 0.235294 0.882353 +vt 0.117647 1.000000 +vt 0.235294 0.882353 +vt 0.117647 1.000000 +vt 0.235294 0.882353 +vt 0.117647 1.000000 +vt 0.764706 -0.000000 +vt 0.294118 0.117647 +vt 0.294118 -0.000000 +vt 0.294118 0.132353 +vt 0.764706 0.250000 +vt 0.294118 0.250000 +vt 0.764706 0.117647 +vt 0.764706 0.117647 +vt 0.294118 0.132353 +vt 0.294118 0.117647 +vt 0.764706 0.117647 +vt 0.294118 0.132353 +vt 0.294118 0.117647 +vt 0.764706 0.117647 +vt 0.294118 0.132353 +vt 0.294118 0.117647 +vt 0.882353 0.000000 +vt 0.823529 0.176471 +vt 0.823529 0.000000 +vt 0.764706 0.176471 +vt 0.764706 0.000000 +vt 1.000000 0.176471 +vt 0.941176 0.000000 +vt 1.000000 0.000000 +vt 0.941176 0.176471 +vt 0.823529 0.000000 +vt 0.764706 0.176471 +vt 0.764706 0.000000 +vt 0.941176 0.000000 +vt 1.000000 0.176471 +vt 0.941176 0.176471 +vt 0.882353 0.000000 +vt 0.823529 0.176471 +vt 0.941176 0.176471 +vt 0.882353 0.000000 +vt 0.941176 0.000000 +vt 0.823529 0.176471 +vt 0.823529 0.000000 +vt 0.764706 0.176471 +vt 0.764706 0.000000 +vt 1.000000 0.176471 +vt 1.000000 0.000000 +vt 1.000000 0.176471 +vt 0.941176 0.000000 +vt 1.000000 0.000000 +vt 0.882353 0.000000 +vt 0.941176 0.176471 +vt 0.882353 0.176471 +vt 0.823529 0.176471 +vt 0.823529 0.000000 +vt 0.764706 0.176471 +vt 0.764706 0.000000 +vt 0.294118 0.426471 +vt 1.000000 0.250000 +vt 1.000000 0.426471 +vt 0.294118 0.617647 +vt 0.764706 0.558824 +vt 1.000000 0.617647 +vt 1.000000 0.426471 +vt 0.294118 0.441176 +vt 0.294118 0.426471 +vt 0.294118 0.441176 +vt 1.000000 0.426471 +vt 0.294118 0.441176 +vt 0.294118 0.426471 +vt 1.000000 0.426471 +vt 0.294118 0.441176 +vt 0.294118 0.426471 +vt 0.529412 0.500000 +vt 0.764706 0.500000 +vt 1.000000 0.441176 +vt 0.529412 0.558824 +vt 0.529412 0.735294 +vt 0.411765 0.617647 +vt 0.529412 0.617647 +vt 0.764706 0.735294 +vt 0.647059 0.617647 +vt 0.764706 0.617647 +vt 0.647059 0.735294 +vt 0.411765 0.735294 +vt 0.294118 0.617647 +vt 0.411765 0.764706 +vt 0.529412 0.764706 +vt 1.000000 0.176471 +vt 0.235294 0.823529 +vt 0.235294 0.823529 +vt 0.235294 0.823529 +vt 0.235294 0.823529 +vt 0.235294 1.000000 +vt 0.235294 1.000000 +vt 0.235294 1.000000 +vt 0.235294 1.000000 +vt 0.764706 0.132353 +vt 0.764706 0.132353 +vt 0.764706 0.132353 +vt 0.764706 0.132353 +vt 0.882353 0.176471 +vt 1.000000 0.000000 +vt 0.882353 0.176471 +vt 0.882353 0.176471 +vt 0.294118 0.250000 +vt 1.000000 0.441176 +vt 1.000000 0.441176 +vt 1.000000 0.441176 +vt 0.294118 0.735294 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.1644 0.9864 +vn -0.9864 0.1644 0.0000 +vn 0.0000 0.1644 -0.9864 +vn 0.9864 -0.1644 0.0000 +vn 0.0000 0.1644 0.9864 +vn 0.0000 -0.1644 -0.9864 +vn -0.9864 -0.1644 0.0000 +vn 0.9864 0.1644 0.0000 +vn -0.4472 0.8944 0.0000 +vn 0.4472 0.8944 0.0000 +vn 0.0000 0.8944 -0.4472 +vn 0.0000 0.8944 0.4472 +s off +f 11/1/5 10/2/5 9/3/5 +f 16/4/6 18/5/6 14/6/6 +f 11/7/7 16/8/7 12/9/7 +f 10/10/8 13/11/8 9/12/8 +f 12/13/9 14/6/9 10/14/9 +f 9/15/10 15/16/10 11/17/10 +f 19/18/11 24/19/11 20/20/11 +f 13/21/12 19/22/12 15/16/12 +f 15/23/13 20/20/13 16/8/13 +f 14/24/14 17/25/14 13/11/14 +f 22/26/8 25/27/8 21/28/8 +f 18/29/15 21/28/15 17/25/15 +f 20/30/16 22/31/16 18/5/16 +f 17/32/17 23/33/17 19/22/17 +f 28/34/6 30/35/6 26/36/6 +f 24/37/9 26/36/9 22/31/9 +f 21/38/10 27/39/10 23/33/10 +f 23/40/7 28/41/7 24/19/7 +f 31/42/7 36/43/7 32/44/7 +f 25/45/12 31/46/12 27/39/12 +f 27/47/13 32/44/13 28/41/13 +f 26/48/14 29/49/14 25/27/14 +f 35/50/16 40/51/16 39/52/16 +f 30/53/8 34/54/8 29/49/8 +f 32/55/9 35/50/9 30/35/9 +f 29/56/10 33/57/10 31/46/10 +f 40/51/9 43/58/9 39/52/9 +f 33/57/17 38/59/17 37/60/17 +f 36/43/11 37/61/11 40/62/11 +f 34/54/15 39/63/15 38/64/15 +f 41/65/13 48/66/13 44/67/13 +f 38/59/10 41/68/10 37/60/10 +f 37/61/7 44/67/7 40/62/7 +f 39/63/8 42/69/8 38/64/8 +f 48/70/9 51/71/9 47/72/9 +f 43/73/14 46/74/14 42/69/14 +f 44/75/6 47/72/6 43/58/6 +f 42/76/12 45/77/12 41/68/12 +f 46/78/10 49/79/10 45/77/10 +f 45/80/7 52/81/7 48/66/7 +f 47/82/8 50/83/8 46/74/8 +f 55/84/5 54/85/5 53/86/5 +f 59/87/18 57/88/18 58/89/18 +f 56/90/9 59/87/9 54/85/9 +f 53/91/10 57/92/10 55/93/10 +f 55/94/7 60/95/7 56/96/7 +f 54/97/8 58/98/8 53/99/8 +f 61/100/19 67/101/19 63/102/19 +f 63/102/20 68/103/20 64/104/20 +f 68/105/21 62/106/21 64/107/21 +f 66/108/22 61/100/22 62/106/22 +f 69/109/23 75/110/23 71/111/23 +f 72/112/20 75/113/20 76/114/20 +f 76/114/24 70/115/24 72/112/24 +f 70/115/22 73/116/22 69/109/22 +f 81/117/19 79/118/19 77/119/19 +f 79/118/25 84/120/25 80/121/25 +f 80/121/21 82/122/21 78/123/21 +f 82/124/26 77/119/26 78/125/26 +f 89/126/23 87/127/23 85/128/23 +f 88/129/25 91/130/25 92/131/25 +f 88/129/24 90/132/24 86/133/24 +f 86/133/26 89/134/26 85/135/26 +f 93/136/5 96/137/5 94/138/5 +f 99/139/27 104/140/27 100/141/27 +f 95/142/10 100/143/10 96/144/10 +f 94/138/9 97/145/9 93/136/9 +f 96/146/7 98/147/7 94/148/7 +f 93/149/8 99/150/8 95/151/8 +f 104/140/18 102/152/18 101/153/18 +f 98/154/28 102/152/28 97/145/28 +f 100/141/29 101/153/29 98/154/29 +f 97/145/30 103/155/30 99/139/30 +f 112/156/9 106/157/9 108/158/9 +f 109/159/10 107/160/10 105/161/10 +f 111/162/7 108/158/7 107/160/7 +f 110/163/8 105/164/8 106/157/8 +f 109/165/18 112/156/18 111/166/18 +f 11/1/5 12/167/5 10/2/5 +f 16/4/6 20/30/6 18/5/6 +f 11/7/7 15/23/7 16/8/7 +f 10/10/8 14/24/8 13/11/8 +f 12/13/9 16/4/9 14/6/9 +f 9/15/10 13/21/10 15/16/10 +f 19/18/11 23/40/11 24/19/11 +f 13/21/12 17/32/12 19/22/12 +f 15/23/13 19/18/13 20/20/13 +f 14/24/14 18/29/14 17/25/14 +f 22/26/8 26/48/8 25/27/8 +f 18/29/15 22/26/15 21/28/15 +f 20/30/16 24/37/16 22/31/16 +f 17/32/17 21/38/17 23/33/17 +f 28/34/6 32/55/6 30/35/6 +f 24/37/9 28/34/9 26/36/9 +f 21/38/10 25/45/10 27/39/10 +f 23/40/7 27/47/7 28/41/7 +f 31/42/7 33/168/7 36/43/7 +f 25/45/12 29/56/12 31/46/12 +f 27/47/13 31/42/13 32/44/13 +f 26/48/14 30/53/14 29/49/14 +f 35/50/16 36/169/16 40/51/16 +f 30/53/8 35/170/8 34/54/8 +f 32/55/9 36/169/9 35/50/9 +f 29/56/10 34/171/10 33/57/10 +f 40/51/9 44/75/9 43/58/9 +f 33/57/17 34/171/17 38/59/17 +f 36/43/11 33/168/11 37/61/11 +f 34/54/15 35/170/15 39/63/15 +f 41/65/13 45/80/13 48/66/13 +f 38/59/10 42/76/10 41/68/10 +f 37/61/7 41/65/7 44/67/7 +f 39/63/8 43/73/8 42/69/8 +f 48/70/9 52/172/9 51/71/9 +f 43/73/14 47/82/14 46/74/14 +f 44/75/6 48/70/6 47/72/6 +f 42/76/12 46/78/12 45/77/12 +f 46/78/10 50/173/10 49/79/10 +f 45/80/7 49/174/7 52/81/7 +f 47/82/8 51/175/8 50/83/8 +f 55/84/5 56/90/5 54/85/5 +f 59/87/18 60/176/18 57/88/18 +f 56/90/9 60/176/9 59/87/9 +f 53/91/10 58/177/10 57/92/10 +f 55/94/7 57/178/7 60/95/7 +f 54/97/8 59/179/8 58/98/8 +f 61/100/19 65/180/19 67/101/19 +f 63/102/20 67/101/20 68/103/20 +f 68/105/21 66/108/21 62/106/21 +f 66/108/22 65/180/22 61/100/22 +f 69/109/23 73/116/23 75/110/23 +f 72/112/20 71/181/20 75/113/20 +f 76/114/24 74/182/24 70/115/24 +f 70/115/22 74/182/22 73/116/22 +f 81/117/19 83/183/19 79/118/19 +f 79/118/25 83/183/25 84/120/25 +f 80/121/21 84/120/21 82/122/21 +f 82/124/26 81/117/26 77/119/26 +f 89/126/23 91/130/23 87/127/23 +f 88/129/25 87/127/25 91/130/25 +f 88/129/24 92/131/24 90/132/24 +f 86/133/26 90/132/26 89/134/26 +f 93/136/5 95/184/5 96/137/5 +f 99/139/27 103/155/27 104/140/27 +f 95/142/10 99/185/10 100/143/10 +f 94/138/9 98/154/9 97/145/9 +f 96/146/7 100/186/7 98/147/7 +f 93/149/8 97/187/8 99/150/8 +f 104/140/18 103/155/18 102/152/18 +f 98/154/28 101/153/28 102/152/28 +f 100/141/29 104/140/29 101/153/29 +f 97/145/30 102/152/30 103/155/30 +f 112/156/9 110/163/9 106/157/9 +f 109/159/10 111/162/10 107/160/10 +f 111/162/7 112/156/7 108/158/7 +f 110/163/8 109/188/8 105/164/8 +f 109/165/18 110/163/18 112/156/18 diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/lantern.png b/src/main/resources/assets/hbm/textures/models/trinkets/lantern.png new file mode 100644 index 0000000000000000000000000000000000000000..78496dc2a426eb078beb6b678f327fdf71cf5d1d GIT binary patch literal 288 zcmV+*0pI?KP)_0TgIIOeL z&qk903C)d5gw*5Nij-62CEJ-C+WDmZ;WFf*H*0c8igPbi~Wct=qPIScXF`qOH mYaq{sU!VMAJv~v#Mvynu&NKS7`B&ip0000 Date: Sat, 12 Aug 2023 00:04:42 +0200 Subject: [PATCH 13/15] finished leadburster, congo lake grenade launcher --- .../com/hbm/handler/GunConfiguration.java | 1 + .../hbm/handler/guncfg/Gun4GaugeFactory.java | 1 + .../hbm/handler/guncfg/Gun556mmFactory.java | 1 + .../hbm/handler/guncfg/GunGrenadeFactory.java | 83 +- src/main/java/com/hbm/items/ModItems.java | 2 +- .../com/hbm/items/weapon/ItemGunCongo.java | 37 + src/main/java/com/hbm/lib/HbmCollection.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 4 + .../entity/projectile/RenderBullet.java | 21 + .../item/weapon/ItemRenderWeaponCongo.java | 106 + src/main/resources/assets/hbm/lang/en_US.lang | 3 + src/main/resources/assets/hbm/lang/zh_CN.lang | 108 +- .../hbm/models/projectiles/leadburster.obj | 1671 ++++++++ .../assets/hbm/models/weapons/congolake.obj | 3494 +++++++++++++++++ src/main/resources/assets/hbm/sounds.json | 2 + .../assets/hbm/sounds/weapon/glReload.ogg | Bin 0 -> 10791 bytes .../assets/hbm/sounds/weapon/glShoot.ogg | Bin 0 -> 18670 bytes .../hbm/textures/models/weapons/congolake.png | Bin 3306 -> 3514 bytes 19 files changed, 5487 insertions(+), 50 deletions(-) create mode 100644 src/main/java/com/hbm/items/weapon/ItemGunCongo.java create mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java create mode 100644 src/main/resources/assets/hbm/models/projectiles/leadburster.obj create mode 100644 src/main/resources/assets/hbm/models/weapons/congolake.obj create mode 100644 src/main/resources/assets/hbm/sounds/weapon/glReload.ogg create mode 100644 src/main/resources/assets/hbm/sounds/weapon/glShoot.ogg diff --git a/src/main/java/com/hbm/handler/GunConfiguration.java b/src/main/java/com/hbm/handler/GunConfiguration.java index 43a21ce01..1763ad83a 100644 --- a/src/main/java/com/hbm/handler/GunConfiguration.java +++ b/src/main/java/com/hbm/handler/GunConfiguration.java @@ -105,6 +105,7 @@ public class GunConfiguration implements Cloneable { public static final String RSOUND_SHOTGUN = "hbm:weapon.shotgunReload"; public static final String RSOUND_LAUNCHER = "hbm:weapon.rpgReload"; public static final String RSOUND_GRENADE = "hbm:weapon.hkReload"; + public static final String RSOUND_GRENADE_NEW = "hbm:weapon.glReload"; public static final String RSOUND_FATMAN = "hbm:weapon.fatmanReload"; public GunConfiguration silenced() { diff --git a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java index 9760fb083..31447e131 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java @@ -179,6 +179,7 @@ public class Gun4GaugeFactory { bullet.style = BulletConfiguration.STYLE_FLECHETTE; bullet.HBRC = 2; bullet.LBRC = 95; + BulletConfigFactory.makeFlechette(bullet); bullet.spentCasing = CASING4GAUGE.clone().register("4GaFlech").setColor(0x1537FF, SpentCasing.COLOR_CASE_4GA); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java index fafa0b642..88c9aa190 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java @@ -310,6 +310,7 @@ public class Gun556mmFactory { bullet.wear = 15; bullet.style = BulletConfiguration.STYLE_FLECHETTE; bullet.doesPenetrate = false; + BulletConfigFactory.makeFlechette(bullet); bullet.spentCasing = CASING556.clone().register("556Flec"); diff --git a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java index 0432fc147..76a4bfe8c 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java @@ -1,7 +1,5 @@ package com.hbm.handler.guncfg; -import java.util.ArrayList; - import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.handler.BulletConfigSyncingUtil; @@ -11,11 +9,16 @@ import com.hbm.handler.GunConfiguration; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.AmmoGrenade; +import com.hbm.lib.HbmCollection; import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; @@ -49,23 +52,12 @@ public class GunGrenadeFactory { config.crosshair = Crosshair.L_CIRCUMFLEX; config.firingSound = "hbm:weapon.hkShoot"; config.reloadSound = GunConfiguration.RSOUND_GRENADE; + config.reloadSoundEnd = false; config.name = "gPistol"; config.manufacturer = EnumGunManufacturer.H_AND_K; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.GRENADE_NORMAL); - config.config.add(BulletConfigSyncingUtil.GRENADE_HE); - config.config.add(BulletConfigSyncingUtil.GRENADE_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.GRENADE_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.GRENADE_CHEMICAL); - config.config.add(BulletConfigSyncingUtil.GRENADE_CONCUSSION); - config.config.add(BulletConfigSyncingUtil.GRENADE_FINNED); - config.config.add(BulletConfigSyncingUtil.GRENADE_SLEEK); - config.config.add(BulletConfigSyncingUtil.GRENADE_NUCLEAR); - config.config.add(BulletConfigSyncingUtil.GRENADE_TRACER); - config.config.add(BulletConfigSyncingUtil.GRENADE_KAMPF); - config.config.add(BulletConfigSyncingUtil.GRENADE_LEADBURSTER); + + config.config = HbmCollection.grenade; config.durability = 300; config.ejector = EJECTOR_LAUNCHER; @@ -77,7 +69,7 @@ public class GunGrenadeFactory { GunConfiguration config = new GunConfiguration(); - config.rateOfFire = 30; + config.rateOfFire = 20; config.roundsPerCycle = 1; config.gunMode = GunConfiguration.MODE_NORMAL; config.firingMode = GunConfiguration.FIRE_MANUAL; @@ -87,27 +79,14 @@ public class GunGrenadeFactory { config.reloadType = GunConfiguration.RELOAD_SINGLE; config.allowsInfinity = true; config.crosshair = Crosshair.L_CIRCUMFLEX; - config.firingSound = "hbm:weapon.hkShoot"; - config.reloadSound = GunConfiguration.RSOUND_GRENADE; - config.reloadSoundEnd = false; + config.firingSound = "hbm:weapon.glShoot"; + config.reloadSound = GunConfiguration.RSOUND_GRENADE_NEW; config.name = "congoLake"; config.manufacturer = EnumGunManufacturer.NAWS; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.GRENADE_NORMAL); - config.config.add(BulletConfigSyncingUtil.GRENADE_HE); - config.config.add(BulletConfigSyncingUtil.GRENADE_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.GRENADE_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.GRENADE_CHEMICAL); - config.config.add(BulletConfigSyncingUtil.GRENADE_CONCUSSION); - config.config.add(BulletConfigSyncingUtil.GRENADE_FINNED); - config.config.add(BulletConfigSyncingUtil.GRENADE_SLEEK); - config.config.add(BulletConfigSyncingUtil.GRENADE_NUCLEAR); - config.config.add(BulletConfigSyncingUtil.GRENADE_TRACER); - config.config.add(BulletConfigSyncingUtil.GRENADE_KAMPF); - config.config.add(BulletConfigSyncingUtil.GRENADE_LEADBURSTER); - config.durability = 1500; + + config.config = HbmCollection.grenade; + config.durability = 2500; config.ejector = EJECTOR_CONGOLAKE; @@ -312,17 +291,29 @@ public class GunGrenadeFactory { bullet.style = BulletConfiguration.STYLE_LEADBURSTER; bullet.doesRicochet = false; bullet.doesPenetrate = true; + bullet.vPFX = ""; bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { + switch(sideHit) { + case 0: bulletnt.rotationPitch = (float) (90); break; + case 1: bulletnt.rotationPitch = (float) (-90); break; + case 2: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = 0; break; + case 3: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = (float) 180; break; + case 4: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = 90; break; + case 5: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = (float) -90; break; + } + Vec3 vec = Vec3.createVectorHelper(0, 0, 1); vec.rotateAroundX((float) (bulletnt.rotationPitch * Math.PI / 180D)); vec.rotateAroundY((float) (bulletnt.rotationYaw * Math.PI / 180)); - bulletnt.posX -= vec.xCoord * 0.1; - bulletnt.posY -= vec.yCoord * 0.1; - bulletnt.posZ -= vec.zCoord * 0.1; + double offset = 0.1; + bulletnt.posX -= vec.xCoord * offset; + bulletnt.posY -= vec.yCoord * offset; + bulletnt.posZ -= vec.zCoord * offset; + bulletnt.ticksExisted = 0; bulletnt.getStuck(x, y, z, sideHit); }; @@ -340,12 +331,23 @@ public class GunGrenadeFactory { if(bulletnt.ticksInGround < 20) return; int timer = bulletnt.ticksInGround - 20; - if(timer > 60) return; Vec3 offset = Vec3.createVectorHelper(0, 0, -0.5); offset.rotateAroundX((float) (bulletnt.rotationPitch * Math.PI / 180D)); offset.rotateAroundY((float) (bulletnt.rotationYaw * Math.PI / 180)); + if(bulletnt.ticksExisted >= 100) { + bulletnt.setDead(); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", "largeexplode"); + data.setFloat("size", 1F); + data.setByte("count", (byte)1); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX + offset.xCoord, bulletnt.posY + offset.yCoord, bulletnt.posZ + offset.zCoord), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); + } + + if(timer > 60) return; + bulletnt.worldObj.playSoundEffect(bulletnt.posX, bulletnt.posY, bulletnt.posZ, "hbm:weapon.silencerShoot", 2F, 1F); for(int i = 0; i < 5; i++) { @@ -357,7 +359,8 @@ public class GunGrenadeFactory { EntityBulletBaseNT pellet = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.R556_NORMAL); double dist = 0.5; - pellet.setPosition(bulletnt.posX + vec.xCoord * dist + offset.xCoord, bulletnt.posY + vec.yCoord * dist + offset.yCoord, bulletnt.posZ + vec.zCoord * dist + offset.zCoord); + double off = 0.5; + pellet.setPosition(bulletnt.posX + vec.xCoord * dist + offset.xCoord * off, bulletnt.posY + vec.yCoord * dist + offset.yCoord * off, bulletnt.posZ + vec.zCoord * dist + offset.zCoord * off); double vel = 0.5; pellet.motionX = vec.xCoord * vel; pellet.motionY = vec.yCoord * vel; diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index d14e310e8..0b8389465 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4128,7 +4128,7 @@ public class ModItems { gun_panzerschreck = new ItemGunBase(GunRocketFactory.getPanzConfig()).setUnlocalizedName("gun_panzerschreck").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_panzerschreck"); gun_quadro = new ItemGunBase(GunRocketFactory.getQuadroConfig()).setUnlocalizedName("gun_quadro").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_quadro"); gun_hk69 = new ItemGunBase(GunGrenadeFactory.getHK69Config()).setUnlocalizedName("gun_hk69").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hk69"); - gun_congolake = new ItemGunBase(GunGrenadeFactory.getCongoConfig()).setUnlocalizedName("gun_congolake").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_congolake"); + gun_congolake = new ItemGunCongo(GunGrenadeFactory.getCongoConfig()).setUnlocalizedName("gun_congolake").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_congolake"); gun_stinger = new ItemGunBase(GunRocketHomingFactory.getStingerConfig()).setUnlocalizedName("gun_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_stinger"); gun_skystinger = new ItemGunBase(GunRocketHomingFactory.getSkyStingerConfig()).setUnlocalizedName("gun_skystinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_skystinger"); gun_revolver = new ItemGunBase(Gun357MagnumFactory.getRevolverConfig()).setUnlocalizedName("gun_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver"); diff --git a/src/main/java/com/hbm/items/weapon/ItemGunCongo.java b/src/main/java/com/hbm/items/weapon/ItemGunCongo.java new file mode 100644 index 000000000..7072e772d --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/ItemGunCongo.java @@ -0,0 +1,37 @@ +package com.hbm.items.weapon; + +import com.hbm.handler.GunConfiguration; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationKeyframe; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; + +public class ItemGunCongo extends ItemGunBase { + + public ItemGunCongo(GunConfiguration config) { + super(config); + } + + @Override + @SideOnly(Side.CLIENT) + public BusAnimation getAnimation(ItemStack stack, AnimType type) { + + if(type == AnimType.CYCLE) { + return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 50)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 100))) + .addBus("PUMP", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 500)) + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 100)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200))); + + } + + return null; + } +} diff --git a/src/main/java/com/hbm/lib/HbmCollection.java b/src/main/java/com/hbm/lib/HbmCollection.java index 6472f8338..06bcd4799 100644 --- a/src/main/java/com/hbm/lib/HbmCollection.java +++ b/src/main/java/com/hbm/lib/HbmCollection.java @@ -70,7 +70,7 @@ public class HbmCollection { /** MIRV MINI-NUKES **/ public static final List fatmanMIRV = ImmutableList.of(BulletConfigSyncingUtil.NUKE_MIRV_NORMAL, BulletConfigSyncingUtil.NUKE_MIRV_LOW, BulletConfigSyncingUtil.NUKE_MIRV_HIGH, BulletConfigSyncingUtil.NUKE_MIRV_SAFE, BulletConfigSyncingUtil.NUKE_MIRV_SPECIAL); /** 40MM GRENADE **/ - public static final List grenade = ImmutableList.of(BulletConfigSyncingUtil.GRENADE_NORMAL, BulletConfigSyncingUtil.GRENADE_HE, BulletConfigSyncingUtil.GRENADE_INCENDIARY, BulletConfigSyncingUtil.GRENADE_PHOSPHORUS, BulletConfigSyncingUtil.GRENADE_CHEMICAL, BulletConfigSyncingUtil.GRENADE_CONCUSSION, BulletConfigSyncingUtil.GRENADE_FINNED, BulletConfigSyncingUtil.GRENADE_SLEEK, BulletConfigSyncingUtil.GRENADE_NUCLEAR, BulletConfigSyncingUtil.GRENADE_TRACER, BulletConfigSyncingUtil.GRENADE_KAMPF); + public static final List grenade = ImmutableList.of(BulletConfigSyncingUtil.GRENADE_NORMAL, BulletConfigSyncingUtil.GRENADE_HE, BulletConfigSyncingUtil.GRENADE_INCENDIARY, BulletConfigSyncingUtil.GRENADE_PHOSPHORUS, BulletConfigSyncingUtil.GRENADE_CHEMICAL, BulletConfigSyncingUtil.GRENADE_CONCUSSION, BulletConfigSyncingUtil.GRENADE_FINNED, BulletConfigSyncingUtil.GRENADE_SLEEK, BulletConfigSyncingUtil.GRENADE_NUCLEAR, BulletConfigSyncingUtil.GRENADE_TRACER, BulletConfigSyncingUtil.GRENADE_KAMPF, BulletConfigSyncingUtil.GRENADE_LEADBURSTER); /** 84MM ROCKET **/ public static final List rocket = ImmutableList.of(BulletConfigSyncingUtil.ROCKET_NORMAL, BulletConfigSyncingUtil.ROCKET_HE, BulletConfigSyncingUtil.ROCKET_INCENDIARY, BulletConfigSyncingUtil.ROCKET_PHOSPHORUS, BulletConfigSyncingUtil.ROCKET_SHRAPNEL, BulletConfigSyncingUtil.ROCKET_EMP, BulletConfigSyncingUtil.ROCKET_GLARE, BulletConfigSyncingUtil.ROCKET_TOXIC, BulletConfigSyncingUtil.ROCKET_CANISTER, BulletConfigSyncingUtil.ROCKET_SLEEK, BulletConfigSyncingUtil.ROCKET_NUKE, BulletConfigSyncingUtil.ROCKET_CHAINSAW); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index c31870b9c..906b81b3c 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -525,6 +525,7 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_uac_pistol, new ItemRenderUACPistol()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderWeaponCoilgun()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryocannon, new ItemRenderWeaponCryoCannon()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderWeaponCongo()); //multitool MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 3fc1955e0..7429142fa 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -753,6 +753,7 @@ public class ResourceManager { public static final IModelCustom coilgun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/coilgun.obj")).asDisplayList(); public static final IModelCustom cryocannon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/cryo_cannon.obj")).asDisplayList(); public static final IModelCustom uac_pistol = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/UAC pistol.obj")).asDisplayList(); + public static final IModelCustom congolake = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/congolake.obj")).asDisplayList(); public static final IModelCustom lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj")); @@ -848,6 +849,7 @@ public class ResourceManager { public static final ResourceLocation coilgun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/coilgun.png"); public static final ResourceLocation cryocannon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/cryo_cannon.png"); public static final ResourceLocation uac_pistol_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/pistol_texture.png"); + public static final ResourceLocation congolake_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/congolake.png"); public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); @@ -952,6 +954,7 @@ public class ResourceManager { //Projectiles public static final IModelCustom projectiles = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/projectiles/projectiles.obj")); + public static final IModelCustom leadburster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/projectiles/leadburster.obj")); public static final IModelCustom casings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/effect/casings.obj")); //Bomber @@ -1080,6 +1083,7 @@ public class ResourceManager { public static final ResourceLocation rocket_mirv_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/rocket_mirv.png"); public static final ResourceLocation mini_nuke_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/mini_nuke.png"); public static final ResourceLocation mini_mirv_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/mini_mirv.png"); + public static final ResourceLocation leadburster_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/leadburster.png"); public static final ResourceLocation casings_tex = new ResourceLocation(RefStrings.MODID, "textures/particle/casings.png"); //Bomber diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java b/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java index d8c59d98f..c97e4b982 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java @@ -3,7 +3,9 @@ package com.hbm.render.entity.projectile; import java.util.Random; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.entity.projectile.IBulletBase; import com.hbm.handler.BulletConfiguration; import com.hbm.items.ModItems; @@ -72,6 +74,7 @@ public class RenderBullet extends Render { case BulletConfiguration.STYLE_BLADE: renderBlade(); break; case BulletConfiguration.STYLE_BARREL: renderNuke(3); break; case BulletConfiguration.STYLE_TAU: renderTau(bullet, trail, f1); break; + case BulletConfiguration.STYLE_LEADBURSTER: renderLeadburster(bullet, f1); break; default: renderBullet(trail); break; } @@ -589,6 +592,24 @@ public class RenderBullet extends Render { iface.prevZ(pZ); } + private void renderLeadburster(Entity bullet, float interp) { + EntityBulletBaseNT bulletnt = (EntityBulletBaseNT) bullet; + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glRotated(90, 0, 0, -1); + double scale = 0.05; + GL11.glScaled(scale, scale, scale); + bindTexture(ResourceManager.leadburster_tex); + ResourceManager.leadburster.renderPart("Based"); + if(bulletnt.getStuckIn() != -1) { + GL11.glRotated((bullet.ticksExisted + interp) * -18, 0, 1, 0); + } + ResourceManager.leadburster.renderPart("Based.001"); + ResourceManager.leadburster.renderPart("Backlight"); + GL11.glPopMatrix(); + } + @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) { return new ResourceLocation(RefStrings.MODID + ":textures/models/bullet.png"); diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java new file mode 100644 index 000000000..bcf9f2c02 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java @@ -0,0 +1,106 @@ +package com.hbm.render.item.weapon; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderWeaponCongo implements IItemRenderer { + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + case INVENTORY: + return true; + default: return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + + GL11.glPushMatrix(); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.congolake_tex); + + switch(type) { + + case EQUIPPED_FIRST_PERSON: + + double s0 = 0.25D; + GL11.glRotated(20, 0, 0, 1); + GL11.glTranslated(0.5, 0.0, -0.5); + GL11.glRotated(-10, 0, 1, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(s0, s0, s0); + + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + GL11.glTranslated(0, 0, -recoil[0]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.congolake.renderPart("Gun"); + + double[] pump = HbmAnimations.getRelevantTransformation("PUMP"); + GL11.glTranslated(0, 0, -pump[0]); + + ResourceManager.congolake.renderPart("Pump_Pummp"); + GL11.glShadeModel(GL11.GL_FLAT); + + break; + + case EQUIPPED: + + double scale = 0.35D; + GL11.glScaled(scale, scale, scale); + GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(15, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(1.25F, -1F, 1.5F); + + break; + + case ENTITY: + + double s1 = 0.2D; + GL11.glScaled(s1, s1, s1); + + break; + + case INVENTORY: + + double s = 2D; + GL11.glTranslated(6, 9, 0); + GL11.glRotated(-135, 0, 0, 1); + GL11.glRotated(-90, 0, 1, 0); + GL11.glScaled(s, s, -s); + + break; + + default: break; + } + + if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) { + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.congolake.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + + GL11.glPopMatrix(); + } +} diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index a6bd587a5..247d26a66 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1103,6 +1103,7 @@ gun.make.MANN=Open Mann Co. gun.make.MAXIM=Hiram Maxim gun.make.METRO=Metro Gunsmiths gun.make.MWT=MWT Prototype Labs +gun.make.NAWS=Kayarm Industries gun.make.ERFURT=Erfurter Maschinenfabrik Geipel gun.make.NONE=- gun.make.RAYTHEON=Raytheon Missile Systems @@ -1127,6 +1128,7 @@ gun.name.benelli=Benelli M4 Super 90 gun.name.benelliDrum=Benelli M4 Super 90 (Drum Magazine Modification) gun.name.bio=RI No. 2 Mark 1 gun.name.bolter=Manticora Pattern Boltgun +gun.name.congoLake=Congo Lake Pump-Action Grenade Launcher gun.name.cPython=Colt Python gun.name.cz53=CZ53 Personal Minigun gun.name.cz57=CZ57 Avenger Minigun @@ -2597,6 +2599,7 @@ item.gun_calamity_ammo.name=.50 BMG Round (LEGACY) item.gun_calamity_dual.name=Saddle Gun item.gun_chemthrower.name=Chemthrower item.gun_coilgun.name=Coilgun +item.gun_congolake.name=Congo Lake item.gun_cryolator.name=The Cryolator item.gun_cryolator_ammo.name=Cryo Cell item.gun_dampfmaschine.name=Totally Not a Joke Weapon diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 7a3f443c8..570c2eb9a 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -8,7 +8,7 @@ achievement.breeding.desc=谢谢你们,上帝保佑你们,上帝保佑美利 achievement.breeding=反话 achievement.bismuth.desc=还记得有人抱怨了一个月吗?我愿意。 achievement.bismuth=铋 -achievement.blastFurnace.desc=他们为制造探险家1号去打捞了一艘沉没的无畏舰。 +achievement.blastFurnace.desc=他们为制造探险者1号去打捞了一艘沉没的无畏舰。 achievement.blastFurnace=煤和铁 achievement.bossCreeper.desc=核爆爬行者? 那是个什么玩意?! achievement.bossCreeper=四条腿的行走核弹 @@ -350,7 +350,7 @@ book_lore.resignation_note.page.0=Management downsized our department again yest book_lore.resignation_note.page.1=管理层昨天又对我们的部门进行裁员了。那群白痴要怪只能怪他们自己,我都不知道他们在那场惨败后还在期待什么。到底是谁他妈泄露了那种程度的信息? book_lore.resignation_note.page.2=我们损失了几百万,而且现在失业的还是爷。老子希望你们这帮混蛋最后能从你们的一堆问题中学到点教训然后给爷滚去自闭。 book_lore.memo_stocks.name=公司内部备忘录 -book_lore.memo_stocks.page.0=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern. +book_lore.memo_stocks.page.0=投资者关系 - $ $ 最新季度报告提供的数据存在一些明显差异。财务部门做出一些调整是谨慎的,所以不必有任何担忧。 book_lore.memo_schrab_gsa.name=内部备忘录 book_lore.memo_schrab_gsa.page.0=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum book_lore.memo_schrab_gsa.page.1=合同管理记录 - 法务部在与美国国防部后勤局的谈判中取得了突破。他们批准了450亿的联邦采购服务总署投资资金用于异变金属的采购与研究。 @@ -377,13 +377,13 @@ book_lore.bf_bomb_2.page.1=And yet I can't even blame them. Swirlmat makes no go book_lore.bf_bomb_2.page.2=Even worse, this thing is an energy source. The existence of our sample is a violation of ALARA: the lab was vacated when it arrived, and the only person brave enough (one Dr. Melfyn) donned a level A hazmat just to carry it 20 meters. book_lore.bf_bomb_2.page.3=The empirical data isn't better, as we're breaking the first law of thermodynamics with how much energy it radiates. Being anywhere near that thing - even behind a meter of lead - was terrifying. We sprinted out of the chamber upon conclusion of the spectroscopy book_lore.bf_bomb_2.page.4=and we got nothing new out of it. Those idiots in the science team, god, did not even waver after all that. Sitting through those "discussions" was horrible; that quack of a head researcher even rumored that the test ban would be lifted, that we could be -book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison. +book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison. book_lore.bf_bomb_3.name=私人笔记 book_lore.bf_bomb_3.author=M. 波特 book_lore.bf_bomb_3.page.0=The team and I have made some breakthroughs. Emphasis on the separation - isolating myself from the more devout has made working there so much more bearable. While we still have no idea about the actual properties of balefire (it's difficult to analyze book_lore.bf_bomb_3.page.1=a sample that fries your equipment) its interactions with other matter has proved fruitful. Notably, they synthesized a "gaseous" form: Andrew, of all people, informed me that it was really a colloid consisting of microscopic balefire particles, suspended in some book_lore.bf_bomb_3.page.2=noble gas. Each particle is enveloped by a positively-charged 'bubble' of ionized gas, preventing it from settling. Who could've guessed that fatal gamma radiation had a benefit? Not me. $ I'm choosing not to think about how they transformed the sample into -book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off. +book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off. book_lore.bf_bomb_3.page.4=He decided to get "dirty" by letting a cell of our new colloid interact directly with some very expensive antimatter: the resulting explosion turned the table it was on into a piece of radiation-bleached slag, carved a near-perfect hemisphere through book_lore.bf_bomb_3.page.5=the top, and gave the head a healthy dose of ARS. I guess we know how to make it explode now, but god, some people... book_lore.bf_bomb_4.name=私人笔记 @@ -404,6 +404,20 @@ book_lore.bf_bomb_5.page.5=resigning, I just grabbed my shit and ran for the hil book_lore.bf_bomb_5.page.6=There's a vital distinction to be made between dissection and VIVISECTION, one which was clearly lost on them. They can dissect metal or atoms as much as they like, but tearing into, vivisecting reality itself is only going to end in more Dr. Melfyns. Who knows! book_lore.bf_bomb_5.page.7=The government wants to put this shit into bombs after all, maybe we'll see a couple more wars, couple more million resigned to a fate worse than death. They can't hide this forever. $ $ I don't care. Not anymore. Please, god, let me go back book_lore.bf_bomb_5.page.8=to actual science. $ $ Goddamnit, Mae, get ahold of yourself... +book_lore.beacon.name=信号信标说明书 +book_lore.beacon.author=Flim Flam工业 +book_lore.beacon.page.0=感谢您购买Mk.2照明信号信标(版本1.3)!这本小册子将简要介绍信标的操作及其内部工作原理。 +book_lore.beacon.page.1=第1章:建筑$每个单元由四个主要部分组成:控制电路、灯笼、雾灯和容纳其他部分的外壳。有关主电路的详细说明,请 +book_lore.beacon.page.2=灯笼由聚碳酸酯外壳组成,外壳内有一个标准200mm的双色250瓦卤素灯泡,因此灯泡可以从我们的商店订购。 +book_lore.beacon.page.3=不建议使用第三方灯泡,因为我们无法确保安全操作。外壳由专门的镀锌不锈钢制成,具有耐用性。 +book_lore.beacon.page.4=第2章:灯笼$灯笼的主要用途是在恶劣的天气条件下提供照明,便于维护,以及状态指示器。如果开机自检(POST)失败,指示灯将 +book_lore.beacon.page.5=亮起红色,否则就会亮起绿色。请注意,颜色可能因更换灯泡的不同而有所不同。 +book_lore.beacon.page.6=第3章:雾灯$雾灯是信标的主要通信设备。该信标被设计用于对等(P2P)通信以及消息广播。 +book_lore.beacon.page.7=第4章:对等$有关通信的详细信息,请参阅通信手册。建立P2P连接的简要介绍如下:首先,信标必须给出“START connection”信号, +book_lore.beacon.page.8=是单一的长音。所有可用的对等端也应使用一个长音进行响应(由接近度指定的顺序,以及手册“响应连接”一节中概述的通信指南) +book_lore.beacon.page.9=一旦所需对等端做出响应,则给出“ACCEPT CONNECTION”信号,即两个长音,然后对等端也将用两个长音调进行响应。之后的所有通信都必须使用预先协商的信号来进行, +book_lore.beacon.page.10=最常用的是FAR-5M标准。如果没有协商标准,沟通将立即结束,起到“ping”的作用。如果通信继续,可以使用另一个长单音“END connection”结束连接。 +book_lore.beacon.page.11=第5章:保修$[页面故意留空] cannery.f1=[按F1键获取帮助] cannery.centrifuge=气体离心机 cannery.centrifuge.0=气体离心机可以使用通用流体管道传输流体。 @@ -567,6 +581,11 @@ chem.VIT_LIQUID=液态核废料玻璃化 chem.XENON=林德循环制氙 chem.XENON_OXY=增强林德循环制氙 chem.YELLOWCAKE=黄饼生产 +commands.satellite.no_satellite=未找到使用此频率的卫星! +commands.satellite.not_a_satellite=持有的物品不是卫星! +commands.satellite.satellite_descended=卫星成功降落。 +commands.satellite.satellite_orbited=卫星发射。 +commands.satellite.should_be_run_as_player=此命令应该由玩家运行! container.amsBase=AMS基座(装饰) container.amsEmitter=AMS发射极(装饰) container.amsLimiter=AMS稳能器(装饰) @@ -592,6 +611,7 @@ container.craneUnboxer=输送带解包机 container.crateDesh=Desh箱 container.crateIron=铁箱 container.crateSteel=钢箱 +container.crateTemplate=模板箱 container.crateTungsten=钨箱 container.crystallizer=矿物酸化器 container.cyclotron=回旋加速器 @@ -636,6 +656,7 @@ container.machineCompressor=压缩机 container.machineCrucible=坩埚 container.machineDiesel=柴油发电机 container.machineElectricBoiler=电锅炉 +container.machineElectrolyser=电解机 container.machineFEL=FEL container.machineITER=聚变反应堆 container.machineLargeTurbine=工业汽轮机 @@ -693,6 +714,7 @@ container.reactorResearch=研究型反应堆 container.reix=Rei-X主机 container.rtg=放射性同位素发电机 container.rtgFurnace=放射性同位素热力炉[RTG] +container.rttyCounter=红石无线项目计数器 container.rttyReceiver=无线红石接收器 container.rttySender=无线红石发射器 container.safe=保险箱 @@ -980,6 +1002,11 @@ entity.hbm.entity_balls_o_tron_seg.name=机械蠕虫 entity.hbm.entity_bullet.name=子弹 entity.hbm.entity_rocket.name=火箭弹 entity.hbm.entity_schrabnel.name=Schrabnel +excavator.crusher=粉碎开关 +excavator.drill=挖掘开关 +excavator.silktouch=精准采集开关 +excavator.veinminer=连锁挖矿开关 +excavator.walling=填充开关 flare.ignition=点火装置 flare.valve=流量阀 fluid.acid_fluid=酸 @@ -1007,6 +1034,7 @@ gun.make.CERIX=赛里克斯·马格努斯锻造世界 gun.make.COLT=柯尔特制造公司 gun.make.COMBINE=世界工会 gun.make.CUBE=Cube 2: Sauerbraten +gun.make.DRG=深岩银河 gun.make.ENZINGER=Enzinger工会 gun.make.EQUESTRIA=小马国导弹系统 gun.make.FLIMFLAM=FlimFlam“欺骗”工业 @@ -1107,7 +1135,7 @@ gun.name.tommy9=M1A1冲锋枪9毫米型 gun.name.tommy=M1A1冲锋枪 gun.name.topaz=重型火焰燃烧器 gun.name.uacCarbine=UAC-41卡宾枪 -gun.name.uacDeagle=UAC-H54 "Martian Raptor" Automag +gun.name.uacDeagle=UAC-H54“火星猛禽”大容量手枪 gun.name.uacDMR=UAC-30 精确射手步枪 gun.name.uacLMG=UAC-49轻机枪 gun.name.uacPistol=UAC-B950 .45 标准型手枪 @@ -1221,6 +1249,7 @@ hbmfluid.heavyoil=重油 hbmfluid.heavyoil_vacuum=减压重油 hbmfluid.heavywater=重水 hbmfluid.helium3=氦-3 +hbmfluid.helium4=氦-4 hbmfluid.hotcrackoil=热裂化油 hbmfluid.hotoil=热原油 hbmfluid.hotsteam=热蒸汽 @@ -1259,7 +1288,7 @@ hbmfluid.plasma_dh3=氘-氦3 等离子体 hbmfluid.plasma_dt=氘-氚等离子体 hbmfluid.plasma_hd=氢-氘等离子体 hbmfluid.plasma_ht=氢-氚等离子体 -hbmfluid.plasma_xm=氙-汞等离子体 +hbmfluid.plasma_xm=液氧-氦-4等离子体 hbmfluid.potassium_chloride=氯化钾溶液 hbmfluid.puf6=六氟化钚 hbmfluid.radiosolvent=高性能溶剂 @@ -1272,6 +1301,9 @@ hbmfluid.sas3=三硫化Sa hbmfluid.schrabidic=Sa酸 hbmfluid.seedslurry=播种浆料 hbmfluid.smear=工业油 +hbmfluid.smoke=烟雾 +hbmfluid.smoke_leaded=含铅烟雾 +hbmfluid.smoke_poison=有毒烟雾 hbmfluid.solvent=有机溶剂 hbmfluid.sourgas=高硫天然气 hbmfluid.spentsteam=低压蒸汽 @@ -1392,6 +1424,7 @@ hbmmat.watzmud=毒泥浆 hbmmat.whitephosphorus=白磷 hbmmat.workersalloy=Desh hbmmat.wroughtiron=锻铁 +hbmmat.zirconium=锆 matshape.block=%s 块 matshape.blocks=%s 块 matshape.ingot=%s 锭 @@ -1540,6 +1573,9 @@ item.ammo_arty_phosgene.name=16英寸光气炮弹 item.ammo_arty_phosphorus.name=16英寸磷炮弹 item.ammo_arty_phosphorus_multi.name=16英寸多弹头磷炮弹 item.ammo_cell.name=能量单元 +item.ammo_coilgun.name=钨制线圈枪子弹 +item.ammo_coilgun_du.name=铀铁合金制线圈枪子弹 +item.ammo_coilgun_rubber.name=橡胶制线圈枪子弹 item.ammo_container.name=万能弹药盒 item.ammo_dart.name=塑料镖[凋零] item.ammo_dart_nerf.name=NERF 飞镖 @@ -2208,8 +2244,8 @@ item.crystal_phosphorus.name=磷晶体 item.crystal_plutonium.name=钚晶体 item.crystal_rare.name=稀土晶体 item.crystal_redstone.name=红石晶体 -item.crystal_schrabidium.name=低丰度Sa326晶体 -item.crystal_schraranium.name=Sa326晶体 +item.crystal_schrabidium.name=Sa326晶体 +item.crystal_schraranium.name=低丰度Sa326晶体 item.crystal_starmetal.name=星辉晶体 item.crystal_sulfur.name=硫晶体 item.crystal_thorium.name=钍晶体 @@ -2309,6 +2345,7 @@ item.early_explosive_lenses.desc=8个炸药透镜的组装,带有铝合金推 item.egg_balefire.name=野火蛋 item.egg_balefire.desc=什么样的鸟儿才会下带有放射性的蛋? item.egg_balefire_shard.name=野火蛋碎片 +item.egg_glyphid.name=Glyphid Egg item.elec_axe.name=电锯 item.elec_pickaxe.name=冲击钻 item.elec_shovel.name=螺旋钻 @@ -2316,6 +2353,10 @@ item.elec_sword.name=电棍 item.energy_core.name=临时能源核心 item.entanglement_kit.name=纠缠部件 item.entanglement_kit.desc=传送机制作零件$通过$铍增强型资源扫描仪实现尺寸转换。 +item.envsuit_boots.name=M1TTY环保套装靴子 +item.envsuit_helmet.name=M1TTY环保套装头盔 +item.envsuit_legs.name=M1TTY环保套装护腿 +item.envsuit_plate.name=M1TTY环保套装胸甲 item.euphemium_boots.name=Ep靴子 item.euphemium_capacitor.name=Ep电容 item.euphemium_capacitor.desc=允许被动分散累积的正能量。 @@ -2430,11 +2471,14 @@ item.generator_front.name=发电机前部 item.generator_steel.name=发电机主体 item.glitch.name=故障 item.glowing_stew.name=发光真菌煲 +item.glyphid_meat.name=异虫肉 +item.glyphid_meat_grilled.name=熟异虫肉 item.goggles.name=护目镜 item.grenade_aschrab.name=可抛反Sa326 item.grenade_black_hole.name=黑洞手榴弹 item.grenade_breach.name=破甲手榴弹 item.grenade_burst.name=挖掘手榴弹 +item.grenate_cats.name=猫猫手榴弹 item.grenade_cloud.name=一罐云 item.grenade_cluster.name=集束手榴弹 item.grenade_electric.name=闪电炸弹 @@ -2479,6 +2523,7 @@ item.gun_avenger.name=CZ57复仇者机枪 item.gun_b92.name=§9B92能量手枪§r item.gun_b92_ammo.name=§9B92能量单元§r item.gun_b93.name=§cB93能量手枪§r +item.gun_benelli.name=Benelli自动喷枪(Drum Mod) item.gun_bf.name=BEL item.gun_bf_ammo.name=Mk.V小型AMAT-炮弹 –野火型 item.gun_bio_revolver.name=Atlas @@ -2492,6 +2537,7 @@ item.gun_calamity.name=希特勒的电锯 item.gun_calamity_ammo.name=.50BMG子弹 item.gun_calamity_dual.name=马鞍枪 item.gun_chemthrower.name=化学喷射器 +item.gun_coilgun.name=线圈枪 item.gun_cryolator.name=冻结者 item.gun_cryolator_ammo.name=急冻单元 item.gun_dampfmaschine.name=绝对不是开玩笑的武器 @@ -2585,6 +2631,7 @@ item.gun_super_shotgun.name="超级"猎枪 item.gun_super_shotgun.desc=超级烂! item.gun_supershotgun.name=超级猎枪 item.gun_thompson.name=汤姆森冲锋枪 +item.gun_uac_pistol.name=UAC .45手枪 item.gun_uboinik.name=Uboinik item.gun_uboinik_ammo.name=12x70 鹿弹 item.gun_uzi.name=Uzi冲锋枪 @@ -3066,6 +3113,9 @@ item.mysteryshovel.name=易碎锹 item.n2_charge.name=大型炸药 item.neutrino_lens.name=中子透镜 item.neutron_reflector.name=中子反射板 +item.night_vision.name=夜视眼镜 +item.night_vision.description.item=提供夜视功能(需要全套电动设备) +item.night_vision.description.in_armor=%s(允许夜视) item.niter.name=硝石粉 item.no9.name=矿工头盔 item.nossy_hat.name=华丽的帽子 @@ -3838,6 +3888,9 @@ item.singularity_super_heated.name=超热共振奇点 item.siox.name=SiOX抗癌药物 item.siox.desc=使用石棉的力量逆转间皮瘤! item.siren_track.name=警报声轨 +item.sliding_blast_door_skin.0.name=滑动防爆门 皮肤:默认 +item.sliding_blast_door_skin.1.name=滑动防爆门 皮肤:变型1 +item.sliding_blast_door_skin.2.name=滑动防爆门 皮肤:变型2 item.smashing_hammer.name=粉碎锤 item.solid_fuel.name=固体燃料 item.solid_fuel_bf.name=固体燃料(野火) @@ -4421,6 +4474,7 @@ tile.charge_semtex.name=塞姆汀采矿炸药 tile.charger.name=充电站 tile.cheater_virus.name=冻结Ep tile.cheater_virus_seed.name=不稳定Ep Schrabide块 +tile.chimney_brick.name=烟囱 tile.chlorine_gas.name=氯气 tile.cluster_aluminium.name=铝矿簇 tile.cluster_copper.name=铜矿簇 @@ -4429,6 +4483,30 @@ tile.cluster_depth_titanium.name=深层钛矿簇 tile.cluster_depth_tungsten.name=深层钨矿簇 tile.cluster_iron.name=铁矿簇 tile.cluster_titanium.name=钛矿簇 +tile.cm_block.alloy.name=高级合金机器外壳 +tile.cm_block.desh.name=Desh机器外壳 +tile.cm_block.steel.name=钢制机器外壳 +tile.cm_block.tcalloy.name=锝钢机器外壳 +tile.cm_circuit.aluminium.name=一级电路块 +tile.cm_circuit.copper.name=二级电路块 +tile.cm_circuit.gold.name=四级电路块 +tile.cm_circuit.red_copper.name=三级电路块 +tile.cm_circuit.schrabidium.name=五级电路块 +tile.cm_engine.bismuth.name=铋电机组 +tile.cm_engine.desh.name=DESH电机组 +tile.cm_engine.standard.name=电机组 +tile.cm_port.alloy.name=高级合金端口 +tile.cm_port.desh.name=Desh端口 +tile.cm_port.steel.name=钢制端口 +tile.cm_port.tcalloy.name=锝钢端口 +tile.cm_sheet.alloy.name=高级合金建筑板 +tile.cm_sheet.desh.name=Desh建筑板 +tile.cm_sheet.steel.name=钢建筑板 +tile.cm_sheet.tcalloy.name=锝钢建筑板 +tile.cm_tank.alloy.name=高级合金储罐 +tile.cm_tank.desh.name=Desh储罐 +tile.cm_tank.steel.name=钢制储罐 +tile.cm_tank.tcalloy.name=锝钢储罐 tile.cmb_brick.name=CMB钢瓦块 tile.cmb_brick_reinforced.name=加固CMB钢砖块 tile.compact_launcher.name=紧凑型发射台 @@ -4497,6 +4575,7 @@ tile.crate_lead.name=危险品补给箱 tile.crate_metal.name=机器补给箱 tile.crate_red.name=红色补给箱 tile.crate_steel.name=钢箱 +tile.crate_template.name=模板箱 tile.crate_tungsten.name=钨箱 tile.crate_weapon.name=武器补给箱 tile.crystal_hardened.name=硬化黑水晶 @@ -4595,11 +4674,14 @@ tile.flame_war.name=盒中论战 tile.float_bomb.name=悬浮炸弹 tile.fluid_duct.name=通用流体管道 tile.fluid_duct_box.name=通用流体管道(方形) +tile.fluid_duct_exhaust.name=排气管 tile.fluid_duct_gauge.name=流量计管 tile.fluid_duct_gauge.desc=显示每个游戏刻在管网有多少流体移动的管道$由桶或罐连接的分离网络被视为一个共享网络。 tile.fluid_duct_neo.name=通用流体管道 tile.fluid_duct_paintable.name=可喷漆涂层通用流体导管 tile.fluid_duct_solid.name=带涂层的通用流体导管 +tile.fluid_switch.name=红石流体阀 +tile.fluid_valve.name=流体阀 tile.foam_layer.name=泡沫层 tile.foundry_basin.name=铸造盘 tile.foundry_channel.name=铸造浇道 @@ -4671,6 +4753,10 @@ tile.hadron_coil_neodymium.name=致密钕线圈 tile.hadron_coil_schrabidate.name=致密Sa酸铁线圈 tile.hadron_coil_schrabidium.name=密集Sa326线圈 tile.hadron_coil_starmetal.name=密集星辉线圈 +tile.hadron_cooler.name=粒子加速器冷却装置 +tile.hadron_cooler.desc=冷却功率:10$过冷阈值:10$冷却加成:+10%%$过冷惩罚:-25%% +tile.hadron_cooler_mk2.name=粒子加速器冷却装置-回文特制 +tile.hadron_cooler_mk2.desc=冷却功率:5$效率功能:2-(冷却-15)2/225$最高惩罚:-90%% tile.hadron_core.name=粒子加速器核心组件 tile.hadron_diode.name=肖基特二极管 tile.hadron_plating.name=粒子加速器镀层 @@ -4769,6 +4855,7 @@ tile.machine_dineutronium_battery.name=Spark蓄电池 tile.machine_drill.name=自动采矿钻机 tile.machine_electric_furnace_off.name=电炉 tile.machine_electric_furnace_on.name=电炉 +tile.machine_electrolyser.name=电解机 tile.machine_epress.name=电动锻压机 tile.machine_excavator.name=大型采矿钻机 tile.machine_fel.name=FEL自由电子激光器 @@ -4782,6 +4869,8 @@ tile.machine_gascent.name=气体离心机 tile.machine_generator.name=核反应堆[旧] tile.machine_geo.name=地热发电机 tile.machine_hephaestus.name=地热换热器 +tile.machine_industrial_boiler.name=工业锅炉 +tile.machine_industrial_boiler.desc=可以烧水或加热油的大型锅炉$需要外部热源$传热率:ΔT*0.01 TU/T$不会爆炸 tile.machine_industrial_generator.name=工业发电机 tile.machine_keyforge.name=锁匠桌 tile.machine_large_turbine.name=工业汽轮机 @@ -4988,6 +5077,8 @@ tile.pribris.name=RBMK石墨式反应堆残骸 tile.pribris_burning.name=燃烧的RBMK反应堆残骸 tile.pribris_digamma.name=发黑的RBMK反应堆残骸 tile.pribris_radiating.name=阴燃的RBMK反应堆残骸 +tile.radio_torch_counter.name=红石无线项目计数器 +tile.radio_torch_counter.desc=平面或比较器兼容块上的标牌$根据匹配项目的数量发出信号 tile.radio_torch_receiver.name=无线红石信号接收器 tile.radio_torch_receiver.desc=可在平坦表面或与比较器兼容的方块上放置 tile.radio_torch_sender.name=无线红石信号发射器 @@ -5080,6 +5171,7 @@ tile.sellafield.4.name=地狱般的放射性熔融凝固物 tile.sellafield.5.name=放射性熔融凝固物核心 tile.sellafield_slaked.name=消沉的放射性熔融凝固物 tile.semtex.name=塞姆汀塑胶炸药 +tile.sliding_blast_door.name=滑动防爆门 tile.solar_mirror.name=定日镜 tile.soyuz_capsule.name=货物着陆舱 tile.soyuz_launcher.name=联盟号发射平台 diff --git a/src/main/resources/assets/hbm/models/projectiles/leadburster.obj b/src/main/resources/assets/hbm/models/projectiles/leadburster.obj new file mode 100644 index 000000000..994ea3b72 --- /dev/null +++ b/src/main/resources/assets/hbm/models/projectiles/leadburster.obj @@ -0,0 +1,1671 @@ +# Blender v2.79 (sub 0) OBJ File: 'leadburster.blend' +# www.blender.org +o Based.001 +v -0.015017 4.297415 -1.162174 +v -0.015017 4.297415 1.146320 +v 0.576962 3.955635 1.146320 +v 0.576962 3.955635 -1.162174 +v 0.576962 3.272077 1.146320 +v 0.576962 3.272077 -1.162174 +v -0.015017 2.930297 1.146320 +v -0.015017 2.930298 -1.162174 +v -0.606996 3.272077 1.146320 +v -0.606996 3.272077 -1.162174 +v 0.489972 3.322300 1.146320 +v -0.015017 3.030745 1.146320 +v -0.606996 3.955635 1.146320 +v -0.606996 3.955635 -1.162174 +v 0.491289 3.321540 -1.162174 +v 0.491289 3.906172 -1.162174 +v -0.520006 3.322300 1.146320 +v -0.015017 3.030745 0.868875 +v -0.520006 3.322300 0.868875 +v -0.520006 3.905411 1.146320 +v -0.015017 4.196967 1.146320 +v 0.489972 3.905411 1.146320 +v 0.489972 3.322300 0.868875 +v 0.455764 3.342050 0.868875 +v -0.015017 3.070245 0.868875 +v 0.489972 3.905411 0.868875 +v -0.520006 3.905411 0.868875 +v -0.015017 4.196967 0.868875 +v 0.455764 3.885662 0.868875 +v 0.394149 3.850088 1.153171 +v 0.394149 3.377624 1.153171 +v -0.015017 4.157467 0.868875 +v -0.485798 3.885662 0.868875 +v -0.485798 3.342051 0.868875 +v -0.015017 4.086320 1.153171 +v -0.424183 3.850088 1.153171 +v -0.424183 3.377624 1.153171 +v -0.015017 3.141392 1.153171 +v -0.521323 3.321540 -1.162174 +v -0.521323 3.906172 -1.162174 +v -0.487987 3.886926 -0.844068 +v -0.487987 3.340786 -0.844068 +v -0.015017 4.198488 -1.162174 +v -0.015017 3.029224 -1.162174 +v -0.015017 4.159995 -0.844068 +v -0.015017 4.086784 -1.161144 +v -0.424585 3.850320 -1.161144 +v -0.015017 3.067717 -0.844068 +v 0.457954 3.340786 -0.844068 +v 0.457954 3.886926 -0.844068 +v 0.394551 3.850320 -1.161144 +v 0.394551 3.377392 -1.161144 +v -0.015017 3.140928 -1.161144 +v -0.424585 3.377392 -1.161144 +v 0.308285 1.821139 -0.740607 +v 0.305698 1.821139 0.741679 +v -0.308285 1.821139 0.740608 +v -0.305698 1.821139 -0.741679 +v -0.308285 2.128531 0.740608 +v -0.305698 2.128531 -0.741679 +v 0.305698 2.128531 0.741679 +v 0.308285 2.128531 -0.740607 +v 0.305698 3.115462 0.741679 +v -0.308285 3.099616 0.740608 +v -0.015017 2.930297 0.741119 +v -0.305698 2.128531 -1.038465 +v -0.305698 1.821139 -1.038465 +v -0.308285 1.821139 1.036965 +v 0.305698 1.821139 1.038465 +v 0.305698 2.128531 1.038465 +v -0.308285 2.128531 1.036965 +v 0.308285 1.821139 -1.036965 +v 0.308285 2.128531 -1.036965 +v -0.305698 3.098122 -0.741679 +v -0.305698 3.098122 -1.038465 +v -0.015017 2.930297 -1.037755 +v 0.308285 3.116956 -1.036965 +v 0.305698 3.115462 1.038465 +v 0.308285 3.116956 -0.740607 +v -0.015017 2.930297 -0.741172 +v -0.308285 3.099616 1.036965 +v -0.015017 2.930297 1.037682 +vt 0.639483 0.175662 +vt 0.663689 0.275699 +vt 0.639518 0.275817 +vt 0.511157 0.563979 +vt 0.552869 0.765382 +vt 0.511157 0.765383 +vt 0.808845 0.848002 +vt 0.753093 0.471432 +vt 0.808845 0.471432 +vt 0.753093 0.848002 +vt 0.697341 0.471432 +vt 0.697340 0.848002 +vt 0.641588 0.471432 +vt 0.976102 0.471432 +vt 0.920349 0.848002 +vt 0.920349 0.471432 +vt 0.641588 0.848002 +vt 0.693244 0.862192 +vt 0.645685 0.862192 +vt 0.864597 0.471432 +vt 0.864597 0.848002 +vt 0.749058 0.457457 +vt 0.972005 0.862192 +vt 0.924446 0.907449 +vt 0.924446 0.862192 +vt 0.812941 0.862192 +vt 0.976102 0.848002 +vt 0.748996 0.862192 +vt 0.701437 0.862192 +vt 0.868694 0.862192 +vt 0.804749 0.862192 +vt 0.757189 0.862192 +vt 0.693244 0.907449 +vt 0.647296 0.913030 +vt 0.645685 0.907450 +vt 0.701437 0.907450 +vt 0.916253 0.862192 +vt 0.868694 0.907450 +vt 0.757189 0.907450 +vt 0.860501 0.862192 +vt 0.812941 0.907450 +vt 0.747386 0.913030 +vt 0.705949 0.960482 +vt 0.703048 0.913030 +vt 0.804749 0.907450 +vt 0.758800 0.913030 +vt 0.858890 0.913030 +vt 0.814552 0.913030 +vt 0.970394 0.913030 +vt 0.926057 0.913030 +vt 0.748996 0.907450 +vt 0.914642 0.913030 +vt 0.870304 0.913030 +vt 0.537788 0.150505 +vt 0.557055 0.083760 +vt 0.614858 0.150505 +vt 0.873206 0.960482 +vt 0.691633 0.913030 +vt 0.650197 0.960482 +vt 0.800236 0.960482 +vt 0.761701 0.960482 +vt 0.817454 0.960482 +vt 0.928958 0.960482 +vt 0.916315 0.457457 +vt 0.870201 0.405282 +vt 0.914745 0.405282 +vt 0.757127 0.457457 +vt 0.804811 0.457457 +vt 0.693306 0.457457 +vt 0.860563 0.457457 +vt 0.924384 0.457457 +vt 0.972067 0.457457 +vt 0.858993 0.405282 +vt 0.817435 0.352535 +vt 0.856008 0.352536 +vt 0.647192 0.405282 +vt 0.691737 0.405282 +vt 0.803241 0.405282 +vt 0.812879 0.457457 +vt 0.925954 0.405282 +vt 0.970497 0.405282 +vt 0.701375 0.457457 +vt 0.747489 0.405282 +vt 0.537788 0.313976 +vt 0.557086 0.247179 +vt 0.595659 0.247206 +vt 0.967512 0.352535 +vt 0.705930 0.352536 +vt 0.744503 0.352536 +vt 0.911760 0.352535 +vt 0.688751 0.352536 +vt 0.761682 0.352536 +vt 0.800255 0.352536 +vt 0.636347 0.765383 +vt 0.615464 0.563979 +vt 0.636347 0.563979 +vt 0.573752 0.563979 +vt 0.615464 0.765383 +vt 0.573752 0.765382 +vt 0.688760 0.026976 +vt 0.767964 0.026976 +vt 0.754154 0.074815 +vt 0.552869 0.563979 +vt 0.863701 0.015410 +vt 0.838629 0.063823 +vt 0.838629 0.015410 +vt 0.663689 0.175544 +vt 0.688760 0.275699 +vt 0.863701 0.163978 +vt 0.838629 0.163978 +vt 0.688760 0.127131 +vt 0.663689 0.127131 +vt 0.663689 0.324042 +vt 0.688760 0.324042 +vt 0.942782 0.063823 +vt 0.863701 0.063823 +vt 0.838629 0.212321 +vt 0.863701 0.212321 +vt 0.814423 0.063941 +vt 0.814458 0.164096 +vt 0.929094 0.111240 +vt 0.688760 0.175544 +vt 0.769256 0.127131 +vt 0.769256 0.175544 +vt 0.944318 0.163978 +vt 0.944318 0.212321 +vt 0.929094 0.265060 +vt 0.754154 0.227860 +vt 0.767964 0.324042 +vt 0.972005 0.907450 +vt 0.916253 0.907450 +vt 0.860501 0.907450 +vt 0.744484 0.960482 +vt 0.803138 0.913030 +vt 0.595590 0.083760 +vt 0.595590 0.217249 +vt 0.557055 0.217249 +vt 0.911741 0.960482 +vt 0.688732 0.960482 +vt 0.855989 0.960482 +vt 0.967493 0.960482 +vt 0.868631 0.457457 +vt 0.645623 0.457457 +vt 0.814449 0.405282 +vt 0.758697 0.405282 +vt 0.702945 0.405282 +vt 0.614933 0.314029 +vt 0.595636 0.380826 +vt 0.557063 0.380800 +vt 0.928939 0.352535 +vt 0.873187 0.352535 +vt 0.650178 0.352536 +vt 0.942782 0.015410 +vt 0.942782 0.312477 +vt 0.863701 0.312477 +vt 0.767964 0.275699 +vn 0.0000 -1.0000 0.0000 +vn 0.5000 0.8660 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.9773 0.0000 0.2118 +vn -0.9773 0.0000 0.2118 +vn 0.4887 -0.8464 0.2118 +vn 0.4887 0.8464 0.2118 +vn -0.4887 0.8464 0.2118 +vn -0.4887 -0.8464 0.2118 +vn 0.9946 0.0000 -0.1042 +vn -0.4903 0.8492 -0.1961 +vn -0.4973 0.8613 -0.1042 +vn -0.4973 -0.8613 -0.1042 +vn 0.4973 -0.8613 -0.1042 +vn 0.4973 0.8613 -0.1042 +vn -0.9946 0.0000 -0.1042 +vn -0.4903 -0.8492 -0.1961 +vn 0.9806 0.0000 -0.1961 +vn -0.9806 0.0000 -0.1961 +vn 0.4903 -0.8492 -0.1961 +vn 0.4903 0.8492 -0.1961 +vn -1.0000 -0.0000 -0.0017 +vn 0.0000 1.0000 -0.0000 +vn 0.0017 0.0000 -1.0000 +vn 1.0000 0.0000 0.0017 +vn -0.0024 0.0000 1.0000 +vn 0.0024 0.0000 -1.0000 +vn -0.0017 0.0000 1.0000 +s off +f 56/1/1 68/2/1 57/3/1 +f 58/4/1 56/5/1 57/6/1 +f 2/7/2 4/8/2 1/9/2 +f 3/10/3 6/11/3 4/8/3 +f 5/12/4 8/13/4 6/11/4 +f 8/14/5 9/15/5 10/16/5 +f 7/17/6 11/18/6 12/19/6 +f 9/15/7 14/20/7 10/16/7 +f 13/21/8 1/9/8 14/20/8 +f 6/11/9 16/22/9 4/8/9 +f 12/23/2 19/24/2 17/25/2 +f 13/21/6 21/26/6 2/7/6 +f 7/27/6 17/25/6 9/15/6 +f 5/12/6 22/28/6 11/29/6 +f 9/15/6 20/30/6 13/21/6 +f 3/10/6 21/31/6 22/32/6 +f 23/33/6 25/34/6 18/35/6 +f 22/28/7 23/36/7 11/29/7 +f 17/37/3 27/38/3 20/30/3 +f 11/18/8 18/35/8 12/19/8 +f 21/31/5 26/39/5 22/32/5 +f 20/40/4 28/41/4 21/26/4 +f 29/42/10 31/43/10 24/44/10 +f 28/45/6 29/46/6 26/39/6 +f 28/41/6 33/47/6 32/48/6 +f 19/24/6 25/49/6 34/50/6 +f 26/51/6 24/44/6 23/36/6 +f 27/38/6 34/52/6 33/53/6 +f 38/54/6 31/55/6 35/56/6 +f 34/52/11 36/57/11 33/53/11 +f 24/58/12 38/59/12 25/34/12 +f 29/46/13 35/60/13 30/61/13 +f 33/47/14 35/62/14 32/48/14 +f 25/49/15 37/63/15 34/50/15 +f 39/64/16 41/65/16 42/66/16 +f 14/20/9 39/64/9 10/16/9 +f 1/9/9 16/67/9 43/68/9 +f 8/13/9 15/69/9 6/11/9 +f 1/9/9 40/70/9 14/20/9 +f 8/14/9 39/71/9 44/72/9 +f 41/73/17 46/74/17 47/75/17 +f 15/69/18 48/76/18 49/77/18 +f 16/67/19 45/78/19 43/68/19 +f 43/79/20 41/73/20 40/70/20 +f 44/72/21 42/80/21 48/81/21 +f 15/82/22 50/83/22 16/22/22 +f 53/84/9 54/85/9 47/86/9 +f 42/80/23 53/87/23 48/81/23 +f 50/83/24 52/88/24 51/89/24 +f 41/65/25 54/90/25 42/66/25 +f 48/76/26 52/91/26 49/77/26 +f 45/78/27 51/92/27 46/93/27 +f 57/94/28 60/95/28 58/96/28 +f 62/97/29 59/98/29 61/99/29 +f 59/100/30 64/101/30 65/102/30 +f 55/103/31 61/99/31 56/5/31 +f 60/104/7 67/105/7 58/106/7 +f 69/107/32 71/108/32 68/2/32 +f 67/105/33 73/109/33 72/110/33 +f 61/111/3 69/107/3 56/112/3 +f 57/113/7 71/108/7 59/114/7 +f 60/104/7 75/115/7 66/116/7 +f 55/117/3 73/109/3 62/118/3 +f 58/119/1 72/110/1 55/120/1 +f 66/116/33 75/115/33 76/121/33 +f 70/122/3 63/123/3 78/124/3 +f 62/118/3 77/125/3 79/126/3 +f 62/118/34 79/126/34 80/127/34 +f 70/122/32 78/124/32 82/128/32 +f 71/108/7 64/129/7 59/114/7 +f 56/1/1 69/107/1 68/2/1 +f 58/4/1 55/103/1 56/5/1 +f 2/7/2 3/10/2 4/8/2 +f 3/10/3 5/12/3 6/11/3 +f 5/12/4 7/17/4 8/13/4 +f 8/14/5 7/27/5 9/15/5 +f 7/17/6 5/12/6 11/18/6 +f 9/15/7 13/21/7 14/20/7 +f 13/21/8 2/7/8 1/9/8 +f 6/11/9 15/82/9 16/22/9 +f 12/23/2 18/130/2 19/24/2 +f 13/21/6 20/40/6 21/26/6 +f 7/27/6 12/23/6 17/25/6 +f 5/12/6 3/10/6 22/28/6 +f 9/15/6 17/37/6 20/30/6 +f 3/10/6 2/7/6 21/31/6 +f 23/33/6 24/58/6 25/34/6 +f 22/28/7 26/51/7 23/36/7 +f 17/37/3 19/131/3 27/38/3 +f 11/18/8 23/33/8 18/35/8 +f 21/31/5 28/45/5 26/39/5 +f 20/40/4 27/132/4 28/41/4 +f 29/42/10 30/133/10 31/43/10 +f 28/45/6 32/134/6 29/46/6 +f 28/41/6 27/132/6 33/47/6 +f 19/24/6 18/130/6 25/49/6 +f 26/51/6 29/42/6 24/44/6 +f 27/38/6 19/131/6 34/52/6 +f 31/55/6 30/135/6 35/56/6 +f 35/56/6 36/136/6 37/137/6 +f 37/137/6 38/54/6 35/56/6 +f 34/52/11 37/138/11 36/57/11 +f 24/58/12 31/139/12 38/59/12 +f 29/46/13 32/134/13 35/60/13 +f 33/47/14 36/140/14 35/62/14 +f 25/49/15 38/141/15 37/63/15 +f 39/64/16 40/142/16 41/65/16 +f 14/20/9 40/142/9 39/64/9 +f 1/9/9 4/8/9 16/67/9 +f 8/13/9 44/143/9 15/69/9 +f 1/9/9 43/79/9 40/70/9 +f 8/14/9 10/16/9 39/71/9 +f 41/73/17 45/144/17 46/74/17 +f 15/69/18 44/143/18 48/76/18 +f 16/67/19 50/145/19 45/78/19 +f 43/79/20 45/144/20 41/73/20 +f 44/72/21 39/71/21 42/80/21 +f 15/82/22 49/146/22 50/83/22 +f 47/86/9 46/147/9 53/84/9 +f 46/147/9 51/148/9 53/84/9 +f 51/148/9 52/149/9 53/84/9 +f 42/80/23 54/150/23 53/87/23 +f 50/83/24 49/146/24 52/88/24 +f 41/65/25 47/151/25 54/90/25 +f 48/76/26 53/152/26 52/91/26 +f 45/78/27 50/145/27 51/92/27 +f 57/94/28 59/98/28 60/95/28 +f 62/97/29 60/95/29 59/98/29 +f 65/102/30 63/123/30 61/111/30 +f 61/111/30 59/100/30 65/102/30 +f 55/103/31 62/97/31 61/99/31 +f 60/104/7 66/116/7 67/105/7 +f 69/107/32 70/122/32 71/108/32 +f 67/105/33 66/116/33 73/109/33 +f 61/111/3 70/122/3 69/107/3 +f 57/113/7 68/2/7 71/108/7 +f 60/104/7 74/153/7 75/115/7 +f 55/117/3 72/110/3 73/109/3 +f 58/119/1 67/105/1 72/110/1 +f 77/125/33 73/109/33 76/121/33 +f 73/109/33 66/116/33 76/121/33 +f 70/122/3 61/111/3 63/123/3 +f 62/118/3 73/109/3 77/125/3 +f 80/127/34 74/154/34 60/155/34 +f 60/155/34 62/118/34 80/127/34 +f 82/128/32 81/156/32 71/108/32 +f 71/108/32 70/122/32 82/128/32 +f 71/108/7 81/156/7 64/129/7 +o Backlight +v -1.320666 5.883319 -0.497968 +v -0.984420 5.883904 -0.491350 +v -0.987140 5.302763 -0.301741 +v -1.323386 5.302178 -0.308359 +v -0.999171 5.303525 0.309437 +v -1.335417 5.302939 0.302818 +v -1.003886 5.885137 0.497557 +v -1.340132 5.884551 0.490938 +v -0.994770 6.243831 0.002643 +v -1.331016 6.243245 -0.003975 +v 0.021235 6.075014 -0.897532 +v 0.021235 6.075014 0.897532 +v 0.288019 5.707444 0.897532 +v 0.288019 5.707444 -0.897532 +v 0.103085 5.292618 0.897532 +v 0.103085 5.292618 -0.897532 +v -0.348631 5.245362 0.897532 +v -0.348631 5.245362 -0.897532 +v -0.615414 5.612932 0.897532 +v -0.615414 5.612932 -0.897532 +v -0.430481 6.027758 0.897532 +v -0.430481 6.027758 -0.897532 +v -0.868643 2.165176 0.689521 +v -1.105512 2.543972 0.689521 +v -1.105512 2.543972 -0.689521 +v -0.868643 2.165176 -0.689521 +v 1.105512 2.543972 -0.689521 +v 0.868643 2.165176 -0.689521 +v 0.868643 2.165176 0.689521 +v 1.199654 4.481366 0.689521 +v 1.199654 4.481366 -0.689521 +v 0.857499 6.338323 -0.688818 +v 0.857499 6.338323 0.688818 +v -1.094646 5.192699 -0.689521 +v 1.105512 2.543972 0.689521 +v -1.104364 2.657593 -0.454835 +v -1.095794 5.079079 -0.454835 +v -1.094646 5.192699 0.689521 +v -1.075323 6.338323 0.688818 +v -1.075323 6.338323 -0.688818 +v 0.443011 6.780780 -0.689521 +v -0.748752 6.780780 -0.689521 +v -0.748752 6.780780 0.689521 +v 0.443011 6.780780 0.689521 +v -1.095794 5.079079 0.454835 +v -1.560949 4.983612 -0.454835 +v -1.560949 4.983612 0.454835 +v -1.104364 2.657593 0.454835 +v -1.744408 4.759537 0.454835 +v -1.751578 2.847407 0.454835 +v -1.565712 2.659905 0.454835 +v -1.565712 2.659905 -0.454835 +v -1.751578 2.847407 -0.454835 +v -1.744408 4.759537 -0.454835 +v 0.902946 2.617983 -0.365337 +v 1.624929 2.505614 -0.365337 +v 1.571494 2.162292 -0.112895 +v 0.849512 2.274660 -0.112895 +v 1.591904 2.293429 0.295564 +v 0.869922 2.405798 0.295564 +v 1.657953 2.717800 0.295564 +v 0.935971 2.830168 0.295564 +v 1.678363 2.848937 -0.112895 +v 0.956381 2.961306 -0.112895 +v 0.675515 5.594983 -0.365337 +v 1.390851 5.743908 -0.365337 +v 1.461669 5.403746 -0.112895 +v 0.746333 5.254820 -0.112895 +v 1.434619 5.533676 0.295564 +v 0.719283 5.384750 0.295564 +v 1.347083 5.954140 0.295564 +v 0.631746 5.805215 0.295564 +v 1.320033 6.084071 -0.112895 +v 0.604696 5.935145 -0.112895 +v 0.804842 4.824814 -0.365337 +v 1.529542 4.918053 -0.365337 +v 1.573880 4.573438 -0.112895 +v 0.849180 4.480198 -0.112895 +v 1.556945 4.705069 0.295564 +v 0.832244 4.611830 0.295564 +v 1.502140 5.131038 0.295564 +v 0.777439 5.037798 0.295564 +v 1.485204 5.262669 -0.112895 +v 0.760504 5.169430 -0.112895 +v 0.920711 4.059648 -0.365337 +v 1.648066 4.129222 -0.365337 +v 1.681150 3.783345 -0.112895 +v 0.953796 3.713770 -0.112895 +v 1.668513 3.915458 0.295564 +v 0.941159 3.845884 0.295564 +v 1.627618 4.342986 0.295564 +v 0.900264 4.273412 0.295564 +v 1.614981 4.475100 -0.112895 +v 0.887627 4.405526 -0.112895 +v 0.945849 3.338301 -0.365337 +v 1.676468 3.329257 -0.365337 +v 1.672167 2.981827 -0.112895 +v 0.941548 2.990872 -0.112895 +v 1.673810 3.114533 0.295564 +v 0.943191 3.123578 0.295564 +v 1.679126 3.543980 0.295564 +v 0.948508 3.553025 0.295564 +v 1.680769 3.676687 -0.112895 +v 0.950150 3.685731 -0.112895 +vt 0.734577 0.712371 +vt 0.689031 0.795268 +vt 0.706490 0.693161 +vt 0.804411 0.303943 +vt 0.758865 0.386840 +vt 0.776323 0.284733 +vt 0.786953 0.406050 +vt 0.741407 0.488948 +vt 0.752036 0.610264 +vt 0.723948 0.591054 +vt 0.704915 0.385185 +vt 0.689031 0.282055 +vt 0.633210 0.445087 +vt 0.609124 0.254698 +vt 0.633210 0.254698 +vt 0.609124 0.445087 +vt 0.585038 0.254698 +vt 0.729554 0.445087 +vt 0.705468 0.254698 +vt 0.729554 0.254698 +vt 0.705468 0.445087 +vt 0.681382 0.254698 +vt 0.729554 0.528523 +vt 0.693425 0.486805 +vt 0.681382 0.445087 +vt 0.657296 0.254698 +vt 0.657296 0.445087 +vt 0.693425 0.212980 +vt 0.705468 0.171262 +vt 0.174122 0.039077 +vt 0.146848 0.207453 +vt 0.146848 0.039077 +vt 0.137452 0.253472 +vt 0.120204 0.496470 +vt 0.115056 0.284604 +vt 0.116729 0.523112 +vt 0.010671 0.691488 +vt 0.010671 0.523112 +vt 0.262417 0.523112 +vt 0.377689 0.691402 +vt 0.262417 0.691488 +vt 0.144003 0.523112 +vt 0.144003 0.691488 +vt 0.335824 0.207453 +vt 0.181059 0.178798 +vt 0.328887 0.178799 +vt 0.335823 0.039077 +vt 0.405772 0.207367 +vt 0.298993 0.239102 +vt 0.374633 0.470381 +vt 0.487456 0.523112 +vt 0.414701 0.691488 +vt 0.414701 0.523112 +vt 0.368906 0.234669 +vt 0.400385 0.417212 +vt 0.377689 0.523198 +vt 0.405771 0.039163 +vt 0.439344 0.207453 +vt 0.120204 0.718130 +vt 0.137452 0.961127 +vt 0.115056 0.929996 +vt 0.116729 0.691488 +vt 0.374633 0.744218 +vt 0.298993 0.975498 +vt 0.400385 0.797388 +vt 0.368906 0.979930 +vt 0.347149 0.651237 +vt 0.318160 0.540170 +vt 0.347149 0.540170 +vt 0.328887 0.067731 +vt 0.174122 0.207453 +vt 0.181059 0.067731 +vt 0.300481 0.540170 +vt 0.183748 0.540170 +vt 0.172309 0.461061 +vt 0.183748 0.651237 +vt 0.300481 0.651237 +vt 0.172308 0.730346 +vt 0.167631 0.540170 +vt 0.318160 0.651237 +vt 0.139466 0.540170 +vt 0.167631 0.651237 +vt 0.139466 0.651237 +vt 0.296233 0.330392 +vt 0.392444 0.443495 +vt 0.296233 0.443495 +vt 0.392444 0.556598 +vt 0.296233 0.556598 +vt 0.296233 0.669700 +vt 0.092675 0.068302 +vt 0.075181 0.175984 +vt 0.018569 0.175984 +vt 0.392444 0.782803 +vt 0.296233 0.782803 +vt 0.296233 0.895906 +vt 0.006900 0.330392 +vt 0.103083 0.443589 +vt 0.006873 0.443495 +vt 0.006845 0.556598 +vt 0.103028 0.669794 +vt 0.006818 0.669701 +vt 0.046875 0.001750 +vt 0.092675 0.068302 +vt 0.075181 0.175984 +vt 0.006790 0.782803 +vt 0.103001 0.782897 +vt 0.006763 0.895906 +vt 0.488888 0.330392 +vt 0.392677 0.443495 +vt 0.392677 0.330393 +vt 0.488888 0.443495 +vt 0.392677 0.556598 +vt 0.488888 0.556598 +vt 0.392677 0.669700 +vt 0.046875 0.001750 +vt 0.092675 0.068302 +vt 0.075181 0.175984 +vt 0.488888 0.669700 +vt 0.392677 0.782803 +vt 0.488888 0.782803 +vt 0.392677 0.895906 +vt 0.296000 0.330393 +vt 0.199789 0.443496 +vt 0.199789 0.330392 +vt 0.295999 0.443495 +vt 0.199789 0.556598 +vt 0.295999 0.669701 +vt 0.199789 0.669701 +vt 0.046875 0.001750 +vt 0.092675 0.068302 +vt 0.075181 0.175984 +vt 0.199789 0.782803 +vt 0.296000 0.782803 +vt 0.199789 0.895906 +vt 0.103344 0.330393 +vt 0.199555 0.443495 +vt 0.103344 0.443495 +vt 0.103344 0.556598 +vt 0.199555 0.669701 +vt 0.103344 0.669701 +vt 0.046875 0.001750 +vt 0.092675 0.068302 +vt 0.075181 0.175984 +vt 0.199555 0.782803 +vt 0.103344 0.782803 +vt 0.199555 0.895906 +vt 0.103344 0.895906 +vt 0.717118 0.814478 +vt 0.769494 0.508157 +vt 0.733164 0.219973 +vt 0.585038 0.445087 +vt 0.741597 0.486805 +vt 0.705468 0.528523 +vt 0.729554 0.171262 +vt 0.741597 0.212980 +vt 0.487456 0.691488 +vt 0.396853 0.271873 +vt 0.439343 0.039077 +vt 0.396853 0.942726 +vt 0.172344 0.517391 +vt 0.320137 0.461124 +vt 0.314202 0.517873 +vt 0.314202 0.673534 +vt 0.320137 0.730284 +vt 0.172344 0.674016 +vt 0.392444 0.330393 +vt 0.392444 0.669700 +vt 0.001075 0.068302 +vt 0.046875 0.001750 +vt 0.392444 0.895906 +vt 0.103111 0.330486 +vt 0.103056 0.556692 +vt 0.018569 0.175984 +vt 0.001075 0.068302 +vt 0.102974 0.895999 +vt 0.018569 0.175984 +vt 0.001075 0.068302 +vt 0.488888 0.895906 +vt 0.296000 0.556598 +vt 0.018569 0.175984 +vt 0.001075 0.068302 +vt 0.296000 0.895906 +vt 0.199555 0.330392 +vt 0.199555 0.556598 +vt 0.018569 0.175984 +vt 0.001075 0.068302 +vn 0.0192 -0.3102 -0.9505 +vn 0.0017 -1.0000 0.0013 +vn -0.0182 -0.3078 0.9513 +vn -0.0130 0.8097 0.5866 +vn 0.0102 0.8083 -0.5887 +vn -0.9998 -0.0017 -0.0197 +vn 0.8093 0.5874 0.0000 +vn 0.9133 -0.4072 0.0000 +vn 0.1040 -0.9946 0.0000 +vn -0.8093 -0.5874 0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.9133 0.4072 0.0000 +vn -0.1040 0.9946 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.8477 -0.5305 -0.0013 +vn -0.8479 -0.5302 0.0000 +vn 0.0012 -0.0007 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.9834 0.1812 0.0000 +vn 0.9835 0.1807 -0.0002 +vn 0.0012 0.0005 -1.0000 +vn 0.9988 -0.0485 0.0000 +vn -1.0000 0.0003 -0.0029 +vn -1.0000 0.0051 -0.0032 +vn -1.0000 0.0044 -0.0018 +vn -0.9998 0.0177 -0.0031 +vn -0.9999 0.0164 0.0002 +vn -0.9999 0.0169 0.0032 +vn 0.0029 0.0020 -1.0000 +vn 0.0002 -0.0001 -1.0000 +vn 0.0001 0.0004 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0005 -0.0015 -1.0000 +vn 0.0000 -0.0016 -1.0000 +vn -0.0005 -0.0016 -1.0000 +vn 0.7297 0.6838 0.0005 +vn 0.7298 0.6837 0.0000 +vn 0.7296 0.6839 -0.0004 +vn -0.8045 0.5940 -0.0004 +vn -0.8046 0.5938 0.0000 +vn -0.8044 0.5941 0.0004 +vn 0.0007 -0.0011 1.0000 +vn 0.8479 -0.5302 0.0000 +vn 0.0013 -0.0000 1.0000 +vn -0.0001 -0.0001 1.0000 +vn 0.0033 0.0010 1.0000 +vn 0.0001 0.0004 1.0000 +vn 0.0000 -0.0016 1.0000 +vn 0.0005 -0.0016 1.0000 +vn -0.0005 -0.0014 1.0000 +vn -0.2007 0.9797 -0.0015 +vn -0.2010 0.9796 0.0000 +vn -0.2010 0.9796 -0.0016 +vn -0.9999 0.0098 0.0032 +vn -0.9999 0.0108 0.0014 +vn -1.0000 0.0092 -0.0031 +vn -0.9999 0.0102 -0.0013 +vn -1.0000 0.0086 -0.0004 +vn -0.9999 0.0103 0.0013 +vn -1.0000 0.0009 -0.0030 +vn -1.0000 0.0039 -0.0014 +vn -1.0000 0.0054 -0.0029 +vn -0.0007 0.0014 1.0000 +vn -0.0013 0.0009 -1.0000 +vn -1.0000 0.0037 0.0000 +vn -0.7102 -0.7040 0.0000 +vn -0.7737 0.6335 0.0000 +vn -0.0056 -1.0000 -0.0014 +vn -0.0050 -1.0000 0.0000 +vn -0.0058 -1.0000 0.0013 +vn -0.0904 -0.5808 -0.8090 +vn -0.1463 -0.9397 0.3090 +vn 0.9881 -0.1538 -0.0000 +vn 0.1463 0.9397 0.3090 +vn 0.0904 0.5808 -0.8090 +vn 0.1198 -0.5754 -0.8090 +vn 0.1938 -0.9311 0.3090 +vn 0.9790 0.2038 0.0000 +vn -0.1938 0.9311 0.3090 +vn -0.1198 0.5754 -0.8090 +vn 0.0750 -0.5830 -0.8090 +vn 0.1214 -0.9433 0.3090 +vn 0.9918 0.1276 -0.0000 +vn -0.1214 0.9433 0.3090 +vn -0.0750 0.5830 -0.8090 +vn 0.0560 -0.5851 -0.8090 +vn 0.0906 -0.9467 0.3090 +vn 0.9955 0.0952 0.0000 +vn -0.0906 0.9467 0.3090 +vn -0.0560 0.5851 -0.8090 +vn -0.0073 -0.5877 -0.8090 +vn -0.0118 -0.9510 0.3090 +vn 0.9999 -0.0124 0.0000 +vn 0.0118 0.9510 0.3090 +vn 0.0073 0.5877 -0.8090 +vn -0.8479 -0.5302 -0.0013 +vn -0.8473 -0.5311 0.0008 +vn 0.0013 -0.0001 -1.0000 +vn 0.9835 0.1812 0.0005 +vn 0.9835 0.1810 -0.0005 +vn 0.0005 0.0013 -1.0000 +vn 0.0031 -0.0010 -1.0000 +vn -1.0000 0.0009 0.0029 +vn -1.0000 0.0052 0.0037 +vn -1.0000 0.0052 0.0019 +vn -0.9998 0.0196 -0.0016 +vn -0.9999 0.0169 -0.0005 +vn -0.9999 0.0167 0.0005 +vn 0.0001 0.0038 -1.0000 +vn 0.0004 0.0002 -1.0000 +vn -0.0005 0.0004 -1.0000 +vn 0.0004 -0.0013 -1.0000 +vn 0.7294 0.6840 0.0000 +vn -0.8043 0.5942 -0.0000 +vn 0.0013 -0.0003 1.0000 +vn 0.0022 -0.0023 1.0000 +vn 0.0010 0.0009 1.0000 +vn -0.0005 0.0005 1.0000 +vn -0.0000 0.0001 1.0000 +vn 0.0013 0.0035 1.0000 +vn 0.0005 -0.0015 1.0000 +vn -0.1997 0.9799 -0.0008 +vn -1.0000 0.0087 0.0029 +vn -0.9999 0.0103 -0.0016 +vn -0.9999 0.0107 -0.0012 +vn -1.0000 0.0094 -0.0014 +vn -0.9999 0.0100 0.0015 +vn -1.0000 0.0007 0.0016 +vn -1.0000 0.0020 0.0032 +vn -1.0000 0.0051 0.0033 +vn -0.0015 0.0004 1.0000 +vn -0.0001 0.0015 1.0000 +vn -0.0014 -0.0007 1.0000 +vn -0.0015 -0.0003 1.0000 +vn 0.0015 0.0005 -1.0000 +vn 0.0008 0.0013 -1.0000 +vn -0.0003 0.0015 -1.0000 +vn -0.0015 0.0002 -1.0000 +vn -0.0065 -1.0000 -0.0003 +s off +f 84/157/35 86/158/35 83/159/35 +f 85/160/36 88/161/36 86/162/36 +f 87/163/37 90/164/37 88/161/37 +f 90/164/38 91/165/38 92/166/38 +f 91/165/39 83/159/39 92/166/39 +f 86/162/40 90/167/40 92/168/40 +f 94/169/41 96/170/41 93/171/41 +f 95/172/42 98/173/42 96/170/42 +f 97/174/43 100/175/43 98/176/43 +f 99/177/44 102/178/44 100/175/44 +f 94/179/45 101/180/45 97/174/45 +f 101/181/46 104/182/46 102/178/46 +f 103/183/47 93/171/47 104/182/47 +f 100/175/48 102/184/48 104/185/48 +f 106/186/49 108/187/50 105/188/50 +f 107/189/51 110/190/48 108/191/48 +f 110/192/52 105/193/52 108/194/52 +f 113/195/53 115/196/54 112/197/53 +f 107/189/55 113/195/48 109/198/48 +f 109/198/56 112/197/56 117/199/56 +f 116/200/57 118/201/58 119/202/59 +f 120/203/60 122/204/61 116/200/62 +f 116/205/63 114/206/64 113/195/65 +f 124/207/66 126/208/66 123/209/66 +f 122/210/67 123/211/68 114/206/69 +f 114/212/70 126/208/71 115/196/72 +f 121/213/73 124/214/74 122/204/75 +f 111/215/45 106/216/76 105/217/45 +f 110/192/77 117/199/77 111/218/77 +f 112/197/45 106/216/78 117/199/45 +f 115/219/79 120/220/80 112/197/81 +f 126/221/82 121/222/83 115/219/84 +f 119/223/85 129/224/86 127/225/87 +f 116/200/88 127/226/89 120/203/90 +f 106/186/91 118/201/92 107/227/93 +f 120/203/94 130/228/95 106/186/96 +f 131/229/45 132/230/45 130/231/97 +f 135/232/48 136/233/48 118/234/98 +f 132/230/99 136/233/99 135/232/99 +f 135/232/100 133/235/100 132/230/100 +f 128/236/101 131/229/101 129/224/101 +f 130/237/102 134/238/103 118/239/104 +f 137/240/105 139/241/105 140/242/105 +f 140/242/106 141/243/106 142/244/106 +f 141/243/45 144/245/45 142/244/45 +f 145/246/107 143/247/107 141/248/107 +f 144/245/108 145/249/108 146/250/108 +f 145/249/109 137/251/109 146/250/109 +f 147/252/110 149/253/110 150/254/110 +f 149/253/111 152/255/111 150/254/111 +f 152/255/45 153/256/45 154/257/45 +f 148/258/112 155/259/112 153/260/112 +f 153/256/113 156/261/113 154/257/113 +f 155/262/114 147/263/114 156/261/114 +f 158/264/115 160/265/115 157/266/115 +f 159/267/116 162/268/116 160/265/116 +f 161/269/45 164/270/45 162/268/45 +f 158/271/117 165/272/117 163/273/117 +f 163/274/118 166/275/118 164/270/118 +f 165/276/119 157/277/119 166/275/119 +f 168/278/120 170/279/120 167/280/120 +f 169/281/121 172/282/121 170/279/121 +f 172/282/45 173/283/45 174/284/45 +f 168/285/122 175/286/122 173/287/122 +f 173/283/123 176/288/123 174/284/123 +f 175/289/124 167/290/124 176/288/124 +f 177/291/125 179/292/125 180/293/125 +f 179/292/126 182/294/126 180/293/126 +f 182/294/45 183/295/45 184/296/45 +f 178/297/127 185/298/127 183/299/127 +f 184/296/128 185/300/128 186/301/128 +f 186/301/129 178/302/129 177/303/129 +f 84/157/35 85/304/35 86/158/35 +f 85/160/36 87/163/36 88/161/36 +f 87/163/37 89/305/37 90/164/37 +f 90/164/38 89/305/38 91/165/38 +f 91/165/39 84/157/39 83/159/39 +f 92/168/40 83/306/40 86/162/40 +f 86/162/40 88/161/40 90/167/40 +f 94/169/41 95/172/41 96/170/41 +f 95/172/42 97/307/42 98/173/42 +f 97/174/43 99/177/43 100/175/43 +f 99/177/44 101/181/44 102/178/44 +f 97/174/45 95/308/45 94/179/45 +f 94/179/45 103/309/45 101/180/45 +f 101/180/45 99/177/45 97/174/45 +f 101/181/46 103/183/46 104/182/46 +f 103/183/47 94/169/47 93/171/47 +f 104/185/48 93/310/48 96/311/48 +f 96/311/48 98/176/48 104/185/48 +f 98/176/48 100/175/48 104/185/48 +f 106/186/130 107/227/131 108/187/50 +f 107/189/132 109/198/48 110/190/48 +f 110/192/52 111/218/52 105/193/52 +f 113/195/53 114/212/133 115/196/134 +f 107/189/135 116/205/136 113/195/48 +f 109/198/56 113/195/56 112/197/56 +f 116/200/137 107/227/138 118/201/139 +f 120/203/140 121/213/141 122/204/142 +f 116/205/143 122/210/144 114/206/145 +f 124/207/66 125/312/66 126/208/66 +f 122/210/146 124/313/68 123/211/68 +f 114/212/147 123/209/71 126/208/71 +f 121/213/148 125/314/74 124/214/74 +f 111/215/45 117/199/45 106/216/149 +f 110/192/77 109/198/77 117/199/77 +f 112/197/45 120/220/150 106/216/151 +f 115/219/152 121/222/153 120/220/154 +f 126/221/82 125/315/82 121/222/155 +f 119/223/156 128/236/86 129/224/86 +f 116/200/157 119/202/92 127/226/158 +f 106/186/159 130/228/160 118/201/161 +f 120/203/162 127/226/163 130/228/164 +f 133/316/45 130/231/165 132/230/45 +f 130/231/166 127/317/167 131/229/45 +f 127/317/168 129/318/45 131/229/45 +f 128/319/48 119/320/169 136/233/48 +f 119/320/170 118/234/171 136/233/48 +f 118/234/172 134/321/48 135/232/48 +f 132/230/99 131/229/99 136/233/99 +f 135/232/100 134/238/100 133/235/100 +f 128/236/101 136/233/101 131/229/101 +f 130/237/173 133/235/103 134/238/103 +f 137/240/105 138/322/105 139/241/105 +f 140/242/106 139/241/106 141/243/106 +f 141/243/45 143/323/45 144/245/45 +f 141/248/107 139/324/107 138/325/107 +f 138/325/107 145/246/107 141/248/107 +f 144/245/108 143/323/108 145/249/108 +f 145/249/109 138/326/109 137/251/109 +f 147/252/110 148/327/110 149/253/110 +f 149/253/111 151/328/111 152/255/111 +f 152/255/45 151/328/45 153/256/45 +f 151/329/112 149/330/112 153/260/112 +f 149/330/112 148/258/112 153/260/112 +f 153/256/113 155/262/113 156/261/113 +f 155/262/114 148/331/114 147/263/114 +f 158/264/115 159/267/115 160/265/115 +f 159/267/116 161/269/116 162/268/116 +f 161/269/45 163/274/45 164/270/45 +f 161/332/117 159/333/117 163/273/117 +f 159/333/117 158/271/117 163/273/117 +f 163/274/118 165/276/118 166/275/118 +f 165/276/119 158/334/119 157/277/119 +f 168/278/120 169/281/120 170/279/120 +f 169/281/121 171/335/121 172/282/121 +f 172/282/45 171/335/45 173/283/45 +f 171/336/122 169/337/122 173/287/122 +f 169/337/122 168/285/122 173/287/122 +f 173/283/123 175/289/123 176/288/123 +f 175/289/124 168/338/124 167/290/124 +f 177/291/125 178/339/125 179/292/125 +f 179/292/126 181/340/126 182/294/126 +f 182/294/45 181/340/45 183/295/45 +f 181/341/127 179/342/127 183/299/127 +f 179/342/127 178/297/127 183/299/127 +f 184/296/128 183/295/128 185/300/128 +f 186/301/129 185/300/129 178/302/129 +o Based +v -0.476324 0.117178 -1.155649 +v -0.476324 0.976271 -1.155649 +v 0.480355 0.976271 -1.153979 +v 0.480355 0.117178 -1.153979 +v 1.155649 0.976271 -0.476324 +v 1.155649 0.117178 -0.476324 +v 1.153979 0.976271 0.480355 +v 1.153979 0.117178 0.480355 +v 0.476324 0.976271 1.155649 +v 0.476324 0.117178 1.155649 +v -0.480355 0.976271 1.153980 +v -0.480355 0.117178 1.153980 +v -1.155649 0.976271 0.476324 +v -1.155649 0.117178 0.476324 +v 0.795350 1.043438 0.331072 +v 0.328294 1.043438 0.796501 +v -1.153980 0.976271 -0.480355 +v -1.153980 0.117178 -0.480355 +v 0.360808 0.117178 0.875387 +v 0.874122 0.117178 0.363862 +v -0.328294 1.043438 -0.796501 +v -0.795350 1.043438 -0.331072 +v -1.093998 1.088246 -0.455387 +v -0.451566 1.088246 -1.095581 +v -0.796501 1.043438 0.328294 +v 0.331072 1.043438 -0.795350 +v 0.796501 1.043438 -0.328294 +v -0.331072 1.043438 0.795350 +v 0.451566 1.088246 1.095581 +v 1.093998 1.088246 0.455387 +v 1.093998 1.310994 0.455387 +v 0.451566 1.310995 1.095581 +v -0.455387 1.088246 1.093998 +v -1.095581 1.088246 0.451566 +v 0.455387 1.088246 -1.093998 +v 1.095581 1.088246 -0.451566 +v -0.451566 1.310994 -1.095581 +v -1.093998 1.310994 -0.455387 +v -0.668254 1.435045 -0.278167 +v -0.275833 1.435045 -0.669221 +v 0.455387 1.310994 -1.093998 +v 1.095581 1.310994 -0.451566 +v -1.095581 1.310994 0.451566 +v -0.455387 1.310995 1.093998 +v -0.278167 1.435045 0.668254 +v 0.275833 1.435045 0.669221 +v 0.436165 1.536411 1.058215 +v -0.439856 1.536411 1.056686 +v -0.669221 1.435045 0.275833 +v 0.668254 1.435045 0.278168 +v 0.278167 1.435045 -0.668254 +v 0.669221 1.435045 -0.275833 +v 1.056686 1.536411 0.439856 +v 1.058215 1.536411 -0.436165 +v 1.058215 1.707899 -0.436165 +v 1.056686 1.707899 0.439856 +v -0.436165 1.536411 -1.058215 +v 0.439856 1.536411 -1.056686 +v -1.056686 1.536411 -0.439856 +v -1.058215 1.536411 0.436165 +v -1.056686 1.707899 -0.439856 +v -1.058215 1.707899 0.436165 +v -0.741679 1.821139 0.305698 +v -0.740608 1.821139 -0.308285 +v -0.436165 1.707899 -1.058215 +v 0.439856 1.707899 -1.056686 +v -0.439856 1.707899 1.056686 +v 0.436165 1.707899 1.058215 +v 0.308285 1.821139 -0.740607 +v 0.305698 1.821139 0.741679 +v 0.740607 1.821139 0.308285 +v 0.741679 1.821139 -0.305698 +v -0.308285 1.821139 0.740608 +v -0.305698 1.821139 -0.741679 +v -0.598298 -0.513317 0.246601 +v -0.597434 -0.513317 -0.248688 +v -0.597434 -1.343910 -0.248688 +v -0.598298 -1.343910 0.246601 +v -0.874122 0.117178 -0.363862 +v -0.875387 0.117178 0.360808 +v 0.875387 0.117178 -0.360808 +v 0.363862 0.117178 -0.874122 +v -0.363862 0.117178 0.874122 +v -0.360808 0.117178 -0.875387 +v -0.248688 -1.343910 0.597434 +v -0.975065 -1.373442 0.401893 +v -0.260556 -1.373442 0.625947 +v 0.246601 -0.513317 0.598298 +v -0.248688 -0.513317 0.597434 +v 0.246601 -1.343910 0.598298 +v 0.598298 -0.513317 -0.246601 +v 0.597434 -0.513317 0.248688 +v 0.597434 -1.343910 0.248688 +v 0.598298 -1.343910 -0.246601 +v -0.246601 -0.513317 -0.598298 +v 0.248688 -0.513317 -0.597434 +v 0.248688 -1.343910 -0.597434 +v -0.246601 -1.343910 -0.598298 +v -0.401893 -1.373442 -0.975065 +v 0.260556 -1.373442 -0.625947 +v 0.026543 -3.162143 -0.063765 +v -0.026320 -3.162143 -0.063857 +v 0.401893 -1.373442 0.975065 +v 0.625947 -1.373442 0.260556 +v 0.975065 -1.373442 -0.401893 +v -0.625947 -1.373442 -0.260556 +v -0.063765 -3.162143 -0.026543 +v 0.063857 -3.162143 -0.026320 +v 0.063765 -3.162143 0.026543 +v 0.026320 -3.162143 0.063857 +v -0.026543 -3.162143 0.063765 +v -0.063857 -3.162143 0.026320 +v 0.875387 -0.493910 -0.360808 +v 0.363862 -0.493910 -0.874122 +v 0.360808 -0.493910 0.875387 +v 0.874122 -0.493910 0.363862 +v -0.875387 -0.493910 0.360808 +v -0.363862 -0.493910 0.874122 +v -0.360808 -0.493910 -0.875387 +v -0.874122 -0.493910 -0.363862 +vt 0.872281 0.534636 +vt 0.822605 0.440198 +vt 0.875179 0.442976 +vt 0.820879 0.535179 +vt 0.768775 0.440298 +vt 0.767922 0.537229 +vt 0.714298 0.442725 +vt 0.714505 0.541417 +vt 0.658847 0.447191 +vt 0.660811 0.548715 +vt 0.600787 0.455120 +vt 0.606527 0.561669 +vt 0.537111 0.472517 +vt 0.661796 0.599848 +vt 0.969815 0.546227 +vt 0.925836 0.449611 +vt 0.974197 0.459371 +vt 0.921409 0.536355 +vt 0.706920 0.410802 +vt 0.870965 0.582319 +vt 0.918532 0.621801 +vt 0.869895 0.625279 +vt 0.919468 0.579715 +vt 0.767151 0.587629 +vt 0.609953 0.614303 +vt 0.819840 0.584762 +vt 0.714307 0.592268 +vt 0.546180 0.587418 +vt 0.609488 0.614399 +vt 0.561893 0.633359 +vt 0.713660 0.637878 +vt 0.663905 0.672730 +vt 0.662170 0.645110 +vt 0.556909 0.669718 +vt 0.819372 0.584716 +vt 0.766099 0.632876 +vt 0.961927 0.579016 +vt 0.661318 0.599870 +vt 0.611495 0.657113 +vt 0.766676 0.587587 +vt 0.870515 0.582267 +vt 0.818794 0.629251 +vt 0.919502 0.647338 +vt 0.870564 0.722266 +vt 0.870950 0.652394 +vt 0.767039 0.661357 +vt 0.970789 0.617301 +vt 0.613830 0.683727 +vt 0.714777 0.666196 +vt 0.819852 0.657475 +vt 0.558526 0.700429 +vt 0.663565 0.740854 +vt 0.614306 0.808200 +vt 0.616028 0.750600 +vt 0.574708 0.758346 +vt 0.714777 0.731739 +vt 0.664222 0.740881 +vt 0.767606 0.738395 +vt 0.962072 0.696043 +vt 0.919547 0.710030 +vt 0.766904 0.738360 +vt 0.715448 0.731786 +vt 0.869882 0.722252 +vt 0.819198 0.730314 +vt 0.765363 0.804002 +vt 0.712805 0.821896 +vt 0.712657 0.800660 +vt 0.818059 0.798447 +vt 0.922396 0.776157 +vt 0.870630 0.789375 +vt 0.565344 0.801835 +vt 0.662868 0.804960 +vt 0.980256 0.749479 +vt 0.982717 0.772283 +vt 0.938005 0.838340 +vt 0.924472 0.797426 +vt 0.818967 0.820347 +vt 0.871953 0.811076 +vt 0.564639 0.823456 +vt 0.663355 0.825332 +vt 0.765636 0.825797 +vt 0.614358 0.828508 +vt 0.869617 0.140202 +vt 0.858526 0.118021 +vt 0.858526 0.086653 +vt 0.622295 0.865615 +vt 0.756986 0.865737 +vt 0.719958 0.863003 +vt 0.865806 0.853105 +vt 0.828669 0.859602 +vt 0.919235 0.839751 +vt 0.882425 0.849319 +vt 0.571106 0.862348 +vt 0.671410 0.862747 +vt 0.774657 0.865888 +vt 0.943459 0.333805 +vt 0.972733 0.254883 +vt 0.968497 0.338857 +vt 0.969761 0.429873 +vt 0.816063 0.408694 +vt 0.650647 0.414159 +vt 0.920664 0.419148 +vt 0.869210 0.411858 +vt 0.761814 0.408697 +vt 0.590519 0.419948 +vt 0.715887 0.601468 +vt 0.699719 0.537434 +vt 0.702832 0.537392 +vt 0.609944 0.311349 +vt 0.636562 0.206427 +vt 0.640004 0.307244 +vt 0.725952 0.309036 +vt 0.753103 0.213184 +vt 0.754156 0.307779 +vt 0.836980 0.312416 +vt 0.865404 0.222565 +vt 0.864198 0.313854 +vt 0.891447 0.320806 +vt 0.920554 0.236280 +vt 0.917673 0.324242 +vt 0.541839 0.312744 +vt 0.567253 0.193170 +vt 0.574805 0.303737 +vt 0.669491 0.310634 +vt 0.696260 0.212038 +vt 0.698198 0.308322 +vt 0.781694 0.308754 +vt 0.809519 0.215232 +vt 0.809563 0.308702 +vt 0.797002 0.537432 +vt 0.928156 0.546644 +vt 0.799286 0.639227 +vt 0.715423 0.471720 +vt 0.748360 0.440271 +vt 0.748360 0.446543 +vt 0.781298 0.471719 +vt 0.793889 0.537390 +vt 0.748361 0.632265 +vt 0.697436 0.639229 +vt 0.696489 0.433976 +vt 0.800231 0.433973 +vt 0.780835 0.601467 +vt 0.748361 0.626098 +vt 0.826511 0.104116 +vt 0.820289 0.109271 +vt 0.817711 0.096826 +vt 0.751735 0.893085 +vt 0.748362 0.892239 +vt 0.568565 0.546652 +vt 0.568958 0.539856 +vt 0.744926 0.174843 +vt 0.748359 0.175704 +vt 0.928221 0.533067 +vt 0.927763 0.539848 +vt 0.744990 0.893085 +vt 0.568500 0.533075 +vt 0.751791 0.174843 +vt 0.775288 0.408770 +vt 0.816031 0.339926 +vt 0.664918 0.414184 +vt 0.705494 0.339963 +vt 0.542285 0.433126 +vt 0.584963 0.338601 +vt 0.882292 0.414121 +vt 0.922784 0.354432 +vt 0.829386 0.409754 +vt 0.870098 0.344694 +vt 0.720548 0.410535 +vt 0.761039 0.339101 +vt 0.606666 0.420165 +vt 0.648114 0.339985 +vt 0.933129 0.422480 +vt 0.972879 0.368090 +vt 0.713828 0.592247 +vt 0.919042 0.579655 +vt 0.918905 0.710085 +vt 0.970969 0.646088 +vt 0.615414 0.750609 +vt 0.818497 0.730271 +vt 0.978827 0.820718 +vt 0.869617 0.064471 +vt 0.885301 0.064472 +vt 0.896391 0.086653 +vt 0.896391 0.118021 +vt 0.885301 0.140202 +vt 0.656636 0.863389 +vt 0.605953 0.865889 +vt 0.706068 0.860339 +vt 0.812036 0.862068 +vt 0.947696 0.249830 +vt 0.606502 0.210532 +vt 0.724899 0.214440 +vt 0.838185 0.221126 +vt 0.894328 0.232845 +vt 0.534287 0.202177 +vt 0.667552 0.214350 +vt 0.781651 0.215285 +vt 0.820289 0.091671 +vt 0.823934 0.091671 +vt 0.826511 0.096826 +vt 0.823934 0.109271 +vt 0.817711 0.104116 +vt 0.775256 0.340002 +vt 0.663491 0.343346 +vt 0.536729 0.351779 +vt 0.884412 0.349406 +vt 0.830274 0.342590 +vt 0.719773 0.340939 +vt 0.604134 0.345991 +vt 0.936246 0.360697 +vn 0.0017 0.0000 -1.0000 +vn 0.7083 0.0000 -0.7059 +vn 1.0000 0.0000 0.0017 +vn 0.7059 -0.0000 0.7083 +vn -0.0017 0.0000 1.0000 +vn -0.7083 0.0000 0.7059 +vn 0.1299 0.9829 0.1303 +vn -1.0000 0.0000 -0.0017 +vn -0.7059 0.0000 -0.7083 +vn -0.0000 -1.0000 0.0000 +vn -0.1047 -0.9889 -0.1050 +vn -0.1840 0.9829 -0.0003 +vn 0.1303 0.9829 -0.1299 +vn -0.0003 0.9829 0.1840 +vn -0.1299 0.9829 -0.1303 +vn 0.0003 0.9829 -0.1840 +vn 0.1840 0.9829 0.0003 +vn -0.1303 0.9829 0.1299 +vn -0.1050 -0.9889 0.1047 +vn 0.1047 -0.9889 0.1050 +vn 0.1050 -0.9889 -0.1047 +vn -0.1483 -0.9889 -0.0003 +vn -0.0003 -0.9889 0.1483 +vn 0.1483 -0.9889 0.0003 +vn 0.0003 -0.9889 -0.1483 +vn -0.1973 0.9601 -0.1980 +vn -0.0004 -0.9676 0.2523 +vn -0.1980 0.9601 0.1973 +vn 0.1973 0.9601 0.1980 +vn 0.1980 0.9601 -0.1973 +vn -0.2796 0.9601 -0.0005 +vn -0.0005 0.9601 0.2796 +vn 0.2796 0.9601 0.0005 +vn 0.0005 0.9601 -0.2796 +vn 0.2523 -0.9676 0.0004 +vn 0.0004 -0.9676 -0.2523 +vn -0.1781 -0.9676 -0.1787 +vn -0.1787 -0.9676 0.1781 +vn 0.1781 -0.9676 0.1787 +vn 0.1787 -0.9676 -0.1781 +vn -0.2523 -0.9676 -0.0004 +vn -0.3371 0.9415 -0.0006 +vn 0.0000 1.0000 0.0000 +vn -0.0006 0.9415 0.3371 +vn 0.3371 0.9415 0.0006 +vn 0.0006 0.9415 -0.3371 +vn -0.2379 0.9415 -0.2388 +vn -0.2388 0.9415 0.2379 +vn 0.2379 0.9415 0.2388 +vn 0.2388 0.9415 -0.2379 +vn -0.5094 0.6948 0.5076 +vn 0.4397 -0.3327 -0.8343 +vn 0.5076 0.6948 0.5094 +vn 0.5094 0.6948 -0.5076 +vn -0.0995 0.9937 -0.0524 +vn -0.0524 0.9937 0.0995 +vn 0.0995 0.9937 0.0524 +vn 0.0524 0.9937 -0.0995 +vn -0.5076 0.6948 -0.5094 +vn -0.6733 -0.3000 -0.6757 +vn -0.6757 -0.3000 0.6733 +vn 0.6733 -0.3000 0.6757 +vn 0.6757 -0.3000 -0.6733 +vn -0.8343 -0.3327 -0.4397 +vn -0.4397 -0.3327 0.8343 +vn 0.8343 -0.3327 0.4397 +vn 0.0495 -0.9976 -0.0494 +vn 0.0494 -0.9976 0.0495 +vn -0.0495 -0.9976 0.0494 +vn -0.0494 -0.9976 -0.0495 +vn 0.0001 -0.9976 -0.0699 +vn 0.0699 -0.9976 0.0001 +vn -0.0001 -0.9976 0.0699 +vn -0.0699 -0.9976 -0.0001 +vn -0.0337 0.9937 0.1073 +vn 0.0017 -0.3000 -0.9539 +vn 0.1073 0.9937 0.0337 +vn 0.0337 0.9937 -0.1073 +vn -0.7192 0.6948 -0.0013 +vn -0.0013 0.6948 0.7192 +vn 0.7192 0.6948 0.0013 +vn 0.0013 0.6948 -0.7192 +vn -0.1073 0.9937 -0.0337 +vn -0.8998 -0.3327 -0.2822 +vn -0.2822 -0.3327 0.8998 +vn 0.8998 -0.3327 0.2822 +vn 0.2822 -0.3327 -0.8998 +vn -0.9539 -0.3000 -0.0017 +vn -0.0017 -0.3000 0.9539 +vn 0.9539 -0.3000 0.0017 +s off +f 188/343/174 190/344/174 187/345/174 +f 189/346/175 192/347/175 190/344/175 +f 191/348/176 194/349/176 192/347/176 +f 193/350/177 196/351/177 194/349/177 +f 195/352/178 198/353/178 196/351/178 +f 197/354/179 200/355/179 198/353/179 +f 193/350/180 202/356/180 195/352/180 +f 199/357/181 204/358/181 200/359/181 +f 203/360/182 187/345/182 204/358/182 +f 196/351/183 206/361/183 194/349/183 +f 207/362/184 209/363/184 210/364/184 +f 199/357/185 208/365/185 203/360/185 +f 189/346/186 213/366/186 191/348/186 +f 195/352/187 214/367/187 197/354/187 +f 203/360/188 207/362/188 188/343/188 +f 188/343/189 212/368/189 189/346/189 +f 191/348/190 201/369/190 193/350/190 +f 199/370/191 214/371/191 211/372/191 +f 216/373/177 218/374/177 215/375/177 +f 214/371/192 220/376/192 211/372/192 +f 202/356/193 216/373/193 215/375/193 +f 212/377/194 222/378/194 213/366/194 +f 211/379/195 209/363/195 208/365/195 +f 202/380/196 219/381/196 214/367/196 +f 213/382/197 216/373/197 201/369/197 +f 207/383/198 221/384/198 212/368/198 +f 224/385/199 226/386/199 223/387/199 +f 221/384/175 228/388/175 222/378/175 +f 220/389/181 224/385/181 209/363/181 +f 215/375/178 230/390/178 219/381/178 +f 222/378/176 217/391/176 216/373/176 +f 210/364/174 227/392/174 221/384/174 +f 209/363/182 223/387/182 210/364/182 +f 219/381/179 229/393/179 220/376/179 +f 232/394/200 234/395/200 231/396/200 +f 230/390/201 235/397/201 229/393/201 +f 218/374/202 236/398/202 232/399/202 +f 227/392/203 238/400/203 228/388/203 +f 224/385/204 235/401/204 225/402/204 +f 218/374/205 231/396/205 230/390/205 +f 217/391/206 238/403/206 236/404/206 +f 227/392/207 226/405/207 237/406/207 +f 240/407/176 242/408/176 239/409/176 +f 238/403/208 239/409/208 236/404/208 +f 226/405/209 244/410/209 237/406/209 +f 226/386/210 245/411/210 243/412/210 +f 235/397/211 234/395/211 246/413/211 +f 236/398/212 233/414/212 232/399/212 +f 238/400/213 244/410/213 240/407/213 +f 225/402/214 246/415/214 245/411/214 +f 248/416/215 250/417/215 247/418/215 +f 243/412/174 252/419/174 244/410/174 +f 245/411/182 251/420/182 243/412/182 +f 234/395/179 248/421/179 246/413/179 +f 239/409/177 254/422/177 233/414/177 +f 244/410/175 241/423/175 240/407/175 +f 246/415/181 247/418/181 245/411/181 +f 233/414/178 253/424/178 234/395/178 +f 260/425/216 250/426/216 249/427/216 +f 254/422/217 259/428/217 253/424/217 +f 242/408/218 258/429/218 257/430/218 +f 252/419/219 260/431/219 255/432/219 +f 251/420/220 250/433/220 260/434/220 +f 253/424/221 249/435/221 248/421/221 +f 242/408/222 256/436/222 254/422/222 +f 252/419/223 258/437/223 241/423/223 +f 262/438/181 264/439/181 261/440/181 +f 204/358/183 266/441/183 200/359/183 +f 192/347/183 268/442/183 190/344/183 +f 198/353/183 205/443/183 196/351/183 +f 187/345/183 265/444/183 204/358/183 +f 190/344/183 270/445/183 187/345/183 +f 194/349/183 267/446/183 192/347/183 +f 200/355/183 269/447/183 198/353/183 +f 264/448/224 273/449/224 271/450/224 +f 275/451/178 276/452/178 274/453/178 +f 278/454/176 280/455/176 277/456/176 +f 282/457/174 284/458/174 281/459/174 +f 281/460/182 263/461/182 262/462/182 +f 261/463/179 271/464/179 275/465/179 +f 274/466/177 279/467/177 278/468/177 +f 277/469/175 283/470/175 282/471/175 +f 286/472/225 288/473/225 285/474/225 +f 276/475/226 290/476/226 279/477/226 +f 280/478/227 286/472/227 283/479/227 +f 264/448/228 292/480/228 272/481/228 +f 276/475/229 273/449/229 289/482/229 +f 280/478/230 290/476/230 291/483/230 +f 284/484/231 286/472/231 285/474/231 +f 284/484/232 292/480/232 263/485/232 +f 294/486/183 296/487/183 298/488/183 +f 292/480/233 288/489/233 293/490/233 +f 273/449/234 298/491/234 297/492/234 +f 290/476/235 296/493/235 295/494/235 +f 286/472/236 294/495/236 287/496/236 +f 292/480/237 298/497/237 272/481/237 +f 273/449/238 296/498/238 289/482/238 +f 290/476/239 294/499/239 291/483/239 +f 267/500/175 300/501/175 268/442/175 +f 300/501/240 277/469/240 282/471/240 +f 205/502/177 302/503/177 206/361/177 +f 302/503/241 274/466/241 278/468/241 +f 266/504/179 304/505/179 269/447/179 +f 304/505/242 261/463/242 275/465/242 +f 270/506/182 306/507/182 265/444/182 +f 306/507/243 281/460/243 262/462/243 +f 268/508/174 305/509/174 270/445/174 +f 305/509/244 282/457/244 281/459/244 +f 206/510/176 299/511/176 267/446/176 +f 299/511/245 278/454/245 277/456/245 +f 269/512/178 301/513/178 205/443/178 +f 301/513/246 275/451/246 274/453/246 +f 265/514/181 303/515/181 266/441/181 +f 303/515/247 262/438/247 261/440/247 +f 188/343/174 189/346/174 190/344/174 +f 189/346/175 191/348/175 192/347/175 +f 191/348/176 193/350/176 194/349/176 +f 193/350/177 195/352/177 196/351/177 +f 195/352/178 197/354/178 198/353/178 +f 197/354/179 199/370/179 200/355/179 +f 193/350/180 201/516/180 202/356/180 +f 199/357/181 203/360/181 204/358/181 +f 203/360/182 188/343/182 187/345/182 +f 196/351/183 205/502/183 206/361/183 +f 207/362/184 208/517/184 209/363/184 +f 199/357/185 211/379/185 208/365/185 +f 189/346/186 212/377/186 213/366/186 +f 195/352/187 202/380/187 214/367/187 +f 203/360/188 208/517/188 207/362/188 +f 188/343/189 207/383/189 212/368/189 +f 191/348/190 213/382/190 201/369/190 +f 199/370/191 197/354/191 214/371/191 +f 216/373/177 217/391/177 218/374/177 +f 214/371/192 219/381/192 220/376/192 +f 202/356/193 201/516/193 216/373/193 +f 212/377/194 221/384/194 222/378/194 +f 211/379/195 220/389/195 209/363/195 +f 202/380/196 215/375/196 219/381/196 +f 213/382/197 222/378/197 216/373/197 +f 207/383/198 210/364/198 221/384/198 +f 224/385/199 225/518/199 226/386/199 +f 221/384/175 227/392/175 228/388/175 +f 220/389/181 229/519/181 224/385/181 +f 215/375/178 218/374/178 230/390/178 +f 222/378/176 228/388/176 217/391/176 +f 210/364/174 223/387/174 227/392/174 +f 209/363/182 224/385/182 223/387/182 +f 219/381/179 230/390/179 229/393/179 +f 232/394/200 233/414/200 234/395/200 +f 230/390/201 231/520/201 235/397/201 +f 218/374/202 217/391/202 236/398/202 +f 227/392/203 237/521/203 238/400/203 +f 224/385/204 229/519/204 235/401/204 +f 218/374/205 232/394/205 231/396/205 +f 217/391/206 228/388/206 238/403/206 +f 227/392/207 223/387/207 226/405/207 +f 240/407/176 241/423/176 242/408/176 +f 238/403/208 240/407/208 239/409/208 +f 226/405/209 243/412/209 244/410/209 +f 226/386/210 225/518/210 245/411/210 +f 235/397/211 231/520/211 234/395/211 +f 236/398/212 239/409/212 233/414/212 +f 238/400/213 237/521/213 244/410/213 +f 225/402/214 235/401/214 246/415/214 +f 248/416/215 249/522/215 250/417/215 +f 243/412/174 251/420/174 252/419/174 +f 245/411/182 247/418/182 251/420/182 +f 234/395/179 253/424/179 248/421/179 +f 239/409/177 242/408/177 254/422/177 +f 244/410/175 252/419/175 241/423/175 +f 246/415/181 248/416/181 247/418/181 +f 233/414/178 254/422/178 253/424/178 +f 249/427/216 259/523/216 256/524/216 +f 256/524/216 257/525/216 249/427/216 +f 257/525/216 258/526/216 249/427/216 +f 258/526/216 255/527/216 249/427/216 +f 255/527/216 260/425/216 249/427/216 +f 254/422/217 256/528/217 259/428/217 +f 242/408/218 241/423/218 258/429/218 +f 252/419/219 251/420/219 260/431/219 +f 251/420/220 247/418/220 250/433/220 +f 253/424/221 259/529/221 249/435/221 +f 242/408/222 257/530/222 256/436/222 +f 252/419/223 255/531/223 258/437/223 +f 262/438/181 263/532/181 264/439/181 +f 204/358/183 265/514/183 266/441/183 +f 192/347/183 267/500/183 268/442/183 +f 198/353/183 269/512/183 205/443/183 +f 187/345/183 270/506/183 265/444/183 +f 190/344/183 268/508/183 270/445/183 +f 194/349/183 206/510/183 267/446/183 +f 200/355/183 266/504/183 269/447/183 +f 264/448/248 272/481/248 273/449/248 +f 275/451/178 271/533/178 276/452/178 +f 278/454/176 279/534/176 280/455/176 +f 282/457/174 283/535/174 284/458/174 +f 281/460/182 284/536/182 263/461/182 +f 261/463/179 264/537/179 271/464/179 +f 274/466/177 276/538/177 279/467/177 +f 277/469/175 280/539/175 283/470/175 +f 286/472/249 287/496/249 288/473/249 +f 276/475/250 289/482/250 290/476/250 +f 280/478/251 291/483/251 286/472/251 +f 264/448/252 263/485/252 292/480/252 +f 276/475/253 271/450/253 273/449/253 +f 280/478/254 279/477/254 290/476/254 +f 284/484/255 283/479/255 286/472/255 +f 284/484/256 285/474/256 292/480/256 +f 298/488/183 293/540/183 288/541/183 +f 288/541/183 287/542/183 294/486/183 +f 294/486/183 295/543/183 296/487/183 +f 296/487/183 297/544/183 298/488/183 +f 298/488/183 288/541/183 294/486/183 +f 292/480/257 285/474/257 288/489/257 +f 273/449/258 272/481/258 298/491/258 +f 290/476/259 289/482/259 296/493/259 +f 286/472/260 291/483/260 294/495/260 +f 292/480/261 293/490/261 298/497/261 +f 273/449/262 297/492/262 296/498/262 +f 290/476/263 295/494/263 294/499/263 +f 267/500/175 299/545/175 300/501/175 +f 300/501/240 299/545/240 277/469/240 +f 205/502/177 301/546/177 302/503/177 +f 302/503/241 301/546/241 274/466/241 +f 266/504/179 303/547/179 304/505/179 +f 304/505/242 303/547/242 261/463/242 +f 270/506/182 305/548/182 306/507/182 +f 306/507/243 305/548/243 281/460/243 +f 268/508/174 300/549/174 305/509/174 +f 305/509/244 300/549/244 282/457/244 +f 206/510/176 302/550/176 299/511/176 +f 299/511/245 302/550/245 278/454/245 +f 269/512/178 304/551/178 301/513/178 +f 301/513/246 304/551/246 275/451/246 +f 265/514/181 306/552/181 303/515/181 +f 303/515/247 306/552/247 262/438/247 diff --git a/src/main/resources/assets/hbm/models/weapons/congolake.obj b/src/main/resources/assets/hbm/models/weapons/congolake.obj new file mode 100644 index 000000000..61dba5009 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/congolake.obj @@ -0,0 +1,3494 @@ +# Blender v2.79 (sub 0) OBJ File: 'CongoLake.blend' +# www.blender.org +o Pump_Pummp +v 0.000000 0.935654 2.185543 +v -0.193840 1.015945 2.185543 +v -0.214852 0.994933 2.177396 +v 0.000000 0.905939 2.177396 +v -0.193840 1.403625 2.185543 +v -0.274131 1.209785 2.185543 +v -0.274131 1.209785 3.266089 +v -0.193840 1.403625 3.266089 +v 0.000000 1.483656 2.185543 +v 0.000000 1.483656 3.266089 +v 0.274131 1.209785 2.185543 +v 0.193656 1.403441 2.185543 +v 0.193656 1.403441 3.266089 +v 0.274131 1.209785 3.266089 +v 0.000000 0.935915 3.266089 +v -0.193840 1.015945 3.266089 +v 0.193656 1.016130 2.185543 +v 0.193656 1.016130 3.266089 +v 0.000000 1.513631 2.177396 +v 0.214852 1.424637 2.177396 +v 0.214852 1.424637 2.113585 +v 0.000000 1.513631 2.113585 +v -0.214852 1.424637 2.177396 +v 0.214852 0.994933 2.177396 +v -0.303846 1.209785 2.177396 +v 0.303846 1.209785 2.177396 +v -0.214852 0.994933 2.113585 +v -0.303846 1.209785 2.113585 +v -0.273445 1.209785 2.100498 +v -0.193355 1.016430 2.100498 +v -0.214852 1.424637 2.113585 +v 0.000000 0.905939 2.113585 +v 0.214852 0.994933 2.113585 +v 0.303846 1.209785 2.113585 +v -0.193355 1.403140 2.100498 +v 0.000000 1.483230 2.100498 +v 0.193355 1.403140 2.100498 +v 0.273445 1.209785 2.100498 +v 0.193355 1.016430 2.100498 +v 0.000000 0.936340 2.100498 +v 0.000000 0.905939 3.274235 +v -0.214852 0.994933 3.274235 +v 0.000000 1.513631 3.274235 +v 0.000000 1.513631 3.338046 +v 0.214852 1.424637 3.338046 +v 0.214852 1.424637 3.274235 +v -0.214852 1.424637 3.274235 +v 0.214852 0.994933 3.274235 +v -0.303846 1.209785 3.274235 +v 0.303846 1.209785 3.274235 +v -0.214852 0.994933 3.338046 +v -0.193355 1.016430 3.351134 +v -0.273445 1.209785 3.351134 +v -0.303846 1.209785 3.338046 +v -0.214852 1.424637 3.338046 +v 0.214852 0.994933 3.338046 +v 0.000000 0.905939 3.338046 +v 0.303846 1.209785 3.338046 +v -0.193355 1.403140 3.351134 +v 0.000000 0.936340 3.351134 +v 0.193355 1.016430 3.351134 +v 0.273445 1.209785 3.351134 +v 0.193355 1.403140 3.351134 +v 0.000000 1.483230 3.351134 +vt 0.270772 0.021748 +vt 0.259071 0.044520 +vt 0.258022 0.040873 +vt 0.124225 0.297698 +vt 0.000380 0.290063 +vt 0.124223 0.290059 +vt 0.000378 0.282428 +vt 0.124220 0.282425 +vt 0.124223 0.335878 +vt 0.000382 0.328240 +vt 0.124225 0.328243 +vt 0.124227 0.305336 +vt 0.000387 0.312974 +vt 0.000384 0.305339 +vt 0.124221 0.343509 +vt 0.000380 0.335874 +vt 0.000384 0.320605 +vt 0.124227 0.320609 +vt 0.000382 0.297701 +vt 0.124229 0.312974 +vt 0.301296 0.107856 +vt 0.311550 0.080842 +vt 0.315428 0.086659 +vt 0.319568 0.052066 +vt 0.317107 0.080578 +vt 0.317107 0.050600 +vt 0.254931 0.052066 +vt 0.257392 0.080578 +vt 0.254911 0.079099 +vt 0.303748 0.109442 +vt 0.316485 0.090335 +vt 0.316477 0.040872 +vt 0.301296 0.023322 +vt 0.303727 0.021748 +vt 0.278234 0.017112 +vt 0.297242 0.020803 +vt 0.277257 0.020803 +vt 0.270772 0.109430 +vt 0.259071 0.086659 +vt 0.273203 0.107856 +vt 0.278234 0.114066 +vt 0.297242 0.110375 +vt 0.296257 0.114096 +vt 0.297242 0.029029 +vt 0.278257 0.033023 +vt 0.277257 0.029029 +vt 0.311623 0.050600 +vt 0.257392 0.050600 +vt 0.262876 0.080578 +vt 0.315428 0.044519 +vt 0.297418 0.029138 +vt 0.277081 0.102040 +vt 0.277257 0.110375 +vt 0.297242 0.102149 +vt 0.273203 0.023322 +vt 0.262949 0.050336 +vt 0.308960 0.079078 +vt 0.278257 0.098155 +vt 0.265539 0.052100 +vt 0.277257 0.102149 +vt 0.296243 0.098155 +vt 0.311623 0.080578 +vt 0.308960 0.052100 +vt 0.262876 0.050600 +vt 0.265539 0.079078 +vt 0.296242 0.033023 +vt 0.189118 0.066082 +vt 0.194118 0.093837 +vt 0.187203 0.068873 +vt 0.246869 0.062649 +vt 0.244287 0.031805 +vt 0.251935 0.059501 +vt 0.246935 0.093837 +vt 0.251935 0.066083 +vt 0.253850 0.068873 +vt 0.196766 0.031805 +vt 0.187203 0.056711 +vt 0.194097 0.031747 +vt 0.246956 0.031747 +vt 0.253850 0.056711 +vt 0.222720 0.109905 +vt 0.241223 0.102404 +vt 0.224565 0.112754 +vt 0.199830 0.102404 +vt 0.218332 0.109905 +vt 0.216488 0.112754 +vt 0.216488 0.012829 +vt 0.199869 0.027151 +vt 0.199830 0.023147 +vt 0.241184 0.027151 +vt 0.224565 0.012829 +vt 0.241223 0.023147 +vt 0.203910 0.087717 +vt 0.220431 0.102305 +vt 0.201967 0.090833 +vt 0.239221 0.090631 +vt 0.244287 0.093779 +vt 0.201832 0.034953 +vt 0.189118 0.059501 +vt 0.220622 0.102305 +vt 0.241184 0.098433 +vt 0.220431 0.023279 +vt 0.218333 0.015679 +vt 0.199868 0.098433 +vt 0.239086 0.034751 +vt 0.222720 0.015679 +vt 0.194184 0.062935 +vt 0.196766 0.093779 +vt 0.197027 0.062792 +vt 0.220527 0.027543 +vt 0.244026 0.062792 +vt 0.237143 0.037867 +vt 0.220622 0.023278 +vt 0.201832 0.090631 +vt 0.239221 0.034953 +vt 0.237143 0.087717 +vt 0.246869 0.062935 +vt 0.203910 0.037867 +vt 0.194184 0.062649 +vt 0.239086 0.090833 +vt 0.201967 0.034750 +vt 0.000378 0.343505 +vt 0.297419 0.102040 +vt 0.319588 0.079099 +vt 0.296265 0.017112 +vt 0.258014 0.090336 +vt 0.311550 0.050336 +vt 0.262949 0.080842 +vt 0.277081 0.029138 +vt 0.220526 0.098041 +vn -0.1089 -0.2628 0.9587 +vn -0.9239 0.3827 0.0000 +vn -0.3816 0.9243 0.0000 +vn 0.9234 0.3837 0.0000 +vn -0.3816 -0.9243 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.9234 -0.3837 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.3837 -0.9234 0.0002 +vn -0.1089 0.2628 0.9587 +vn 0.1083 -0.2605 0.9594 +vn 0.1080 0.2607 0.9593 +vn -0.2629 0.1089 0.9587 +vn -0.2628 -0.1089 0.9587 +vn 0.2628 -0.1089 0.9587 +vn 0.2605 0.1083 0.9594 +vn -0.3902 -0.1616 -0.9064 +vn -0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.3902 0.1616 -0.9064 +vn -0.1616 -0.3902 -0.9064 +vn 0.1616 0.3902 -0.9064 +vn -0.1616 0.3902 -0.9064 +vn 0.1616 -0.3902 -0.9064 +vn -0.3902 0.1616 -0.9064 +vn 0.3902 -0.1616 -0.9064 +vn -0.1076 -0.2607 -0.9594 +vn -0.1076 0.2607 -0.9594 +vn 0.1080 -0.2607 -0.9594 +vn 0.1080 0.2607 -0.9594 +vn -0.2628 0.1089 -0.9587 +vn -0.2628 -0.1089 -0.9587 +vn 0.2605 -0.1082 -0.9594 +vn 0.2605 0.1082 -0.9594 +vn -0.3902 -0.1616 0.9064 +vn 0.0000 0.0000 1.0000 +vn 0.3902 0.1616 0.9064 +vn -0.1616 -0.3902 0.9064 +vn 0.1616 0.3902 0.9064 +vn -0.1616 0.3902 0.9064 +vn 0.1616 -0.3902 0.9064 +vn -0.3902 0.1616 0.9064 +vn 0.3902 -0.1616 0.9064 +vn -0.3827 -0.9239 0.0002 +vn -0.1077 0.2608 0.9594 +vn 0.1089 -0.2628 0.9587 +vn -0.2628 0.1089 0.9587 +vn -0.2629 -0.1089 0.9587 +vn 0.2605 -0.1083 0.9594 +vn 0.2628 0.1089 0.9587 +vn -0.1089 -0.2628 -0.9587 +vn -0.1089 0.2628 -0.9587 +vn 0.2628 -0.1089 -0.9587 +vn 0.2628 0.1089 -0.9587 +s off +f 2/1/1 4/2/1 1/3/1 +f 6/4/2 8/5/2 5/6/2 +f 5/6/3 10/7/3 9/8/3 +f 12/9/4 14/10/4 11/11/4 +f 2/12/5 15/13/5 16/14/5 +f 9/15/6 13/16/6 12/9/6 +f 11/11/7 18/17/7 17/18/7 +f 2/12/8 7/19/8 6/4/8 +f 17/18/9 15/13/9 1/20/9 +f 20/21/6 22/22/6 19/23/6 +f 5/24/10 19/25/10 23/26/10 +f 1/27/11 24/28/11 17/29/11 +f 12/30/12 19/23/12 9/31/12 +f 5/32/13 25/33/13 6/34/13 +f 2/35/14 25/36/14 3/37/14 +f 11/38/15 24/39/15 26/40/15 +f 11/41/16 20/42/16 12/43/16 +f 28/44/17 30/45/17 27/46/17 +f 19/25/18 31/47/18 23/26/18 +f 4/48/19 33/49/19 24/28/19 +f 23/50/2 28/51/2 25/33/2 +f 24/39/20 34/52/20 26/40/20 +f 25/36/8 27/46/8 3/37/8 +f 26/53/21 21/54/21 20/42/21 +f 3/55/22 32/56/22 4/2/22 +f 36/57/23 38/58/23 40/59/23 +f 34/60/24 37/61/24 21/54/24 +f 32/56/25 30/45/25 40/59/25 +f 22/22/26 37/61/26 36/57/26 +f 22/62/27 35/63/27 31/47/27 +f 32/64/28 39/65/28 33/49/28 +f 28/51/29 35/63/29 29/66/29 +f 34/52/30 39/65/30 38/58/30 +f 41/67/31 16/68/31 15/69/31 +f 44/70/6 46/71/6 43/72/6 +f 8/73/32 43/74/32 10/75/32 +f 48/76/33 15/77/33 18/78/33 +f 43/72/34 13/79/34 10/80/34 +f 49/81/35 8/82/35 7/83/35 +f 16/84/36 49/85/36 7/86/36 +f 14/87/37 48/88/37 18/89/37 +f 46/90/38 14/91/38 13/92/38 +f 52/93/39 54/94/39 51/95/39 +f 55/96/18 43/74/18 47/97/18 +f 56/98/19 41/99/19 48/76/19 +f 54/100/2 47/101/2 49/81/2 +f 58/102/20 48/88/20 50/103/20 +f 51/95/8 49/85/8 42/104/8 +f 45/105/21 50/106/21 46/90/21 +f 57/107/22 42/108/22 41/67/22 +f 60/109/40 62/110/40 64/111/40 +f 63/112/41 58/113/41 45/105/41 +f 60/109/42 51/114/42 57/107/42 +f 44/70/43 63/112/43 45/115/43 +f 59/116/44 44/117/44 55/96/44 +f 61/118/45 57/119/45 56/98/45 +f 54/100/46 59/116/46 55/120/46 +f 58/102/47 61/118/47 56/121/47 +f 2/1/1 3/55/1 4/2/1 +f 6/4/2 7/19/2 8/5/2 +f 5/6/3 8/5/3 10/7/3 +f 12/9/4 13/16/4 14/10/4 +f 2/12/48 1/20/48 15/13/48 +f 9/15/6 10/122/6 13/16/6 +f 11/11/7 14/10/7 18/17/7 +f 2/12/8 16/14/8 7/19/8 +f 17/18/19 18/17/19 15/13/19 +f 20/21/6 21/123/6 22/22/6 +f 5/24/49 9/124/49 19/25/49 +f 1/27/50 4/48/50 24/28/50 +f 12/30/12 20/21/12 19/23/12 +f 5/32/51 23/50/51 25/33/51 +f 2/35/52 6/125/52 25/36/52 +f 11/38/53 17/126/53 24/39/53 +f 11/41/54 26/53/54 20/42/54 +f 28/44/17 29/66/17 30/45/17 +f 19/25/18 22/62/18 31/47/18 +f 4/48/19 32/64/19 33/49/19 +f 23/50/2 31/127/2 28/51/2 +f 24/39/20 33/128/20 34/52/20 +f 25/36/8 28/44/8 27/46/8 +f 26/53/21 34/60/21 21/54/21 +f 3/55/22 27/129/22 32/56/22 +f 29/66/23 35/63/23 36/57/23 +f 36/57/23 37/61/23 38/58/23 +f 38/58/23 39/65/23 40/59/23 +f 40/59/23 30/45/23 29/66/23 +f 29/66/23 36/57/23 40/59/23 +f 34/60/24 38/58/24 37/61/24 +f 32/56/25 27/129/25 30/45/25 +f 22/22/26 21/123/26 37/61/26 +f 22/62/27 36/57/27 35/63/27 +f 32/64/28 40/59/28 39/65/28 +f 28/51/29 31/127/29 35/63/29 +f 34/52/30 33/128/30 39/65/30 +f 41/67/55 42/108/55 16/68/55 +f 44/70/6 45/115/6 46/71/6 +f 8/73/56 47/97/56 43/74/56 +f 48/76/33 41/99/33 15/77/33 +f 43/72/34 46/71/34 13/79/34 +f 49/81/35 47/101/35 8/82/35 +f 16/84/36 42/104/36 49/85/36 +f 14/87/57 50/103/57 48/88/57 +f 46/90/58 50/106/58 14/91/58 +f 52/93/39 53/130/39 54/94/39 +f 55/96/18 44/117/18 43/74/18 +f 56/98/19 57/119/19 41/99/19 +f 54/100/2 55/120/2 47/101/2 +f 58/102/20 56/121/20 48/88/20 +f 51/95/8 54/94/8 49/85/8 +f 45/105/21 58/113/21 50/106/21 +f 57/107/22 51/114/22 42/108/22 +f 64/111/40 59/116/40 53/130/40 +f 53/130/40 52/93/40 60/109/40 +f 60/109/40 61/118/40 62/110/40 +f 62/110/40 63/112/40 64/111/40 +f 64/111/40 53/130/40 60/109/40 +f 63/112/41 62/110/41 58/113/41 +f 60/109/42 52/93/42 51/114/42 +f 44/70/43 64/111/43 63/112/43 +f 59/116/44 64/111/44 44/117/44 +f 61/118/45 60/109/45 57/119/45 +f 54/100/46 53/130/46 59/116/46 +f 58/102/47 62/110/47 61/118/47 +o Gun +v 0.000000 2.012847 0.929753 +v 0.000000 2.012847 1.070247 +v 0.183294 1.927366 1.070247 +v 0.183618 1.926461 0.929220 +v 0.259217 1.720997 1.070247 +v 0.257984 1.718743 0.928515 +v 0.259047 1.606972 1.070247 +v 0.257604 1.541884 0.928170 +v -0.144433 0.866083 0.913514 +v -0.144446 0.864949 1.065059 +v -0.258151 1.005157 1.070247 +v -0.257451 1.005115 0.928270 +v -0.183294 1.927366 1.070247 +v -0.259216 1.720997 1.070247 +v -0.259043 1.604334 1.070247 +v -0.258413 1.181274 1.070247 +v -0.257166 1.181723 0.927804 +v -0.257983 1.718743 0.928515 +v -0.183294 1.927366 0.929753 +v 0.257451 1.005115 0.928270 +v 0.258152 1.005157 1.070247 +v 0.144446 0.864949 1.065059 +v 0.144434 0.866083 0.913514 +v -0.257983 1.718743 -0.730968 +v -0.183294 1.927366 -0.725578 +v 0.257356 1.541884 -0.031674 +v 0.257984 1.718742 -0.031674 +v 0.213936 1.724480 -0.012808 +v 0.213408 1.585937 -0.012808 +v 0.183294 1.927366 -0.031674 +v 0.151081 1.887906 -0.012808 +v 0.000000 2.012848 -0.725578 +v 0.000000 2.012847 -0.031673 +v -0.257237 1.370989 0.927836 +v -0.256750 1.371195 -0.736357 +v 0.187757 1.476302 -0.792273 +v 0.187757 1.335660 -0.792273 +v 0.146203 1.348426 -1.160494 +v 0.146203 1.506278 -1.160494 +v 0.256751 1.371195 -0.736357 +v 0.257984 1.718742 -0.730968 +v 0.257238 1.371176 0.927836 +v 0.257167 1.182080 0.927804 +v 0.256751 1.182173 -0.736357 +v -0.145153 1.919827 -0.781493 +v -0.201659 1.715739 -0.786883 +v -0.159904 1.695958 -1.155104 +v -0.115487 1.870179 -1.149714 +v -0.061328 1.229217 -0.792273 +v -0.200726 1.335660 -0.792273 +v -0.159171 1.348426 -1.160494 +v -0.060785 1.241984 -1.160494 +v -0.061222 1.231706 -0.864069 +v -0.256750 1.182173 -0.736357 +v 0.256751 0.956724 -0.734144 +v 0.256751 0.856270 -0.117823 +v -0.256750 0.856270 -0.117823 +v -0.256750 0.956724 -0.734144 +v -0.062749 0.957195 -0.735251 +v 0.051362 0.957195 -0.735251 +v 0.256751 0.867043 0.903277 +v -0.256750 0.867043 0.903277 +v 0.258415 1.181988 1.070247 +v 0.258696 1.371157 1.070247 +v -0.258695 1.370783 1.070247 +v 0.183294 1.927366 -0.725578 +v -0.003170 1.954868 0.910839 +v 0.151354 1.887197 0.910326 +v 0.213936 1.724480 0.909649 +v -0.003170 1.954868 -0.012807 +v 0.213616 1.585937 0.909317 +v -0.159171 1.506278 -1.160494 +v -0.159904 1.390979 -1.676333 +v -0.159171 1.268371 -1.681723 +v 0.146203 1.146998 -1.681723 +v 0.146203 1.268371 -1.681723 +v -0.115487 1.524939 -1.670943 +v -0.200726 1.476302 -0.792273 +v -0.006484 2.003450 -0.781493 +v -0.006484 1.941564 -1.149714 +v 0.132185 1.919827 -0.781493 +v 0.102519 1.870179 -1.149714 +v 0.188690 1.715739 -0.786883 +v 0.146936 1.695958 -1.155104 +v -0.159904 1.204788 -1.982580 +v -0.115487 1.394869 -1.977190 +v -0.049574 1.040555 -1.681723 +v -0.159171 1.146998 -1.681723 +v -0.159171 0.816467 -1.987970 +v -0.049574 0.710024 -1.987970 +v 0.146936 1.390979 -1.676333 +v 0.102519 1.524939 -1.670943 +v 0.102519 1.394869 -1.977190 +v 0.146936 1.204788 -1.982580 +v -0.006484 1.579827 -1.670943 +v 0.102519 1.539839 -2.297575 +v 0.146936 1.349759 -2.302965 +v 0.146203 0.988688 -1.987970 +v 0.146203 1.133659 -2.308354 +v -0.006484 1.472752 -1.977190 +v -0.006484 1.617722 -2.297575 +v 0.146203 0.816467 -1.987970 +v -0.159171 0.988688 -1.987970 +v -0.159171 0.961438 -2.308354 +v -0.159171 1.133659 -2.308354 +v -0.159171 0.787673 -4.057262 +v -0.159171 0.502792 -4.057262 +v -0.115487 1.539839 -2.297575 +v -0.115487 1.525341 -4.046483 +v -0.006484 1.654172 -4.046483 +v -0.159904 1.349759 -2.302965 +v -0.159904 1.210917 -4.051873 +v -0.049574 0.854995 -2.308354 +v 0.146203 0.961438 -2.308354 +v -0.159904 1.210283 -4.199338 +v -0.159171 0.787039 -4.204728 +v 0.146203 0.787673 -4.057262 +v 0.146203 0.502792 -4.057262 +v 0.146203 0.502158 -4.204728 +v 0.146203 0.787039 -4.204728 +v -0.115487 1.524706 -4.193949 +v 0.102519 1.525341 -4.046483 +v 0.146936 1.210917 -4.051873 +v -0.049574 0.396350 -4.057262 +v -0.083889 1.075730 -0.736357 +v 0.146936 1.210283 -4.199338 +v 0.102519 1.524706 -4.193949 +v 0.036802 0.395715 -4.204728 +v -0.006484 1.653537 -4.193949 +v -0.159171 0.502158 -4.204728 +v -0.049574 0.395715 -4.204728 +v 0.036802 0.396350 -4.057262 +v 0.071739 1.075730 -0.736357 +v 0.048556 1.229217 -0.792273 +v 0.048450 1.231706 -0.864069 +v 0.048450 0.960438 -0.864069 +v -0.061222 0.960438 -0.864069 +v 0.036802 0.854995 -2.308354 +v 0.036802 0.710024 -1.987970 +v 0.048013 1.241984 -1.160494 +v 0.036802 1.040555 -1.681723 +v 0.048556 0.958818 -0.792273 +v 0.048556 0.889021 -0.793779 +v 0.048450 0.890640 -0.865575 +v -0.061222 0.890640 -0.865575 +v -0.061328 0.958818 -0.792273 +v 0.050594 0.887869 -0.737864 +v -0.062623 0.887869 -0.737864 +v -0.062623 0.859409 -0.738478 +v 0.050594 0.859409 -0.738478 +v 0.048556 0.860561 -0.794393 +v -0.061328 0.889021 -0.793779 +v -0.061328 0.860561 -0.794393 +v -0.061222 0.862180 -0.866189 +v 0.048450 0.862180 -0.866189 +v 0.048450 0.897640 -1.189937 +v -0.061222 0.897640 -1.189937 +v -0.061222 0.869180 -1.190551 +v -0.061222 0.909566 -1.231055 +v -0.061222 0.883039 -1.241383 +v 0.048450 0.869180 -1.190551 +v 0.048450 0.909566 -1.231055 +v 0.048450 0.883039 -1.241383 +v 0.048450 0.923721 -1.286653 +v 0.048450 0.939453 -1.262928 +v -0.061222 0.923721 -1.286653 +v -0.061222 0.939453 -1.262928 +v -0.061222 0.990369 -1.269143 +v -0.061222 0.991506 -1.297587 +v 0.048450 0.990369 -1.269143 +v 0.048450 0.991506 -1.297587 +v -0.027604 1.183662 -1.022258 +v -0.027604 1.241078 -1.015614 +v -0.027604 1.241078 -1.073029 +v -0.027604 1.183662 -1.079673 +v 0.014636 1.241078 -1.073029 +v 0.014636 1.183662 -1.079673 +v 0.014636 1.241078 -1.015614 +v 0.014636 1.183662 -1.022258 +v 0.014636 1.135947 -1.081794 +v -0.027604 1.135947 -1.081794 +v 0.014636 1.135947 -1.031008 +v -0.027604 1.135947 -1.031008 +v -0.027604 1.073735 -1.037243 +v 0.014636 1.073735 -1.037243 +v 0.014636 1.073735 -1.077975 +v 0.014636 1.020584 -1.027559 +v 0.014636 1.020584 -1.064708 +v -0.027604 1.073735 -1.077975 +v 0.008448 0.973270 -0.999595 +v 0.008448 0.955554 -1.018985 +v -0.027604 1.020584 -1.064708 +v -0.027604 1.020584 -1.027559 +v -0.021416 0.973270 -0.999595 +v -0.014341 0.956268 -0.989678 +v 0.001372 0.956268 -0.989678 +v -0.021416 0.955554 -1.018985 +v -0.014341 0.946947 -0.999880 +v 0.001372 0.946947 -0.999880 +v -0.259043 1.604334 1.840350 +v 0.259047 1.606972 1.840350 +v -0.259043 1.604334 2.018898 +v 0.259047 1.606972 2.018898 +v 0.259030 1.580560 1.803183 +v 0.259030 1.580560 1.107413 +v -0.258712 1.397895 1.107085 +v -0.259026 1.580701 1.107085 +v 0.258696 1.371157 1.840350 +v -0.258695 1.370783 1.840350 +v -0.258695 1.370783 2.018898 +v 0.258696 1.371157 2.018898 +v 0.258713 1.397570 1.803183 +v 0.258713 1.397570 1.107413 +v 0.220014 1.397694 1.107413 +v 0.220014 1.397694 1.803183 +v -0.259026 1.580701 1.803511 +v -0.221491 1.580821 1.107085 +v -0.221491 1.580821 1.803511 +v -0.258712 1.397895 1.803511 +v -0.221177 1.398014 1.107085 +v -0.221177 1.398014 1.803511 +v 0.220331 1.580684 1.107413 +v 0.220331 1.580684 1.803183 +v 0.268254 1.513106 -0.078803 +v 0.268254 0.963807 -0.078803 +v 0.268254 0.963807 -0.628102 +v 0.268254 1.513106 -0.628102 +v 0.121073 1.490289 3.430747 +v 0.326188 1.490289 3.430747 +v 0.326188 1.452264 3.446498 +v 0.121073 1.452264 3.446498 +v 0.326188 1.436513 3.484523 +v 0.121073 1.436513 3.484523 +v 0.326188 1.452264 3.522549 +v 0.121073 1.452264 3.522549 +v 0.326188 1.490289 3.538300 +v 0.121073 1.490289 3.538300 +v 0.326188 1.528315 3.522549 +v 0.121073 1.528315 3.522549 +v 0.326188 1.544065 3.484523 +v 0.121073 1.544065 3.484523 +v 0.326188 1.528315 3.446498 +v 0.121073 1.528315 3.446498 +v 0.406256 1.125653 3.483772 +v 0.372781 1.206173 3.302696 +v 0.405798 1.241512 3.327720 +v 0.434647 1.172119 3.483772 +v 0.377865 1.264868 3.368210 +v 0.399229 1.213480 3.483772 +v 0.327584 1.243964 3.368210 +v 0.348947 1.192576 3.483772 +v 0.324441 1.207689 3.327720 +v 0.353290 1.138296 3.483772 +v 0.297563 1.387101 3.257974 +v 0.340975 1.397436 3.289178 +v 0.329861 1.380335 3.339669 +v 0.279580 1.359431 3.339669 +v 0.259618 1.363613 3.289178 +v 0.237243 1.532194 3.383282 +v 0.288991 1.522477 3.397170 +v 0.291365 1.472933 3.419640 +v 0.241084 1.452029 3.419640 +v 0.207634 1.488654 3.397170 +v 0.237243 1.532194 3.584262 +v 0.288991 1.522477 3.570374 +v 0.291365 1.472933 3.547904 +v 0.241084 1.452029 3.547904 +v 0.207634 1.488654 3.570374 +v 0.297563 1.387101 3.709570 +v 0.340975 1.397436 3.678366 +v 0.329861 1.380335 3.627876 +v 0.279580 1.359431 3.627876 +v 0.259618 1.363613 3.678366 +v 0.372781 1.206173 3.664848 +v 0.405798 1.241512 3.639824 +v 0.377865 1.264868 3.599334 +v 0.327584 1.243964 3.599334 +v 0.324441 1.207689 3.639824 +v 0.000000 1.983355 1.070358 +v 0.156272 1.918625 1.070358 +v 0.221002 1.762353 1.070358 +v 0.156272 1.606081 1.070358 +v 0.000000 1.541351 1.070358 +v -0.156272 1.606081 1.070358 +v -0.221002 1.762353 1.070358 +v 0.000000 1.541351 3.018507 +v 0.156272 1.606081 3.018507 +v 0.156272 1.606081 3.391006 +v 0.000000 1.541351 3.391006 +v -0.156272 1.918625 1.070358 +v 0.156272 1.918625 3.391006 +v 0.000000 1.983355 3.391006 +v 0.000000 2.025926 3.417953 +v 0.186374 1.948727 3.417953 +v -0.156272 1.918625 3.018507 +v -0.221002 1.762353 3.018507 +v -0.221002 1.762353 3.391006 +v -0.156272 1.918625 3.391006 +v 0.221002 1.762353 3.018507 +v 0.156272 1.918625 3.018507 +v 0.221002 1.762353 3.391006 +v -0.156272 1.606081 3.018507 +v -0.156272 1.606081 3.391006 +v 0.000000 1.983355 3.018507 +v -0.186374 1.948727 3.417953 +v -0.263573 1.762353 3.417953 +v -0.263573 1.762353 3.553212 +v -0.186374 1.948727 3.553212 +v -0.186374 1.575979 3.417953 +v 0.186374 1.575979 3.417953 +v 0.000000 1.495447 3.414135 +v 0.263573 1.762353 3.417953 +v 0.263573 1.762353 3.553212 +v 0.186374 1.948727 3.553212 +v 0.156272 1.918625 3.580159 +v 0.221002 1.762353 3.580159 +v 0.000000 1.495447 3.558366 +v -0.186374 1.575979 3.553212 +v 0.186374 1.575979 3.553212 +v 0.000000 2.025926 3.553212 +v 0.000000 1.983355 3.580159 +v -0.156272 1.918625 3.580159 +v -0.156272 1.918625 4.205390 +v 0.000000 1.983355 4.205390 +v -0.221002 1.762353 3.580159 +v 0.000000 1.541351 3.580159 +v -0.156272 1.606081 3.580159 +v 0.156272 1.606081 3.580159 +v 0.000000 2.017086 4.028187 +v 0.136534 1.975546 4.028187 +v 0.126058 1.959349 4.031190 +v -0.156272 1.606081 4.205390 +v 0.000000 1.541351 4.205390 +v 0.000000 1.568728 4.205390 +v -0.136914 1.625439 4.205390 +v -0.221002 1.762353 4.205390 +v 0.156272 1.606081 4.205390 +v 0.156272 1.918625 4.205390 +v 0.221002 1.762353 4.205390 +v -0.136914 1.899267 4.205390 +v -0.193625 1.762353 4.205390 +v -0.193625 1.762353 3.654342 +v -0.136914 1.899267 3.654342 +v 0.193625 1.762353 4.205390 +v 0.136914 1.625439 4.205390 +v 0.000000 1.955978 4.205390 +v 0.136914 1.899267 4.205390 +v -0.136914 1.625439 3.654342 +v 0.000000 1.568728 3.654342 +v 0.136914 1.625439 3.654342 +v 0.193625 1.762353 3.654342 +v 0.136914 1.899267 3.654342 +v 0.000000 1.955978 3.654342 +v -0.156124 1.365909 1.034639 +v 0.000000 1.430577 1.034639 +v 0.156124 1.365909 1.034639 +v 0.220792 1.209785 1.034639 +v 0.156124 1.053662 1.034639 +v 0.000000 0.988993 1.034639 +v -0.156124 1.053662 1.034639 +v -0.220792 1.209785 1.034639 +v 0.000000 1.430367 3.383215 +v -0.155975 1.365760 3.383215 +v -0.199637 1.409422 3.410316 +v -0.220582 1.209785 3.383215 +v 0.155975 1.365760 3.383215 +v 0.199637 1.409422 3.410316 +v 0.155975 1.053810 3.383215 +v 0.220582 1.209785 3.383215 +v 0.282329 1.209785 3.410316 +v 0.199637 1.010148 3.410316 +v 0.000000 0.989203 3.383215 +v 0.000000 0.927456 3.410316 +v -0.155975 1.053810 3.383215 +v -0.199637 1.010148 3.410316 +v -0.282329 1.209785 3.410316 +v -0.199637 1.010148 3.563519 +v -0.282329 1.209785 3.563519 +v -0.199637 1.409422 3.563519 +v 0.199637 1.010148 3.563519 +v 0.000000 0.927456 3.563519 +v 0.199637 1.409422 3.563519 +v 0.282329 1.209785 3.563519 +v 0.157156 1.052629 3.583857 +v 0.000000 0.987533 3.583857 +v 0.157156 1.366942 3.583857 +v 0.222253 1.209785 3.583857 +v -0.222253 1.209785 3.583857 +v -0.157156 1.366942 3.583857 +v -0.157156 1.052629 3.583857 +v 0.000000 1.432038 3.583857 +v 0.000000 1.432038 4.108382 +v 0.157156 1.366942 4.108382 +v -0.222253 1.209785 4.108382 +v -0.157156 1.052629 4.108382 +v -0.170965 1.038821 4.118903 +v -0.241780 1.209785 4.118903 +v 0.222253 1.209785 4.108382 +v 0.157156 1.052629 4.108382 +v 0.000000 0.987533 4.108382 +v -0.157156 1.366942 4.108382 +v -0.170965 1.380750 4.118903 +v -0.241780 1.209785 4.156476 +v -0.170965 1.380750 4.156476 +v 0.000000 0.968005 4.118903 +v 0.000000 1.451566 4.118903 +v 0.170965 1.380750 4.118903 +v 0.241780 1.209785 4.118903 +v 0.170965 1.038821 4.118903 +v 0.170965 1.038821 4.156476 +v 0.241780 1.209785 4.156476 +v 0.208075 1.209785 4.165493 +v 0.147131 1.062654 4.165493 +v -0.170965 1.038821 4.156476 +v 0.000000 0.968005 4.156476 +v 0.000000 1.451566 4.156476 +v 0.170965 1.380750 4.156476 +v -0.147131 1.356917 4.165493 +v -0.208075 1.209785 4.165493 +v -0.147131 1.062654 4.165493 +v 0.000000 1.001710 4.165493 +v 0.147131 1.356917 4.165493 +v 0.000000 1.417861 4.165493 +v 0.000000 1.994179 4.031190 +v -0.136534 1.975546 4.028187 +v -0.126058 1.959349 4.031190 +v -0.156272 1.606081 2.843204 +v -0.221002 1.762353 2.843204 +v -0.239682 1.762353 3.000497 +v -0.169481 1.592872 3.000497 +v 0.221002 1.762353 2.843204 +v 0.156272 1.606081 2.843204 +v 0.169481 1.592872 3.000497 +v 0.239682 1.762353 3.000497 +v 0.000000 1.983355 2.843204 +v 0.156272 1.918625 2.843204 +v 0.167155 1.934229 3.000244 +v 0.000569 2.004398 3.000244 +v -0.156272 1.918625 2.843204 +v -0.167155 1.934229 3.000244 +v 0.000000 1.541351 2.843204 +v 0.000000 1.522671 3.000497 +v 0.169481 1.592872 2.860280 +v 0.000000 1.522671 2.860280 +v -0.239682 1.762353 2.860280 +v -0.167155 1.934229 2.865422 +v 0.167155 1.934229 2.865422 +v 0.239682 1.762353 2.860280 +v -0.169481 1.592872 2.860280 +v 0.000569 2.004398 2.865422 +v -0.128183 2.091560 2.999992 +v -0.128183 2.091560 2.870565 +v -0.000564 2.091560 2.870565 +v 0.128183 2.091560 2.870565 +v 0.128183 2.091560 2.999992 +v -0.000758 2.091560 2.999992 +v -0.000758 2.040556 3.941854 +v -0.000758 2.038297 3.983544 +v -0.128183 2.038297 3.983544 +v -0.103443 2.040556 3.941854 +v -0.128183 2.117034 2.999992 +v -0.000758 2.117034 2.999992 +v -0.000564 2.117035 2.870565 +v -0.128183 2.117035 2.870565 +v 0.128183 2.117034 2.999992 +v 0.128183 2.117035 2.870565 +v -0.000758 2.113045 3.073697 +v -0.103443 2.113045 3.073697 +v -0.000758 2.063745 3.984738 +v -0.128183 2.063745 3.984738 +v 0.128183 2.038297 3.983544 +v 0.128183 2.063745 3.984738 +v -0.000758 2.087663 3.071927 +v 0.103443 2.087663 3.071927 +v 0.103443 2.065968 3.943648 +v -0.000758 2.065968 3.943648 +v -0.103443 2.087663 3.071927 +v -0.103443 2.065968 3.943648 +v 0.103443 2.040556 3.941854 +v 0.103443 2.113045 3.073697 +v -0.101627 1.929570 4.174595 +v -0.101627 2.046870 4.174595 +v -0.101627 2.046870 4.045168 +v -0.101627 1.929570 4.045168 +v -0.060619 2.046870 4.045168 +v 0.001267 2.046870 4.045168 +v 0.001138 1.971165 4.045168 +v 0.101627 1.929570 4.045168 +v 0.101627 2.046870 4.045168 +v 0.101627 2.046870 4.174595 +v 0.101627 1.929570 4.174595 +v 0.056925 2.046870 4.174595 +v 0.001287 2.046870 4.174595 +v 0.001138 1.971165 4.174595 +v 0.056926 2.046870 4.045168 +v 0.056926 2.055243 4.045168 +v 0.101627 2.083730 4.045168 +v -0.060365 2.046870 4.174595 +v -0.060365 2.055243 4.174595 +v -0.101627 2.083730 4.174595 +v -0.101627 2.083730 4.045168 +v 0.101627 2.083730 4.174595 +v -0.060365 2.065117 4.148927 +v -0.060365 2.065117 4.070836 +v -0.075271 2.144081 4.070836 +v -0.075271 2.144081 4.148927 +v 0.074745 2.144397 4.070836 +v 0.056926 2.065117 4.070836 +v 0.056926 2.065117 4.148927 +v 0.074745 2.144397 4.148927 +v -0.098636 2.129495 4.154779 +v -0.098636 2.129495 4.064983 +v 0.098636 2.129495 4.064983 +v 0.098636 2.129495 4.154779 +v -0.060365 2.055243 4.045168 +v 0.056926 2.055243 4.174595 +v -0.059365 1.189290 -1.312787 +v -0.059465 1.198896 -1.284075 +v 0.046693 1.198896 -1.284075 +v 0.046593 1.189290 -1.312787 +vt 0.314366 0.961863 +vt 0.294812 0.975635 +vt 0.294657 0.961939 +vt 0.273456 0.975731 +vt 0.273229 0.961965 +vt 0.262381 0.975737 +vt 0.256051 0.961941 +vt 0.125608 0.749505 +vt 0.097336 0.727764 +vt 0.125610 0.725602 +vt 0.168440 0.696871 +vt 0.168440 0.716405 +vt 0.109231 0.716275 +vt 0.127314 0.962819 +vt 0.110436 0.977071 +vt 0.110100 0.963138 +vt 0.056961 0.977985 +vt 0.034809 0.964084 +vt 0.057052 0.963821 +vt 0.034870 0.978067 +vt 0.014902 0.964099 +vt 0.199446 0.727764 +vt 0.171174 0.749505 +vt 0.171172 0.725602 +vt 0.035307 0.807355 +vt 0.010838 0.597288 +vt 0.017874 0.618909 +vt 0.015372 0.630834 +vt 0.013899 0.556050 +vt 0.009136 0.552343 +vt 0.015271 0.870213 +vt 0.091632 0.963445 +vt 0.055268 0.806356 +vt 0.088357 0.802601 +vt 0.013764 0.139760 +vt 0.049854 0.124762 +vt 0.048730 0.157936 +vt 0.271875 0.803748 +vt 0.255984 0.868690 +vt 0.239398 0.800845 +vt 0.221112 0.961929 +vt 0.221070 0.800394 +vt 0.043269 0.233050 +vt 0.010790 0.189172 +vt 0.008714 0.234441 +vt 0.040214 0.045310 +vt 0.041285 0.072586 +vt 0.016409 0.072577 +vt 0.106773 0.801728 +vt 0.188797 0.799828 +vt 0.189454 0.860441 +vt 0.168859 0.799931 +vt 0.203932 0.961982 +vt 0.190529 0.959560 +vt 0.139611 0.860982 +vt 0.140686 0.960100 +vt 0.179637 0.960676 +vt 0.191879 0.973114 +vt 0.221110 0.975759 +vt 0.239478 0.975750 +vt 0.239470 0.961920 +vt 0.091859 0.977480 +vt 0.068629 0.977845 +vt 0.151599 0.960980 +vt 0.139629 0.973680 +vt 0.295488 0.867180 +vt 0.309465 0.800651 +vt 0.314455 0.865726 +vt 0.099265 0.557700 +vt 0.088674 0.528893 +vt 0.091711 0.518805 +vt 0.273373 0.868342 +vt 0.291054 0.804240 +vt 0.137874 0.461278 +vt 0.058604 0.420707 +vt 0.138976 0.425869 +vt 0.064584 0.393192 +vt 0.133379 0.393550 +vt 0.134776 0.484662 +vt 0.059414 0.457228 +vt 0.017282 0.517402 +vt 0.096715 0.601134 +vt 0.094272 0.561212 +vt 0.090072 0.620005 +vt 0.092216 0.630834 +vt 0.019880 0.528535 +vt 0.093170 0.596621 +vt 0.048521 0.157264 +vt 0.099086 0.151375 +vt 0.101118 0.125172 +vt 0.100614 0.125701 +vt 0.096976 0.181286 +vt 0.045608 0.196565 +vt 0.014112 0.138899 +vt 0.044187 0.260468 +vt 0.009380 0.268657 +vt 0.010839 0.235095 +vt 0.047070 0.260910 +vt 0.012396 0.269226 +vt 0.011742 0.189926 +vt 0.045438 0.233562 +vt 0.050505 0.124018 +vt 0.015811 0.109271 +vt 0.046833 0.197155 +vt 0.129115 0.163540 +vt 0.092797 0.074820 +vt 0.123836 0.051890 +vt 0.125752 0.076448 +vt 0.099258 0.151849 +vt 0.129673 0.163858 +vt 0.097922 0.181697 +vt 0.098488 0.207838 +vt 0.102467 0.099218 +vt 0.100128 0.208179 +vt 0.086379 0.050726 +vt 0.161380 0.154835 +vt 0.130349 0.120529 +vt 0.161569 0.110452 +vt 0.161572 0.193930 +vt 0.129818 0.193381 +vt 0.101290 0.099804 +vt 0.131373 0.074271 +vt 0.130916 0.120113 +vt 0.133141 0.073753 +vt 0.128491 0.193132 +vt 0.134570 0.037458 +vt 0.163321 0.074493 +vt 0.324006 0.068216 +vt 0.325470 0.009804 +vt 0.159015 0.221209 +vt 0.319147 0.219954 +vt 0.160154 0.193815 +vt 0.162323 0.110144 +vt 0.321290 0.154865 +vt 0.153411 0.072905 +vt 0.160980 0.154628 +vt 0.161642 0.074882 +vt 0.136981 0.357463 +vt 0.167260 0.372515 +vt 0.136981 0.373289 +vt 0.088568 0.357595 +vt 0.068186 0.373289 +vt 0.068186 0.357463 +vt 0.189977 0.371792 +vt 0.167260 0.356690 +vt 0.189978 0.355966 +vt 0.321611 0.219338 +vt 0.161143 0.221263 +vt 0.322066 0.154397 +vt 0.321076 0.041804 +vt 0.323456 0.071128 +vt 0.322534 0.067945 +vt 0.250154 0.792851 +vt 0.273221 0.795467 +vt 0.091316 0.794644 +vt 0.293066 0.797695 +vt 0.016873 0.804883 +vt 0.033786 0.801329 +vt 0.077381 0.795722 +vt 0.155566 0.788575 +vt 0.138639 0.778486 +vt 0.158066 0.772764 +vt 0.054011 0.798812 +vt 0.236326 0.792079 +vt 0.202051 0.371732 +vt 0.202051 0.355906 +vt 0.116599 0.357595 +vt 0.116599 0.373421 +vt 0.015190 0.355966 +vt 0.003116 0.371732 +vt 0.003116 0.355906 +vt 0.037907 0.372515 +vt 0.037907 0.356690 +vt 0.015190 0.371792 +vt 0.105668 0.357644 +vt 0.105668 0.373470 +vt 0.099489 0.357644 +vt 0.088568 0.373421 +vt 0.099489 0.373470 +vt 0.188632 0.777943 +vt 0.167878 0.772654 +vt 0.181394 0.762326 +vt 0.294067 0.647961 +vt 0.303167 0.614199 +vt 0.303167 0.647961 +vt 0.153583 0.091790 +vt 0.321316 0.117408 +vt 0.153648 0.123361 +vt 0.323510 0.088039 +vt 0.124127 0.112592 +vt 0.125603 0.089619 +vt 0.041308 0.093532 +vt 0.086689 0.119252 +vt 0.039823 0.120997 +vt 0.273195 0.559127 +vt 0.289603 0.553152 +vt 0.290452 0.556695 +vt 0.091482 0.092156 +vt 0.016236 0.091777 +vt 0.281554 0.625218 +vt 0.271561 0.618402 +vt 0.294030 0.616776 +vt 0.170751 0.788410 +vt 0.193727 0.919817 +vt 0.180297 0.708701 +vt 0.193725 0.708701 +vt 0.265671 0.609576 +vt 0.271448 0.609440 +vt 0.294067 0.614199 +vt 0.303167 0.605510 +vt 0.293952 0.607827 +vt 0.236000 0.625228 +vt 0.245972 0.618420 +vt 0.245995 0.625548 +vt 0.223524 0.616863 +vt 0.246072 0.609463 +vt 0.254076 0.629043 +vt 0.263451 0.625557 +vt 0.263443 0.629089 +vt 0.265727 0.618518 +vt 0.263353 0.618566 +vt 0.265808 0.625494 +vt 0.254047 0.637653 +vt 0.263488 0.637699 +vt 0.251845 0.609578 +vt 0.251796 0.618515 +vt 0.251734 0.625465 +vt 0.157783 0.800051 +vt 0.138954 0.800369 +vt 0.254084 0.625511 +vt 0.254163 0.618559 +vt 0.263310 0.609597 +vt 0.254206 0.609594 +vt 0.294067 0.605510 +vt 0.303167 0.565131 +vt 0.251853 0.569232 +vt 0.253156 0.562875 +vt 0.254213 0.569233 +vt 0.263295 0.569233 +vt 0.265655 0.569230 +vt 0.266567 0.564085 +vt 0.267638 0.557134 +vt 0.268986 0.560040 +vt 0.294067 0.565131 +vt 0.303167 0.559802 +vt 0.264350 0.562875 +vt 0.263295 0.562688 +vt 0.248520 0.560043 +vt 0.244268 0.555593 +vt 0.249867 0.557136 +vt 0.254213 0.562688 +vt 0.263295 0.555128 +vt 0.250939 0.564087 +vt 0.294067 0.559802 +vt 0.303167 0.554364 +vt 0.294067 0.554364 +vt 0.303167 0.547980 +vt 0.273237 0.555588 +vt 0.254213 0.555128 +vt 0.263295 0.546600 +vt 0.263141 0.521961 +vt 0.254213 0.546600 +vt 0.254367 0.521961 +vt 0.303021 0.521961 +vt 0.294067 0.547980 +vt 0.294213 0.521961 +vt 0.227901 0.553165 +vt 0.244311 0.559132 +vt 0.227053 0.556709 +vt 0.322830 0.524494 +vt 0.328472 0.528894 +vt 0.323984 0.531427 +vt 0.330014 0.547183 +vt 0.325218 0.552440 +vt 0.325218 0.547183 +vt 0.328472 0.540213 +vt 0.322830 0.544613 +vt 0.323984 0.537680 +vt 0.329035 0.552477 +vt 0.324239 0.557734 +vt 0.324239 0.552477 +vt 0.321255 0.547183 +vt 0.320214 0.557734 +vt 0.315026 0.552477 +vt 0.320214 0.552477 +vt 0.319165 0.526989 +vt 0.319165 0.542118 +vt 0.320185 0.535986 +vt 0.314282 0.539490 +vt 0.310555 0.534572 +vt 0.315100 0.534572 +vt 0.321255 0.552440 +vt 0.316083 0.547183 +vt 0.320185 0.533121 +vt 0.314282 0.529617 +vt 0.309808 0.539058 +vt 0.304377 0.538124 +vt 0.310555 0.534535 +vt 0.309808 0.530049 +vt 0.315026 0.557734 +vt 0.310543 0.552477 +vt 0.316083 0.552440 +vt 0.311538 0.547183 +vt 0.305983 0.556964 +vt 0.304350 0.554128 +vt 0.305983 0.553247 +vt 0.304377 0.530983 +vt 0.305407 0.528102 +vt 0.311538 0.552440 +vt 0.304942 0.547953 +vt 0.303203 0.554128 +vt 0.304350 0.556083 +vt 0.303203 0.556083 +vt 0.303203 0.550789 +vt 0.303203 0.548833 +vt 0.305407 0.541005 +vt 0.303203 0.540240 +vt 0.303203 0.528867 +vt 0.303745 0.527351 +vt 0.009347 0.553762 +vt 0.097357 0.642576 +vt 0.009348 0.642577 +vt 0.107587 0.829304 +vt 0.189150 0.799526 +vt 0.189194 0.829363 +vt 0.107632 0.799414 +vt 0.189109 0.771635 +vt 0.107673 0.771635 +vt 0.097357 0.553762 +vt 0.117762 0.642576 +vt 0.093110 0.647104 +vt 0.013595 0.647105 +vt 0.013557 0.518373 +vt 0.013557 0.549711 +vt 0.009348 0.683002 +vt 0.097358 0.771695 +vt 0.009348 0.771696 +vt 0.144454 0.771725 +vt 0.117763 0.683001 +vt 0.144712 0.682911 +vt 0.097357 0.513726 +vt 0.117762 0.553762 +vt 0.097357 0.683001 +vt 0.117763 0.771695 +vt 0.280600 0.402906 +vt 0.283604 0.483938 +vt 0.280600 0.483938 +vt 0.013595 0.678474 +vt 0.093110 0.678473 +vt 0.300859 0.402771 +vt 0.303774 0.483879 +vt 0.300859 0.483879 +vt 0.093147 0.549711 +vt 0.093147 0.518373 +vt 0.009347 0.513726 +vt 0.317967 0.402771 +vt 0.303774 0.402771 +vt 0.303778 0.398399 +vt 0.320881 0.483879 +vt 0.320881 0.402771 +vt 0.303778 0.488250 +vt 0.317967 0.483879 +vt 0.317971 0.488250 +vt 0.297812 0.402906 +vt 0.283604 0.402906 +vt 0.297808 0.488445 +vt 0.297812 0.483938 +vt 0.300817 0.483938 +vt 0.300817 0.402906 +vt 0.297808 0.398399 +vt 0.283600 0.398399 +vt 0.080480 0.350713 +vt 0.103363 0.346034 +vt 0.103172 0.373989 +vt 0.333333 -0.000000 +vt 1.000000 1.000000 +vt 0.333333 1.000000 +vt 0.195007 0.381137 +vt 0.201745 0.431502 +vt 0.195007 0.431502 +vt 0.201745 0.381137 +vt 0.208482 0.431502 +vt 0.154582 0.381137 +vt 0.161320 0.431502 +vt 0.154582 0.431502 +vt 0.161319 0.381137 +vt 0.168057 0.431502 +vt 0.168057 0.381137 +vt 0.174795 0.431502 +vt 0.174795 0.381137 +vt 0.181532 0.431502 +vt 0.231060 0.416867 +vt 0.226296 0.424014 +vt 0.219558 0.399615 +vt 0.181532 0.381137 +vt 0.188270 0.431502 +vt 0.188270 0.381137 +vt 0.187482 0.431554 +vt 0.156855 0.444483 +vt 0.154582 0.431555 +vt 0.181530 0.456662 +vt 0.160534 0.456663 +vt 0.181530 0.470033 +vt 0.160534 0.470034 +vt 0.156855 0.482213 +vt 0.187482 0.495142 +vt 0.154582 0.495142 +vt 0.208478 0.431554 +vt 0.177852 0.444483 +vt 0.175578 0.431554 +vt 0.202527 0.456662 +vt 0.202527 0.470033 +vt 0.177852 0.482213 +vt 0.208479 0.495141 +vt 0.175579 0.495142 +vt 0.229475 0.431554 +vt 0.198848 0.444483 +vt 0.196575 0.431554 +vt 0.227202 0.444483 +vt 0.223523 0.470033 +vt 0.198849 0.482213 +vt 0.229475 0.495141 +vt 0.196575 0.495142 +vt 0.250472 0.431554 +vt 0.219845 0.444483 +vt 0.217572 0.431554 +vt 0.248198 0.444483 +vt 0.223523 0.456662 +vt 0.244520 0.456662 +vt 0.244520 0.470033 +vt 0.219845 0.482212 +vt 0.250472 0.495141 +vt 0.217572 0.495141 +vt 0.238569 0.431554 +vt 0.269195 0.444483 +vt 0.240842 0.444483 +vt 0.265517 0.456662 +vt 0.269195 0.482213 +vt 0.240842 0.482212 +vt 0.238568 0.495141 +vt 0.259565 0.431554 +vt 0.290192 0.444483 +vt 0.261838 0.444483 +vt 0.286513 0.456663 +vt 0.265517 0.470033 +vt 0.290191 0.482213 +vt 0.261838 0.482212 +vt 0.259565 0.495141 +vt 0.280562 0.431554 +vt 0.311188 0.444483 +vt 0.282835 0.444483 +vt 0.307510 0.456663 +vt 0.286513 0.470033 +vt 0.311188 0.482213 +vt 0.282835 0.482213 +vt 0.280561 0.495142 +vt 0.126584 0.919818 +vt 0.140012 0.708701 +vt 0.140013 0.919817 +vt 0.207154 0.708701 +vt 0.207155 0.919817 +vt 0.166870 0.919817 +vt 0.153440 0.708701 +vt 0.166869 0.708701 +vt 0.180298 0.919817 +vt 0.153441 0.919817 +vt 0.234135 0.875411 +vt 0.220697 0.919762 +vt 0.220707 0.875404 +vt 0.220583 0.919816 +vt 0.220582 0.708701 +vt 0.113155 0.708702 +vt 0.126584 0.708702 +vt 0.314568 0.891555 +vt 0.309497 0.867473 +vt 0.313761 0.869278 +vt 0.301277 0.875445 +vt 0.287839 0.919797 +vt 0.287849 0.875438 +vt 0.260992 0.875425 +vt 0.247553 0.919776 +vt 0.247564 0.875418 +vt 0.328134 0.875459 +vt 0.314695 0.919811 +vt 0.314706 0.875452 +vt 0.274410 0.919790 +vt 0.274420 0.875431 +vt 0.260982 0.919783 +vt 0.234125 0.919769 +vt 0.301267 0.919804 +vt 0.308531 0.948048 +vt 0.297558 0.919947 +vt 0.309626 0.921049 +vt 0.314647 0.896518 +vt 0.310460 0.894042 +vt 0.311777 0.973256 +vt 0.312696 0.950617 +vt 0.320287 0.797781 +vt 0.307573 0.814336 +vt 0.317673 0.792250 +vt 0.313606 0.864986 +vt 0.308535 0.840905 +vt 0.312799 0.842709 +vt 0.312873 0.946256 +vt 0.313792 0.923617 +vt 0.320287 0.992004 +vt 0.307435 0.975048 +vt 0.312643 0.838418 +vt 0.311836 0.816141 +vt 0.296659 0.841873 +vt 0.293357 0.866637 +vt 0.292551 0.844359 +vt 0.295697 0.815304 +vt 0.297621 0.868441 +vt 0.298902 0.894148 +vt 0.296462 0.946946 +vt 0.260683 0.910703 +vt 0.247255 0.985157 +vt 0.247255 0.910703 +vt 0.293215 0.921738 +vt 0.295366 0.973946 +vt 0.281238 0.988439 +vt 0.291201 0.971377 +vt 0.292395 0.840068 +vt 0.291588 0.817791 +vt 0.270381 0.881699 +vt 0.294350 0.864763 +vt 0.269266 0.880790 +vt 0.292119 0.948738 +vt 0.281862 0.800912 +vt 0.284016 0.795041 +vt 0.300968 0.985157 +vt 0.288372 0.988169 +vt 0.287540 0.985157 +vt 0.287540 0.910703 +vt 0.274112 0.985157 +vt 0.274112 0.910703 +vt 0.206969 0.910703 +vt 0.193541 0.985157 +vt 0.193541 0.910703 +vt 0.233826 0.910703 +vt 0.220398 0.985157 +vt 0.220398 0.910703 +vt 0.260683 0.985157 +vt 0.300968 0.910703 +vt 0.206969 0.985157 +vt 0.233826 0.985157 +vt 0.000000 0.406250 +vt 0.052083 0.421875 +vt 0.000000 0.421875 +vt 0.207801 0.988169 +vt 0.234658 0.988169 +vt 0.259851 0.988169 +vt 0.248086 0.988169 +vt 0.286708 0.988169 +vt 0.274943 0.988169 +vt 0.206138 0.988169 +vt 0.194373 0.988169 +vt 0.232995 0.988169 +vt 0.221230 0.988169 +vt 0.261515 0.988169 +vt 0.048732 0.447842 +vt 0.045556 0.447842 +vt 0.048732 0.436341 +vt 0.000000 0.375000 +vt 0.052083 0.390625 +vt 0.000000 0.390625 +vt 0.000000 0.468750 +vt 0.052083 0.484375 +vt 0.000000 0.484375 +vt 0.000000 0.437500 +vt 0.052083 0.453125 +vt 0.000000 0.453125 +vt 0.052083 0.437500 +vt 0.052083 0.406250 +vt 0.052083 0.500000 +vt 0.000000 0.500000 +vt 0.052083 0.468750 +vt 0.077693 0.682531 +vt 0.085752 0.702806 +vt 0.072784 0.686569 +vt 0.099335 0.548750 +vt 0.085924 0.828424 +vt 0.085920 0.548750 +vt 0.194542 0.682531 +vt 0.186482 0.702806 +vt 0.184647 0.695445 +vt 0.154742 0.695445 +vt 0.169694 0.702806 +vt 0.152906 0.702806 +vt 0.137953 0.695445 +vt 0.136117 0.702806 +vt 0.171530 0.695445 +vt 0.117493 0.695445 +vt 0.102541 0.702806 +vt 0.104376 0.695445 +vt 0.134281 0.695445 +vt 0.119329 0.702806 +vt 0.121165 0.695445 +vt 0.072504 0.548751 +vt 0.072521 0.828425 +vt 0.059088 0.548753 +vt 0.045714 0.828432 +vt 0.045673 0.548757 +vt 0.126166 0.548755 +vt 0.112729 0.828426 +vt 0.112751 0.548752 +vt 0.059117 0.828428 +vt 0.032312 0.828437 +vt 0.032257 0.548762 +vt 0.099327 0.828424 +vt 0.100705 0.695445 +vt 0.087588 0.695445 +vt 0.018909 0.828443 +vt 0.018841 0.548769 +vt 0.102541 0.720660 +vt 0.085752 0.720660 +vt 0.136117 0.720660 +vt 0.169694 0.720660 +vt 0.119329 0.720660 +vt 0.152906 0.720660 +vt 0.151119 0.727549 +vt 0.137904 0.727549 +vt 0.186482 0.720660 +vt 0.171480 0.727549 +vt 0.100754 0.727549 +vt 0.087538 0.727549 +vt 0.104327 0.727549 +vt 0.121115 0.727549 +vt 0.077795 0.740943 +vt 0.073051 0.737368 +vt 0.194439 0.740943 +vt 0.184696 0.727549 +vt 0.167908 0.727549 +vt 0.154692 0.727549 +vt 0.274714 0.919931 +vt 0.261210 0.982393 +vt 0.261210 0.919931 +vt 0.288333 0.987837 +vt 0.271580 0.973788 +vt 0.289932 0.985191 +vt 0.247705 0.919931 +vt 0.234201 0.982393 +vt 0.234201 0.919931 +vt 0.220697 0.982393 +vt 0.220697 0.919931 +vt 0.247705 0.982393 +vt 0.301723 0.919931 +vt 0.288219 0.982393 +vt 0.288219 0.919931 +vt 0.315227 0.919931 +vt 0.301723 0.982393 +vt 0.328732 0.919931 +vt 0.315227 0.982393 +vt 0.274714 0.982393 +vt 0.293124 0.985191 +vt 0.309933 0.968199 +vt 0.311477 0.973788 +vt 0.266945 0.970578 +vt 0.261721 0.942874 +vt 0.269323 0.970403 +vt 0.316112 0.970578 +vt 0.321335 0.942874 +vt 0.323100 0.945273 +vt 0.316112 0.910382 +vt 0.321335 0.938086 +vt 0.313734 0.910558 +vt 0.288333 0.893123 +vt 0.271580 0.907172 +vt 0.271463 0.903605 +vt 0.266945 0.910383 +vt 0.261721 0.938086 +vt 0.259957 0.935688 +vt 0.294723 0.893123 +vt 0.311476 0.907172 +vt 0.293124 0.895769 +vt 0.294723 0.987837 +vt 0.311593 0.977356 +vt 0.273123 0.912761 +vt 0.291528 0.906976 +vt 0.275734 0.916790 +vt 0.291476 0.979602 +vt 0.273049 0.968088 +vt 0.313734 0.970403 +vt 0.317609 0.940559 +vt 0.310007 0.912873 +vt 0.289932 0.895769 +vt 0.269323 0.910558 +vt 0.265447 0.940401 +vt 0.291581 0.901359 +vt 0.291528 0.973984 +vt 0.269192 0.940480 +vt 0.309933 0.912761 +vt 0.307322 0.964171 +vt 0.273123 0.968199 +vt 0.265447 0.940559 +vt 0.275734 0.964171 +vt 0.313864 0.940480 +vt 0.317609 0.940401 +vt 0.307322 0.916789 +vt 0.282700 0.682531 +vt 0.271598 0.702003 +vt 0.270797 0.682531 +vt 0.263862 0.653767 +vt 0.276843 0.637114 +vt 0.276843 0.652877 +vt 0.272434 0.675600 +vt 0.263862 0.635913 +vt 0.272669 0.614289 +vt 0.256381 0.695742 +vt 0.297255 0.695389 +vt 0.282107 0.702003 +vt 0.269648 0.894065 +vt 0.269215 0.907339 +vt 0.267789 0.894057 +vt 0.270334 0.906440 +vt 0.294268 0.923602 +vt 0.237869 0.893926 +vt 0.237791 0.911563 +vt 0.289962 0.934035 +vt 0.303659 0.931128 +vt 0.304214 0.934035 +vt 0.261457 0.934035 +vt 0.247760 0.931128 +vt 0.260902 0.931128 +vt 0.232711 0.934065 +vt 0.222295 0.920924 +vt 0.233498 0.931227 +vt 0.318708 0.934065 +vt 0.329124 0.920924 +vt 0.330769 0.923036 +vt 0.275710 0.934035 +vt 0.289407 0.931128 +vt 0.247205 0.934035 +vt 0.246640 0.931132 +vt 0.317921 0.931228 +vt 0.262012 0.931128 +vt 0.275154 0.931128 +vt 0.262012 0.953205 +vt 0.275709 0.950376 +vt 0.275154 0.953205 +vt 0.261457 0.950376 +vt 0.317931 0.952980 +vt 0.304214 0.950376 +vt 0.318708 0.949777 +vt 0.233488 0.952980 +vt 0.247205 0.950376 +vt 0.246629 0.953196 +vt 0.232711 0.949777 +vt 0.289407 0.953206 +vt 0.289962 0.950376 +vt 0.329533 0.962240 +vt 0.331194 0.959687 +vt 0.221886 0.962240 +vt 0.247760 0.953205 +vt 0.260902 0.953205 +vt 0.290517 0.953206 +vt 0.303659 0.953205 +vt 0.286548 0.925737 +vt 0.274178 0.941902 +vt 0.276506 0.922891 +vt 0.263857 0.931768 +vt 0.253669 0.941716 +vt 0.241589 0.925551 +vt 0.251491 0.922891 +vt 0.302318 0.955878 +vt 0.296095 0.940846 +vt 0.309892 0.941203 +vt 0.276157 1.000043 +vt 0.277845 0.988719 +vt 0.279031 0.999320 +vt 0.284417 0.944018 +vt 0.263815 0.960025 +vt 0.274027 0.944968 +vt 0.273860 0.960272 +vt 0.284163 0.946906 +vt 0.263891 0.944699 +vt 0.253734 0.959924 +vt 0.253781 0.944730 +vt 0.263905 0.941721 +vt 0.262350 0.883120 +vt 0.272118 0.893652 +vt 0.262350 0.893652 +vt 0.243789 0.946439 +vt 0.243564 0.943592 +vt 0.274698 0.990680 +vt 0.275897 0.990665 +vt 0.222326 0.666214 +vt 0.223796 0.675651 +vt 0.221878 0.675521 +vt 0.276984 0.883345 +vt 0.274471 0.883120 +vt 0.209797 0.558857 +vt 0.219735 0.569163 +vt 0.209797 0.569163 +vt 0.225468 0.664276 +vt 0.226612 0.674973 +vt 0.222094 0.558857 +vt 0.223523 0.666167 +vt 0.281111 0.893792 +vt 0.279697 0.988827 +vt 0.228356 0.674554 +vt 0.227211 0.663856 +vt 0.220401 0.664219 +vt 0.217884 0.569235 +vt 0.272118 0.897282 +vt 0.279262 0.893687 +vt 0.219072 0.674722 +vt 0.289130 0.883559 +vt 0.289049 0.893859 +vt 0.272776 0.988740 +vt 0.274236 0.999907 +vt 0.271463 0.999118 +vt 0.226877 0.569238 +vt 0.236860 0.558893 +vt 0.236778 0.569413 +vt 0.208616 0.698065 +vt 0.199561 0.713051 +vt 0.199561 0.698065 +vt 0.223046 0.714223 +vt 0.228088 0.714255 +vt 0.228001 0.723082 +vt 0.247216 0.713051 +vt 0.256270 0.698065 +vt 0.256270 0.713051 +vt 0.232635 0.696906 +vt 0.228128 0.696870 +vt 0.228192 0.688045 +vt 0.236144 0.714777 +vt 0.232647 0.713361 +vt 0.236489 0.710792 +vt 0.219824 0.696340 +vt 0.223052 0.697748 +vt 0.219448 0.700309 +vt 0.211461 0.713051 +vt 0.208616 0.713051 +vt 0.244371 0.698065 +vt 0.247216 0.698065 +vt 0.223330 0.710079 +vt 0.217127 0.701037 +vt 0.223330 0.701037 +vt 0.232384 0.710079 +vt 0.238657 0.701037 +vt 0.238657 0.710079 +vt 0.215001 0.700359 +vt 0.211461 0.698065 +vt 0.240830 0.700359 +vt 0.244370 0.713051 +vt 0.240830 0.710757 +vt 0.215001 0.710756 +vt 0.212477 0.718880 +vt 0.232384 0.701037 +vt 0.217127 0.710079 +vt 0.243247 0.691947 +vt 0.223051 0.713206 +vt 0.232650 0.697917 +vt 0.236090 0.696640 +vt 0.236348 0.700497 +vt 0.219875 0.714484 +vt 0.219585 0.710645 +vt 0.243247 0.719169 +vt 0.212477 0.692235 +vt 0.223082 0.696719 +vt 0.220294 0.682531 +vt 0.232619 0.714384 +vt 0.235699 0.728531 +vt 0.236749 0.573040 +vt 0.269746 0.998630 +vt 0.144323 0.762715 +vt 0.314455 0.975508 +vt 0.097131 0.750157 +vt 0.159735 0.751740 +vt 0.138787 0.766338 +vt 0.117867 0.751648 +vt 0.109270 0.696289 +vt 0.127627 0.976678 +vt 0.014857 0.978001 +vt 0.199651 0.750157 +vt 0.014710 0.592571 +vt 0.014697 0.110197 +vt 0.010653 0.072850 +vt 0.010554 0.041223 +vt 0.199186 0.800615 +vt 0.128645 0.801487 +vt 0.203942 0.975766 +vt 0.062578 0.483566 +vt 0.131861 0.038058 +vt 0.318354 0.254488 +vt 0.153393 0.041207 +vt 0.321715 0.253791 +vt 0.322483 0.009668 +vt 0.308636 0.795153 +vt 0.018435 0.799670 +vt 0.009876 0.122906 +vt 0.010440 0.091074 +vt 0.271559 0.625547 +vt 0.223589 0.607923 +vt 0.327319 0.521961 +vt 0.330014 0.552440 +vt 0.327319 0.547146 +vt 0.329035 0.557734 +vt 0.315100 0.534535 +vt 0.310543 0.557734 +vt 0.304942 0.551670 +vt 0.303745 0.541756 +vt 0.117762 0.513726 +vt 0.317971 0.398399 +vt 0.283600 0.488445 +vt 0.141926 0.346559 +vt 0.168187 0.351749 +vt 0.141640 0.374054 +vt 0.180275 0.360697 +vt 0.167479 0.368991 +vt 0.081648 0.369717 +vt 0.075115 0.362544 +vt 0.074695 0.357469 +vt 1.000000 -0.000000 +vt 0.208482 0.381137 +vt 0.219558 0.424014 +vt 0.214794 0.416868 +vt 0.214794 0.406761 +vt 0.226296 0.399615 +vt 0.231060 0.406761 +vt 0.185209 0.444483 +vt 0.185209 0.482213 +vt 0.206205 0.444482 +vt 0.206205 0.482213 +vt 0.227202 0.482212 +vt 0.248198 0.482212 +vt 0.271468 0.431554 +vt 0.271468 0.495142 +vt 0.292465 0.431554 +vt 0.292465 0.495142 +vt 0.313461 0.431555 +vt 0.307510 0.470034 +vt 0.313461 0.495142 +vt 0.113156 0.919818 +vt 0.328124 0.919818 +vt 0.313949 0.919163 +vt 0.317605 0.997602 +vt 0.292296 0.944377 +vt 0.283402 0.994429 +vt 0.300137 0.988169 +vt 0.219566 0.988169 +vt 0.246423 0.988169 +vt 0.273280 0.988169 +vt 0.043310 0.444474 +vt 0.043310 0.439710 +vt 0.045556 0.436341 +vt 0.050978 0.439710 +vt 0.050978 0.444474 +vt 0.052083 0.375000 +vt 0.199450 0.686569 +vt 0.167858 0.695445 +vt 0.151070 0.695445 +vt 0.126132 0.828429 +vt 0.117543 0.727549 +vt 0.134331 0.727549 +vt 0.199184 0.737368 +vt 0.271463 0.977356 +vt 0.328732 0.982393 +vt 0.291581 0.979602 +vt 0.259957 0.945273 +vt 0.323100 0.935687 +vt 0.311593 0.903605 +vt 0.291476 0.901359 +vt 0.310007 0.968087 +vt 0.273049 0.912873 +vt 0.237860 0.876290 +vt 0.290517 0.931128 +vt 0.220707 0.923131 +vt 0.276265 0.931128 +vt 0.304779 0.931132 +vt 0.304790 0.953196 +vt 0.276265 0.953205 +vt 0.220287 0.959600 +vt 0.293315 0.949913 +vt 0.224609 0.558677 +vt 0.218549 0.664294 +vt 0.262350 0.897282 +vt 0.220063 0.728189 +vt 0.235926 0.682997 +vt 0.216897 0.712351 +vt 0.238896 0.698725 +vt 0.238896 0.712391 +vt 0.216897 0.698764 +vt 0.226848 0.572865 +vt 0.271059 0.988251 +vn 0.4257 0.9049 -0.0048 +vn 0.9414 0.3371 -0.0135 +vn 1.0000 -0.0021 -0.0092 +vn 0.9999 -0.0056 -0.0127 +vn -0.7762 -0.6305 -0.0048 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0049 -0.0080 +vn -1.0000 0.0016 -0.0087 +vn -0.9414 0.3371 -0.0136 +vn -0.9415 0.3368 -0.0109 +vn -0.4227 0.9063 0.0000 +vn 0.7762 -0.6305 -0.0048 +vn -0.9415 0.3371 0.0000 +vn -0.9406 0.3396 0.0004 +vn 0.3933 -0.0014 0.9194 +vn 0.3737 0.1338 0.9179 +vn -1.0000 -0.0035 -0.0003 +vn 0.9937 0.0000 -0.1121 +vn 1.0000 -0.0035 0.0000 +vn 1.0000 0.0000 -0.0002 +vn -0.9568 0.2679 -0.1132 +vn -0.7341 -0.6786 -0.0246 +vn -1.0000 -0.0004 -0.0003 +vn -0.0014 -0.9870 -0.1609 +vn 1.0000 -0.0079 -0.0019 +vn 1.0000 -0.0051 0.0001 +vn -1.0000 -0.0051 0.0001 +vn -1.0000 -0.0079 -0.0019 +vn 0.0908 -0.1778 0.9799 +vn 0.0000 -1.0000 -0.0075 +vn 1.0000 0.0016 -0.0088 +vn 1.0000 0.0049 -0.0080 +vn 0.9999 -0.0004 -0.0153 +vn 0.9999 -0.0004 -0.0102 +vn -0.9999 -0.0004 -0.0102 +vn -0.9999 -0.0004 -0.0153 +vn -1.0000 -0.0021 -0.0092 +vn -0.9999 -0.0069 -0.0104 +vn -0.9999 -0.0048 -0.0096 +vn -0.0908 -0.1778 0.9799 +vn 0.4227 0.9063 0.0000 +vn 0.1385 0.3003 -0.9437 +vn 0.9415 0.3371 0.0000 +vn 0.9333 0.3590 -0.0000 +vn 0.4012 0.9160 0.0000 +vn 1.0000 -0.0023 0.0000 +vn 0.9985 -0.0546 0.0000 +vn 0.3719 0.1363 -0.9182 +vn 0.7077 0.7065 -0.0002 +vn 0.1397 0.2995 0.9438 +vn 0.3939 0.0013 -0.9192 +vn -1.0000 -0.0068 0.0000 +vn -1.0000 -0.0061 0.0028 +vn -1.0000 -0.0042 0.0047 +vn 1.0000 0.0000 0.0000 +vn 1.0000 0.0007 0.0027 +vn 1.0000 -0.0016 -0.0023 +vn -0.9546 0.2485 -0.1646 +vn -0.9937 -0.0007 -0.1122 +vn -0.5111 0.8476 -0.1425 +vn 0.5111 0.8476 -0.1425 +vn 0.9568 0.2679 -0.1132 +vn -0.9937 0.0000 -0.1121 +vn 0.9936 -0.0013 -0.1126 +vn -0.9389 0.3167 -0.1345 +vn -0.5509 -0.5672 0.6122 +vn 0.9389 0.3167 -0.1345 +vn -0.4738 0.7235 -0.5021 +vn -1.0000 0.0000 0.0000 +vn -1.0000 -0.0023 0.0014 +vn 0.4738 0.7235 -0.5021 +vn 1.0000 -0.0012 0.0016 +vn 1.0000 -0.0039 0.0023 +vn 0.9546 0.2485 -0.1646 +vn -0.6739 -0.6939 0.2537 +vn 0.9694 0.2236 0.1017 +vn 0.9694 0.2237 0.1012 +vn 1.0000 -0.0034 -0.0015 +vn 1.0000 -0.0017 -0.0014 +vn 1.0000 -0.0038 -0.0012 +vn 0.5456 0.7635 0.3455 +vn 1.0000 0.0015 0.0024 +vn 1.0000 -0.0023 -0.0015 +vn -1.0000 -0.0045 0.0006 +vn -1.0000 -0.0035 0.0032 +vn -1.0000 -0.0007 0.0039 +vn -0.4293 0.8526 -0.2981 +vn -1.0000 -0.0004 0.0028 +vn 0.4293 0.8526 -0.2981 +vn 1.0000 -0.0037 0.0023 +vn 1.0000 -0.0061 0.0037 +vn -0.5813 0.8136 -0.0067 +vn -1.0000 -0.0019 -0.0013 +vn -1.0000 -0.0017 0.0003 +vn -0.6627 -0.6823 -0.3087 +vn -0.9694 0.2237 0.1012 +vn -0.9694 0.2235 0.1017 +vn 1.0000 0.0006 -0.0028 +vn 1.0000 -0.0008 0.0015 +vn -1.0000 -0.0034 -0.0015 +vn -1.0000 -0.0033 0.0002 +vn -1.0000 -0.0014 -0.0035 +vn -0.5456 0.7635 0.3455 +vn -1.0000 -0.0025 -0.0012 +vn -1.0000 -0.0017 0.0000 +vn -0.9902 0.1399 -0.0006 +vn 0.5813 0.8136 -0.0067 +vn 1.0000 -0.0032 -0.0014 +vn 1.0000 -0.0034 0.0003 +vn 1.0000 -0.0038 -0.0000 +vn 0.9737 0.2279 -0.0023 +vn 0.9738 0.2276 -0.0019 +vn -0.6847 -0.7050 0.1849 +vn -0.9738 0.2276 -0.0019 +vn -0.9736 0.2281 -0.0020 +vn 1.0000 -0.0017 -0.0001 +vn 0.6275 0.0151 -0.7785 +vn 0.6330 0.0176 -0.7740 +vn -0.7019 0.0021 -0.7122 +vn -0.7064 0.0000 -0.7078 +vn 0.6040 0.2359 -0.7612 +vn 0.3767 0.8078 -0.4533 +vn -0.3910 0.8384 -0.3797 +vn -0.7142 0.0083 -0.6999 +vn -0.7143 0.0016 -0.6998 +vn -0.7176 0.0128 -0.6964 +vn -0.1915 -0.3110 -0.9309 +vn -0.6735 0.2590 -0.6923 +vn 0.6296 0.0075 -0.7769 +vn 0.6296 0.0000 -0.7769 +vn 0.6254 -0.0051 -0.7803 +vn -0.7634 0.6459 -0.0028 +vn 0.7634 0.6459 -0.0028 +vn 1.0000 -0.0017 0.0000 +vn 0.9902 0.1399 -0.0006 +vn -0.6967 -0.7173 0.0031 +vn 0.6973 -0.7167 0.0031 +vn 0.0000 -1.0000 0.0043 +vn 0.1962 -0.2566 -0.9464 +vn 0.0000 0.0000 -1.0000 +vn 0.6853 -0.7044 0.1847 +vn 0.0000 -0.9673 0.2537 +vn 0.6633 -0.6818 -0.3085 +vn 0.0000 -0.9111 -0.4123 +vn 0.7110 -0.6559 0.2535 +vn 0.9999 0.0128 -0.0066 +vn 0.9999 0.0080 -0.0062 +vn 0.5516 -0.5669 0.6119 +vn 0.0000 -0.6796 0.7335 +vn 0.7348 -0.6778 -0.0246 +vn 0.9238 0.0000 -0.3830 +vn 0.0056 -0.0098 -0.9999 +vn 0.0000 -1.0000 0.0095 +vn -0.9239 0.3827 0.0000 +vn 1.0000 0.0000 -0.0015 +vn 0.0000 0.0216 -0.9998 +vn -0.9840 -0.1758 -0.0295 +vn -1.0000 0.0000 -0.0015 +vn 0.0000 -0.0216 0.9998 +vn 0.9993 0.0008 -0.0364 +vn 0.0000 -0.0377 0.9993 +vn -0.9997 -0.0009 -0.0249 +vn -0.0057 -0.0103 -0.9999 +vn 0.0000 -0.9998 -0.0206 +vn 0.0000 -0.9997 -0.0225 +vn -0.9997 0.0005 -0.0231 +vn 0.0000 0.9998 0.0216 +vn 0.0000 -0.9998 -0.0216 +vn 0.0000 0.9604 0.2786 +vn 0.0000 -0.9648 -0.2630 +vn -1.0000 -0.0047 0.0009 +vn 0.0000 -0.7438 -0.6684 +vn 0.0000 0.7295 0.6840 +vn 0.0000 0.1212 0.9926 +vn 1.0000 -0.0039 0.0029 +vn 1.0000 -0.0005 -0.0048 +vn 0.0000 -0.1592 -0.9872 +vn 0.0000 -0.0766 -0.9971 +vn 0.0000 0.0714 0.9974 +vn -0.9999 0.0080 -0.0062 +vn -0.9999 0.0128 -0.0066 +vn 0.0000 0.1150 -0.9934 +vn 0.0000 -0.1150 0.9934 +vn 0.0000 0.0444 -0.9990 +vn 0.0000 -0.0997 0.9950 +vn 0.0000 -0.1804 0.9836 +vn 0.0000 -0.0613 -0.9981 +vn 0.9955 -0.0947 0.0000 +vn 0.0000 0.1792 0.9838 +vn 0.0000 -0.2422 -0.9702 +vn 0.0008 0.5015 0.8652 +vn 0.0000 0.5038 0.8638 +vn 0.0005 0.5013 0.8652 +vn -0.9934 -0.0844 0.0771 +vn 0.0000 0.5088 0.8609 +vn 0.0025 0.5075 0.8616 +vn -0.0026 0.5077 0.8616 +vn 0.0000 -0.5752 -0.8180 +vn 0.0000 -0.7383 0.6745 +vn 0.0000 -0.9117 -0.4108 +vn 0.9385 -0.2548 0.2328 +vn -0.9386 -0.2548 0.2328 +vn 0.0000 -0.9994 -0.0347 +vn -0.0051 1.0000 0.0000 +vn 0.0000 -0.0370 0.9993 +vn 0.9999 -0.0021 -0.0102 +vn 0.9999 0.0018 -0.0135 +vn -1.0000 -0.0035 -0.0069 +vn -0.9999 0.0001 -0.0134 +vn -1.0000 -0.0015 -0.0087 +vn 1.0000 0.0010 0.0047 +vn 1.0000 -0.0006 0.0000 +vn -1.0000 -0.0027 0.0042 +vn -1.0000 -0.0017 -0.0006 +vn 0.0007 -1.0000 -0.0000 +vn -1.0000 -0.0012 0.0001 +vn -1.0000 -0.0015 0.0000 +vn -1.0000 -0.0013 -0.0003 +vn 1.0000 -0.0015 0.0000 +vn 0.0032 1.0000 0.0000 +vn 1.0000 -0.0056 0.0033 +vn 1.0000 -0.0015 0.0006 +vn 1.0000 0.0015 0.0047 +vn 1.0000 -0.0017 0.0008 +vn 1.0000 -0.0006 0.0051 +vn 0.0032 -1.0000 -0.0000 +vn -1.0000 0.0013 0.0045 +vn -1.0000 -0.0007 -0.0000 +vn -1.0000 -0.0006 0.0003 +vn -1.0000 -0.0012 -0.0007 +vn -1.0000 -0.0015 -0.0006 +vn -1.0000 -0.0012 -0.0008 +vn -1.0000 -0.0004 0.0051 +vn -1.0000 -0.0006 0.0000 +vn -0.0032 1.0000 0.0000 +vn -0.0032 -1.0000 0.0000 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.9239 -0.3827 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.3827 0.9239 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.9239 -0.3827 +vn 0.0000 0.3827 -0.9239 +vn 0.7951 -0.4858 -0.3630 +vn 0.7513 0.6433 0.1472 +vn -0.3459 0.8319 0.4339 +vn -0.9860 -0.0789 0.1472 +vn -0.2163 -0.9063 -0.3630 +vn 0.5772 0.0383 -0.8157 +vn 0.8396 0.4308 0.3307 +vn -0.0854 0.2055 0.9749 +vn -0.8976 -0.2914 0.3307 +vn -0.4343 -0.3822 -0.8157 +vn 0.3055 0.6919 -0.6541 +vn 0.9498 0.1658 0.2652 +vn 0.2394 -0.5757 0.7818 +vn -0.7874 -0.5564 0.2652 +vn -0.7060 0.2715 -0.6542 +vn 0.1846 0.9828 0.0000 +vn 0.9989 0.0479 0.0000 +vn 0.3839 -0.9234 0.0000 +vn -0.7384 -0.6744 0.0000 +vn -0.8269 0.5623 0.0000 +vn 0.3055 0.6919 0.6541 +vn 0.9498 0.1658 -0.2652 +vn 0.2394 -0.5757 -0.7818 +vn -0.7874 -0.5564 -0.2652 +vn -0.7060 0.2715 0.6541 +vn 0.5772 0.0383 0.8157 +vn 0.8396 0.4308 -0.3308 +vn -0.0854 0.2055 -0.9749 +vn -0.8976 -0.2914 -0.3307 +vn -0.4342 -0.3822 0.8157 +vn 0.7951 -0.4858 0.3630 +vn 0.7513 0.6433 -0.1472 +vn -0.3459 0.8319 -0.4339 +vn -0.9860 -0.0789 -0.1472 +vn -0.2163 -0.9063 0.3630 +vn 0.9239 -0.3827 -0.0000 +vn -0.9239 -0.3827 -0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.2163 0.5222 -0.8249 +vn -0.2163 0.5222 -0.8249 +vn -0.5222 -0.2163 -0.8249 +vn 0.2081 -0.4401 -0.8735 +vn 0.5222 0.2163 -0.8249 +vn -0.5222 0.2163 -0.8249 +vn -0.2163 -0.5222 -0.8249 +vn 0.5222 -0.2163 -0.8249 +vn 0.5222 0.2163 0.8249 +vn -0.5222 0.2163 0.8249 +vn -0.2163 -0.5222 0.8249 +vn 0.5222 -0.2163 0.8249 +vn 0.3827 0.9238 -0.0120 +vn 0.8438 -0.5265 0.1041 +vn -0.5222 -0.2163 0.8250 +vn 0.2058 -0.4197 0.8840 +vn -0.1653 0.4232 -0.8908 +vn -0.9239 0.3827 0.0001 +vn 0.1642 0.3964 -0.9033 +vn 0.3964 -0.1642 -0.9033 +vn 0.1642 -0.3964 -0.9033 +vn 0.3964 0.1642 -0.9033 +vn -0.3964 -0.1642 -0.9033 +vn -0.1642 -0.3964 -0.9033 +vn -0.3827 0.9239 0.0001 +vn 0.9239 0.3827 0.0001 +vn -0.3827 -0.9239 0.0001 +vn 0.3827 0.9239 0.0001 +vn 0.9239 -0.3827 0.0001 +vn -0.9239 -0.3827 0.0001 +vn -0.3964 0.1642 -0.9033 +vn 0.3827 -0.9239 0.0001 +vn 0.1317 -0.3179 0.9389 +vn 0.3179 0.1317 0.9389 +vn -0.3179 0.1317 0.9389 +vn -0.3179 -0.1317 0.9389 +vn -0.1317 -0.3179 0.9389 +vn -0.1355 0.3696 0.9193 +vn 0.1317 0.3179 0.9389 +vn 0.3179 -0.1317 0.9390 +vn -0.4654 -0.1928 -0.8638 +vn -0.1928 -0.4654 -0.8638 +vn -0.1928 0.4654 -0.8638 +vn 0.1928 0.4654 -0.8638 +vn 0.4654 -0.1928 -0.8639 +vn 0.1928 -0.4654 -0.8638 +vn 0.4654 0.1928 -0.8638 +vn -0.4654 0.1928 -0.8639 +vn 0.2570 -0.1064 0.9605 +vn 0.1064 -0.2570 0.9605 +vn 0.2570 0.1064 0.9605 +vn -0.2570 0.1064 0.9605 +vn -0.2570 -0.1064 0.9605 +vn -0.1064 -0.2570 0.9605 +vn -0.1064 0.2570 0.9605 +vn 0.1064 0.2570 0.9605 +vn 0.9968 0.0794 0.0000 +vn -0.9968 0.0794 0.0000 +vn -0.0007 0.0459 -0.9989 +vn -0.0009 0.0618 0.9981 +vn 0.0009 0.0618 0.9981 +vn 0.0007 0.0459 -0.9989 +vn 0.0465 0.1529 0.9871 +vn -0.0359 0.1299 0.9909 +vn -0.2910 0.9565 0.0178 +vn -0.7522 -0.6487 0.1156 +vn -0.2662 -0.9636 0.0231 +vn 0.3820 -0.9223 0.0577 +vn -0.6671 -0.2763 0.6919 +vn 0.6671 -0.2763 0.6919 +vn 0.2683 0.6476 0.7132 +vn -0.2660 0.6359 0.7244 +vn -0.2763 -0.6671 0.6919 +vn 0.6671 0.2763 0.6919 +vn -0.6907 0.2924 0.6614 +vn 0.2763 -0.6671 0.6919 +vn 0.2692 -0.6498 -0.7108 +vn -0.7364 0.3285 -0.5914 +vn -0.9213 0.3888 0.0000 +vn 0.6498 0.2692 -0.7108 +vn 0.9213 0.3888 0.0000 +vn -0.2692 -0.6498 -0.7109 +vn -0.2921 0.6981 -0.6537 +vn 0.2936 0.7087 -0.6415 +vn 0.6498 -0.2692 -0.7109 +vn -0.6498 -0.2692 -0.7108 +vn -0.9707 0.2404 0.0000 +vn -0.0152 0.0364 -0.9992 +vn 0.9707 0.2404 0.0000 +vn 0.0008 0.0018 1.0000 +vn 0.0000 -0.9985 -0.0541 +vn -0.0007 0.0018 1.0000 +vn 0.0154 0.0365 -0.9992 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.9985 0.0540 +vn 0.0000 -0.0469 0.9989 +vn 0.0000 0.0704 -0.9975 +vn 0.0000 -0.0696 0.9976 +vn 0.9826 0.1855 0.0000 +vn -0.9757 0.2193 0.0000 +vn -0.9979 0.0652 0.0000 +vn 0.9979 0.0652 0.0000 +vn 0.5958 0.2860 -0.7505 +vn -0.5296 0.8483 0.0000 +vn 0.5292 0.8485 0.0000 +vn -0.5654 0.2963 0.7697 +vn 0.0000 0.9333 -0.3590 +vn -0.5112 0.8022 -0.3086 +vn 0.0000 0.9333 0.3590 +vn 0.5416 0.7846 0.3018 +vn -0.5654 0.2963 -0.7698 +vn 0.5416 0.7846 -0.3018 +vn 0.5958 0.2860 0.7504 +vn -0.5112 0.8022 0.3086 +vn 1.0000 -0.0023 -0.0003 +vn 0.0054 -0.0103 -0.9999 +vn -0.0060 -0.0098 -0.9999 +vn -0.2048 -0.2682 -0.9413 +vn 0.1799 -0.3126 -0.9327 +vn 0.0000 -0.9869 -0.1613 +vn 0.0015 -0.9870 -0.1609 +vn 0.9385 0.3453 -0.0001 +vn 1.0000 -0.0015 -0.0087 +vn 0.9999 0.0000 -0.0134 +vn -0.7768 -0.6298 -0.0036 +vn -1.0000 0.0004 -0.0021 +vn -1.0000 -0.0015 -0.0049 +vn -0.9385 0.3453 0.0000 +vn 0.7768 -0.6298 -0.0036 +vn -0.9412 0.3378 -0.0026 +vn 0.3935 -0.0015 0.9193 +vn 0.4060 0.1562 0.9004 +vn -1.0000 -0.0021 0.0000 +vn -1.0000 -0.0018 -0.0027 +vn 1.0000 -0.0036 0.0000 +vn 1.0000 -0.0004 -0.0003 +vn -0.9608 0.2487 -0.1223 +vn -0.6066 -0.7945 -0.0284 +vn -0.6264 -0.7733 -0.0975 +vn -1.0000 0.0000 -0.0003 +vn 1.0000 -0.0005 -0.0003 +vn 1.0000 0.0016 -0.0009 +vn 1.0000 0.0030 -0.0040 +vn -1.0000 0.0030 -0.0040 +vn -1.0000 0.0016 -0.0009 +vn -1.0000 -0.0005 -0.0003 +vn 1.0000 -0.0015 -0.0049 +vn 1.0000 0.0004 -0.0021 +vn 0.9999 -0.0056 -0.0118 +vn 1.0000 -0.0015 -0.0088 +vn -1.0000 -0.0015 -0.0088 +vn -0.9999 -0.0056 -0.0118 +vn -0.9999 -0.0015 -0.0102 +vn -0.9999 0.0036 -0.0103 +vn -0.9999 -0.0061 -0.0084 +vn 0.1422 0.3319 -0.9325 +vn 0.3982 0.9173 0.0006 +vn 1.0000 -0.0038 -0.0002 +vn 0.4062 0.1600 -0.8997 +vn 0.7079 0.7063 -0.0002 +vn 0.1430 0.3294 0.9333 +vn 0.3947 0.0009 -0.9188 +vn -1.0000 -0.0012 0.0016 +vn -1.0000 -0.0039 0.0023 +vn 1.0000 -0.0024 0.0014 +vn -0.9306 0.3160 -0.1849 +vn -0.9936 -0.0013 -0.1126 +vn -0.5412 0.8265 -0.1550 +vn 0.5412 0.8265 -0.1550 +vn 0.9608 0.2487 -0.1223 +vn 0.9937 -0.0007 -0.1122 +vn -0.9634 0.2291 -0.1393 +vn 0.9634 0.2291 -0.1393 +vn -0.3871 0.7687 -0.5092 +vn -1.0000 -0.0016 -0.0023 +vn -1.0000 0.0006 0.0027 +vn 0.3871 0.7687 -0.5092 +vn 1.0000 -0.0068 0.0000 +vn 1.0000 -0.0042 0.0048 +vn 1.0000 -0.0061 0.0028 +vn 0.9306 0.3160 -0.1849 +vn 0.0000 -0.9328 0.3605 +vn -0.7103 -0.6566 0.2537 +vn 0.9693 0.2241 0.1015 +vn 1.0000 -0.0008 -0.0027 +vn 1.0000 -0.0030 0.0001 +vn 1.0000 -0.0020 0.0020 +vn -1.0000 -0.0038 0.0023 +vn -1.0000 -0.0061 0.0037 +vn -0.5495 0.7690 -0.3266 +vn -1.0000 -0.0023 -0.0015 +vn -1.0000 0.0017 0.0022 +vn 0.5495 0.7690 -0.3266 +vn 1.0000 -0.0045 0.0006 +vn 1.0000 -0.0010 0.0046 +vn 1.0000 -0.0035 0.0032 +vn -1.0000 -0.0015 -0.0007 +vn -0.7633 0.6459 0.0135 +vn -1.0000 -0.0035 -0.0002 +vn -1.0000 -0.0034 0.0003 +vn -0.9693 0.2238 0.1017 +vn 1.0000 -0.0017 -0.0022 +vn -1.0000 -0.0039 -0.0015 +vn -1.0000 -0.0019 -0.0008 +vn -1.0000 0.0002 -0.0028 +vn -1.0000 -0.0012 0.0012 +vn 0.7633 0.6459 0.0135 +vn 1.0000 -0.0020 -0.0013 +vn 1.0000 -0.0017 0.0003 +vn 0.9901 0.1400 -0.0116 +vn 0.9901 0.1401 -0.0111 +vn -0.9901 0.1401 -0.0111 +vn -0.9901 0.1401 -0.0116 +vn 0.6385 0.0097 -0.7696 +vn 0.6425 0.0150 -0.7662 +vn 0.6390 0.0022 -0.7692 +vn -0.7068 0.0066 -0.7074 +vn -0.7028 -0.0044 -0.7114 +vn 0.7066 0.2135 -0.6746 +vn 0.5060 0.8391 -0.1997 +vn -0.5146 0.8533 -0.0838 +vn -0.7041 0.0132 -0.7100 +vn -0.7086 0.0154 -0.7055 +vn -0.7884 0.2333 -0.5692 +vn 0.6241 0.0024 -0.7814 +vn -0.6967 -0.7174 0.0031 +vn 0.6746 -0.6933 0.2534 +vn 0.9999 0.0140 -0.0012 +vn 0.9999 0.0097 0.0052 +vn 1.0000 0.0094 0.0004 +vn 0.6270 -0.7729 -0.0976 +vn 0.6072 -0.7941 -0.0284 +vn 0.9841 -0.1697 -0.0533 +vn -0.0095 -0.9999 0.0105 +vn 0.0095 -0.9999 0.0105 +vn -0.9274 0.0000 -0.3742 +vn 0.9987 -0.0092 -0.0494 +vn -1.0000 -0.0005 -0.0048 +vn -1.0000 -0.0039 0.0029 +vn 1.0000 -0.0047 0.0009 +vn -0.0004 -0.0719 -0.9974 +vn -1.0000 0.0094 0.0004 +vn -0.9999 0.0097 0.0052 +vn -0.9999 0.0140 -0.0012 +vn 0.0000 0.1149 -0.9934 +vn 0.0000 -0.1149 0.9934 +vn 0.9934 -0.0844 0.0771 +vn -0.0007 0.5014 0.8652 +vn -0.9955 -0.0947 0.0000 +vn 0.0026 0.5098 0.8603 +vn 0.0000 -0.9117 -0.4107 +vn 1.0000 -0.0015 -0.0095 +vn 1.0000 -0.0061 -0.0078 +vn 0.9999 0.0036 -0.0095 +vn 1.0000 0.0013 0.0045 +vn -1.0000 -0.0056 0.0033 +vn -1.0000 0.0016 0.0047 +vn -1.0000 -0.0015 0.0006 +vn -1.0000 -0.0013 0.0003 +vn 1.0000 -0.0030 0.0040 +vn 1.0000 -0.0017 -0.0008 +vn 1.0000 -0.0015 -0.0006 +vn 1.0000 -0.0004 0.0051 +vn -1.0000 0.0010 0.0046 +vn -1.0000 -0.0014 0.0008 +vn -1.0000 -0.0017 0.0006 +vn -1.0000 -0.0006 0.0051 +vn 0.0000 0.0127 -0.9999 +vn -0.0012 0.0155 -0.9999 +vn -0.0021 0.0150 -0.9999 +vn 0.0002 0.0112 -0.9999 +vn 0.0000 0.0171 -0.9999 +vn -0.0027 0.0139 -0.9999 +vn 0.0059 0.0010 -1.0000 +vn -0.0059 0.0011 -1.0000 +vn -0.0012 0.0113 -0.9999 +vn 0.0046 0.0133 -0.9999 +vn -0.4342 -0.3822 -0.8157 +vn -0.7060 0.2714 -0.6541 +vn 0.1845 0.9828 0.0000 +vn -0.7060 0.2715 0.6542 +vn 0.8396 0.4308 -0.3307 +vn -0.4343 -0.3822 0.8157 +vn 0.2163 -0.5222 -0.8249 +vn -0.5222 0.2163 -0.8250 +vn -0.2081 -0.4401 -0.8735 +vn -0.2058 -0.4197 0.8840 +vn 0.2910 0.9565 0.0178 +vn 0.7522 -0.6487 0.1156 +vn -0.5222 -0.2163 0.8249 +vn 0.2163 -0.5222 0.8249 +vn -0.1642 0.3964 -0.9033 +vn 0.1653 0.4232 -0.8908 +vn -0.3179 -0.1317 0.9390 +vn -0.1317 0.3179 0.9389 +vn 0.1355 0.3696 0.9193 +vn 0.3179 -0.1317 0.9389 +vn -0.4654 -0.1928 -0.8639 +vn 0.4654 -0.1928 -0.8638 +vn 0.4654 0.1928 -0.8639 +vn -0.4654 0.1928 -0.8638 +vn 0.0359 0.1299 0.9909 +vn -0.0465 0.1529 0.9871 +vn -0.3827 0.9238 -0.0120 +vn -0.8438 -0.5265 0.1041 +vn -0.3820 -0.9223 0.0577 +vn 0.2663 -0.9636 0.0231 +vn 0.2645 0.6280 0.7319 +vn -0.2683 0.6476 0.7132 +vn 0.6907 0.2924 0.6614 +vn -0.6671 0.2763 0.6919 +vn 0.2692 -0.6498 -0.7109 +vn -0.6498 0.2692 -0.7108 +vn 0.7364 0.3285 -0.5914 +vn -0.2692 -0.6498 -0.7108 +vn -0.2936 0.7087 -0.6415 +vn 0.2910 0.6909 -0.6618 +vn 0.6498 -0.2692 -0.7108 +vn -0.6498 -0.2692 -0.7109 +vn 0.0000 0.0589 -0.9983 +vn 0.0000 0.0029 1.0000 +vn 0.2185 0.0412 -0.9750 +vn -0.2098 0.0472 0.9766 +vn -0.2099 0.0472 -0.9766 +vn 0.2184 0.0412 0.9750 +vn 1.0000 -0.0021 -0.0003 +s off +f 65/131/59 67/132/59 68/133/59 +f 68/133/60 69/134/60 70/135/60 +f 70/135/61 71/136/62 72/137/61 +f 74/138/63 76/139/63 73/140/63 +f 71/141/64 69/142/64 78/143/64 +f 76/144/65 80/145/66 81/146/66 +f 78/147/67 83/148/67 82/149/68 +f 77/150/69 65/151/69 83/148/69 +f 84/152/70 86/153/70 87/154/70 +f 89/155/71 82/149/72 83/148/71 +f 91/156/73 93/157/73 90/158/73 +f 95/159/74 91/156/74 94/160/74 +f 97/161/69 83/148/69 65/151/69 +f 98/162/75 88/163/75 99/164/75 +f 100/165/76 102/166/76 103/167/76 +f 105/168/77 90/169/77 104/170/77 +f 104/170/78 107/171/78 108/172/78 +f 112/173/79 110/174/79 109/175/79 +f 115/176/80 116/177/80 117/178/80 +f 98/162/81 118/179/81 81/146/81 +f 119/180/82 120/181/82 124/182/82 +f 84/183/83 125/184/84 120/181/84 +f 121/185/85 126/186/85 76/144/86 +f 87/187/87 125/184/87 84/188/87 +f 73/140/88 86/153/88 74/138/88 +f 127/189/89 84/183/90 107/171/89 +f 128/190/91 107/171/92 106/191/92 +f 81/146/93 129/192/94 98/162/93 +f 98/162/95 79/193/96 82/149/97 +f 73/194/98 76/195/98 126/186/98 +f 94/196/99 96/197/99 97/198/99 +f 68/199/100 131/200/100 65/201/100 +f 91/202/101 130/203/101 94/196/101 +f 133/204/102 95/205/102 132/206/102 +f 132/206/103 134/207/103 131/208/103 +f 135/209/104 92/210/104 133/204/104 +f 131/200/105 97/211/105 65/201/105 +f 70/212/106 132/213/106 68/199/106 +f 90/158/107 135/214/107 72/215/107 +f 134/216/108 94/160/108 97/211/108 +f 70/212/109 135/214/109 133/217/109 +f 136/218/110 137/219/111 138/220/112 +f 102/166/113 140/221/114 103/167/115 +f 141/222/116 111/223/116 112/173/116 +f 142/224/117 111/223/117 136/218/117 +f 144/225/118 109/175/118 143/226/118 +f 145/227/119 144/228/119 143/229/119 +f 147/230/120 146/231/120 145/227/120 +f 142/224/121 115/232/121 114/233/121 +f 100/165/122 148/234/122 147/230/122 +f 150/235/123 137/219/123 141/222/123 +f 151/236/124 153/237/124 154/238/124 +f 155/239/125 157/240/125 156/241/125 +f 159/242/126 112/173/126 144/225/126 +f 115/232/127 138/220/128 152/243/127 +f 146/231/129 159/244/129 144/228/129 +f 103/167/130 155/239/131 148/234/131 +f 148/234/132 156/241/132 146/231/132 +f 116/177/133 152/245/133 151/236/133 +f 161/246/134 157/240/135 158/247/135 +f 158/247/136 163/248/137 161/246/138 +f 160/249/139 164/250/139 157/240/139 +f 139/251/113 162/252/140 140/221/141 +f 138/220/142 149/253/143 167/254/144 +f 164/255/145 141/222/145 159/242/145 +f 152/243/127 167/254/146 153/256/127 +f 156/241/147 164/250/147 159/244/147 +f 140/221/148 158/247/149 155/239/149 +f 168/257/127 170/258/127 171/259/127 +f 165/260/150 173/261/150 172/262/150 +f 169/263/151 176/264/152 170/258/152 +f 153/237/153 177/265/153 154/238/153 +f 150/235/154 175/266/155 149/253/154 +f 162/252/156 178/267/113 163/248/157 +f 149/253/158 169/263/159 167/254/160 +f 164/255/161 172/262/161 150/235/161 +f 167/254/162 168/257/127 153/256/127 +f 170/268/163 179/269/163 180/270/163 +f 182/271/113 184/272/113 181/273/113 +f 185/274/164 176/275/164 173/276/164 +f 186/277/165 165/278/165 160/249/165 +f 163/248/166 187/279/167 161/246/168 +f 161/246/169 186/277/170 160/249/170 +f 177/265/171 171/280/171 188/281/171 +f 173/261/172 175/266/173 172/262/172 +f 178/267/113 181/282/113 163/248/174 +f 105/168/175 100/283/176 147/284/175 +f 99/164/177 114/285/178 118/179/178 +f 147/284/179 130/203/179 105/168/179 +f 145/286/180 96/197/180 130/203/180 +f 96/287/181 109/288/181 89/155/181 +f 88/163/182 142/289/183 99/164/184 +f 189/290/185 118/291/185 113/292/185 +f 89/155/186 110/293/186 88/163/186 +f 104/170/187 101/294/188 100/283/189 +f 193/295/190 173/276/190 174/296/190 +f 171/297/127 180/270/127 194/298/127 +f 186/299/191 193/300/191 174/301/191 +f 181/273/192 190/302/192 187/303/192 +f 187/303/193 191/304/193 186/299/193 +f 188/305/194 194/298/194 195/306/194 +f 196/307/195 183/308/195 182/271/195 +f 188/305/196 192/309/196 196/307/196 +f 108/310/197 198/311/197 101/312/197 +f 199/313/198 201/314/198 117/315/198 +f 202/316/199 182/317/199 178/318/199 +f 177/265/200 196/319/200 202/316/200 +f 166/320/201 202/316/201 178/318/201 +f 154/238/202 202/316/202 203/321/202 +f 204/322/203 139/323/203 102/324/203 +f 234/325/204 584/326/205 583/327/205 +f 205/328/206 166/320/206 139/323/206 +f 151/236/207 203/321/207 205/328/207 +f 199/329/208 204/322/208 102/324/208 +f 197/330/209 206/331/209 198/332/209 +f 197/333/210 108/310/210 119/180/210 +f 87/187/211 73/194/211 120/181/211 +f 492/334/212 354/335/212 349/336/212 +f 206/331/213 208/337/213 200/338/213 +f 200/339/214 209/340/214 201/314/214 +f 198/332/213 200/338/213 199/341/213 +f 189/342/215 210/343/215 123/344/215 +f 113/345/216 201/346/216 210/343/216 +f 212/347/217 214/348/217 211/349/217 +f 207/350/218 214/348/218 215/351/218 +f 206/331/218 211/352/218 207/350/218 +f 123/353/219 211/349/219 124/354/219 +f 210/343/216 209/355/216 216/356/216 +f 210/343/220 212/357/220 123/344/220 +f 189/290/221 123/358/221 122/359/221 +f 213/360/222 215/351/222 214/348/222 +f 217/361/223 219/362/223 215/351/223 +f 216/356/216 218/363/216 217/361/216 +f 216/356/224 213/360/224 212/357/224 +f 208/364/225 221/365/225 209/340/225 +f 207/350/213 219/362/213 208/337/213 +f 221/366/127 224/367/127 222/368/127 +f 218/363/226 225/369/226 219/362/226 +f 208/337/113 225/369/113 220/370/113 +f 209/355/127 222/368/127 218/363/127 +f 226/371/113 228/372/113 229/373/113 +f 220/374/227 223/375/227 221/365/227 +f 220/370/113 227/376/113 226/371/113 +f 222/368/228 227/377/228 225/369/228 +f 231/378/127 233/379/229 230/380/127 +f 224/381/230 228/382/230 227/377/230 +f 223/383/127 230/380/127 224/367/127 +f 226/384/231 231/385/231 223/375/231 +f 229/386/232 232/387/232 231/385/232 +f 229/373/113 235/388/233 234/325/234 +f 230/389/235 235/390/235 228/382/235 +f 584/391/236 233/392/236 581/393/236 +f 582/394/237 234/395/237 583/396/237 +f 581/397/238 232/398/239 582/399/238 +f 236/400/127 238/401/127 239/402/127 +f 238/403/240 241/404/240 239/405/240 +f 240/406/113 243/407/113 241/408/113 +f 242/409/241 236/410/241 243/411/241 +f 241/404/242 245/412/242 239/405/242 +f 247/413/243 249/414/243 246/415/243 +f 239/402/127 247/416/127 236/400/127 +f 241/408/113 246/417/113 244/418/113 +f 236/410/244 246/415/244 243/411/244 +f 249/419/113 252/420/113 250/421/113 +f 244/422/245 253/423/245 245/412/245 +f 244/418/113 249/419/113 250/421/113 +f 245/424/127 248/425/127 247/416/127 +f 251/426/246 255/427/246 252/420/246 +f 248/425/127 256/428/127 257/429/127 +f 248/430/247 251/431/247 249/414/247 +f 250/432/248 256/433/248 253/423/248 +f 258/434/249 260/435/250 254/436/251 +f 257/429/252 261/437/252 258/438/252 +f 251/431/253 258/434/254 254/436/255 +f 252/439/256 261/440/256 256/433/256 +f 263/441/257 259/442/257 262/443/257 +f 261/440/258 263/444/258 262/445/258 +f 254/446/259 263/447/259 255/427/259 +f 258/438/260 262/448/260 259/449/260 +f 117/178/261 204/322/261 199/329/261 +f 79/450/262 265/451/262 71/452/262 +f 129/453/64 127/454/64 128/455/64 +f 80/456/64 85/457/64 127/454/64 +f 75/458/263 86/153/263 85/457/263 +f 72/137/264 128/190/265 106/191/264 +f 82/149/266 79/193/267 78/147/268 +f 264/459/262 267/460/262 265/451/262 +f 71/452/269 268/461/270 269/462/270 +f 79/450/271 270/463/272 271/464/272 +f 128/465/273 273/466/273 129/467/273 +f 266/468/64 275/469/64 267/470/64 +f 273/471/274 266/472/275 264/459/276 +f 272/473/273 274/474/273 273/466/273 +f 265/451/277 275/469/277 272/473/277 +f 277/475/278 279/476/278 276/477/278 +f 71/452/279 277/478/280 128/465/281 +f 265/451/282 276/479/282 268/461/282 +f 128/465/283 276/479/270 272/473/270 +f 271/480/284 282/481/284 280/482/284 +f 79/450/285 280/483/286 264/459/287 +f 264/459/288 283/484/289 273/471/290 +f 129/485/291 283/484/292 270/463/292 +f 284/486/163 282/481/163 281/487/163 +f 271/488/64 284/486/64 281/487/64 +f 283/489/293 284/486/293 270/490/293 +f 280/491/198 285/492/198 283/493/198 +f 286/494/192 279/476/192 278/495/192 +f 268/496/198 279/476/198 287/497/198 +f 268/498/294 286/494/294 269/499/294 +f 269/500/64 278/495/64 277/501/64 +f 194/502/198 180/503/198 184/504/198 +f 289/505/113 291/506/113 288/507/113 +f 293/508/295 295/509/295 292/510/295 +f 294/511/296 297/512/296 295/509/296 +f 296/513/297 299/514/297 297/515/297 +f 298/516/298 301/517/298 299/514/298 +f 300/518/299 303/519/299 301/517/299 +f 302/520/300 305/521/300 303/519/300 +f 298/522/113 296/523/113 304/524/113 +f 304/525/301 307/526/301 305/521/301 +f 306/527/302 292/510/302 307/526/302 +f 309/528/303 311/529/303 308/530/303 +f 311/529/304 312/531/304 313/532/304 +f 313/532/305 314/533/305 315/534/305 +f 314/533/306 317/535/306 315/534/306 +f 317/535/307 309/536/307 308/537/307 +f 318/538/308 310/539/308 309/540/308 +f 310/539/309 320/541/309 312/531/309 +f 312/531/310 321/542/310 314/533/310 +f 321/542/311 316/543/311 314/533/311 +f 316/543/312 318/544/312 309/545/312 +f 323/546/313 319/547/313 318/548/313 +f 324/549/314 320/541/314 319/547/314 +f 320/541/315 326/550/315 321/542/315 +f 326/550/316 322/551/316 321/542/316 +f 322/551/317 323/552/317 318/553/317 +f 328/554/318 324/555/318 323/556/318 +f 329/557/319 325/558/319 324/555/319 +f 330/559/320 326/550/320 325/558/320 +f 331/560/321 327/561/321 326/550/321 +f 327/561/322 328/562/322 323/563/322 +f 328/564/323 334/565/323 329/566/323 +f 329/566/324 335/567/324 330/559/324 +f 335/567/325 331/560/325 330/559/325 +f 331/560/326 337/568/326 332/569/326 +f 337/568/327 328/570/327 332/569/327 +f 333/571/328 339/572/328 334/573/328 +f 339/572/329 335/567/329 334/573/329 +f 340/574/330 336/575/330 335/567/330 +f 336/575/331 342/576/331 337/577/331 +f 342/576/332 333/578/332 337/577/332 +f 338/579/333 311/580/333 339/581/333 +f 311/580/334 340/574/334 339/581/334 +f 313/582/335 341/583/335 340/574/335 +f 341/583/336 317/584/336 342/585/336 +f 317/584/337 338/586/337 342/585/337 +f 496/587/338 345/588/338 495/589/338 +f 492/334/339 348/590/339 491/591/339 +f 499/592/340 344/593/340 343/594/340 +f 499/592/341 354/335/341 503/595/341 +f 495/589/342 344/593/342 500/596/342 +f 351/597/343 353/598/343 350/599/343 +f 505/600/344 348/590/344 347/601/344 +f 496/587/343 347/602/343 346/603/343 +f 356/604/345 358/605/345 355/606/345 +f 360/607/212 362/608/212 359/609/212 +f 364/610/342 365/611/342 363/612/342 +f 350/613/344 367/614/344 366/615/344 +f 359/609/341 356/616/341 368/617/341 +f 368/617/340 355/618/340 364/610/340 +f 363/612/338 352/619/338 351/597/338 +f 366/615/339 361/620/339 360/607/339 +f 370/621/212 372/622/212 369/623/212 +f 356/624/346 369/623/346 357/625/346 +f 367/626/347 370/621/347 361/627/347 +f 353/628/348 374/629/348 375/630/348 +f 355/631/349 376/632/349 365/633/349 +f 361/634/350 369/623/350 362/635/350 +f 353/636/351 373/637/351 367/626/351 +f 365/638/352 374/629/352 352/639/352 +f 377/640/353 379/641/353 380/642/353 +f 376/632/338 383/643/338 374/629/338 +f 357/625/340 378/644/340 358/605/340 +f 369/623/341 384/645/341 357/625/341 +f 373/637/339 371/646/339 370/621/339 +f 358/605/342 377/640/342 376/632/342 +f 386/647/341 388/648/341 385/649/341 +f 371/646/354 386/650/354 372/622/354 +f 382/651/355 390/652/355 391/653/355 +f 383/643/356 380/654/356 392/655/356 +f 384/645/357 394/656/357 378/644/357 +f 379/657/358 394/656/358 395/658/358 +f 382/651/359 389/659/359 371/646/359 +f 383/643/360 390/660/360 381/661/360 +f 397/662/64 399/663/64 396/664/64 +f 391/665/339 400/666/339 389/667/339 +f 392/668/343 397/669/343 390/670/343 +f 379/671/342 403/672/342 380/673/342 +f 389/667/212 387/674/212 386/647/212 +f 390/675/344 396/664/344 391/665/344 +f 380/673/338 401/676/338 392/668/338 +f 385/649/340 402/677/340 379/671/340 +f 405/678/338 407/679/338 404/680/338 +f 403/672/64 409/681/64 401/676/64 +f 388/648/64 411/682/64 402/677/64 +f 388/648/64 404/683/64 410/684/64 +f 400/666/64 399/685/64 405/686/64 +f 397/669/64 409/687/64 398/688/64 +f 403/672/64 411/689/64 408/690/64 +f 400/666/64 404/691/64 387/674/64 +f 417/692/64 407/693/64 414/694/64 +f 398/695/340 412/696/340 399/697/340 +f 408/698/212 414/699/212 409/700/212 +f 410/701/344 416/702/344 411/703/344 +f 404/680/343 417/704/343 410/701/343 +f 399/697/342 406/705/342 405/678/342 +f 409/700/341 413/706/341 398/707/341 +f 411/703/339 415/708/339 408/698/339 +f 426/709/361 428/710/361 375/711/361 +f 425/712/362 427/713/362 418/714/362 +f 426/715/363 431/716/363 430/717/363 +f 432/718/364 434/719/364 435/720/364 +f 436/721/365 435/720/365 437/722/365 +f 430/717/366 434/719/366 433/723/366 +f 438/724/367 440/725/367 429/726/367 +f 436/727/368 439/728/368 438/729/368 +f 419/730/369 427/713/369 426/731/369 +f 420/732/370 433/733/370 421/734/370 +f 423/735/371 438/736/371 424/737/371 +f 419/730/372 430/738/372 420/732/372 +f 421/734/373 432/739/373 422/740/373 +f 424/737/374 429/741/374 425/712/374 +f 429/742/375 428/710/375 427/743/375 +f 422/740/376 436/744/376 423/745/376 +f 439/728/339 442/746/339 440/725/339 +f 440/725/212 443/747/212 428/710/212 +f 435/720/343 445/748/343 437/722/343 +f 431/716/342 447/749/342 434/719/342 +f 437/722/344 441/750/344 439/728/344 +f 434/719/338 444/751/338 435/720/338 +f 445/748/377 448/752/377 449/753/377 +f 446/754/378 451/755/378 447/749/378 +f 443/747/379 452/756/379 453/757/379 +f 441/750/380 452/758/380 442/746/380 +f 445/748/381 454/759/381 441/750/381 +f 443/747/382 455/760/382 381/761/382 +f 446/754/383 455/762/383 450/763/383 +f 444/751/384 451/764/384 448/765/384 +f 455/766/340 457/767/340 450/768/340 +f 458/769/385 460/770/385 461/771/385 +f 451/772/338 463/773/338 448/774/338 +f 448/774/343 464/775/343 449/776/343 +f 450/768/342 462/777/342 451/772/342 +f 452/778/212 465/779/212 453/780/212 +f 454/781/339 458/782/339 452/778/339 +f 449/783/344 459/784/344 454/781/344 +f 453/780/341 456/785/341 455/766/341 +f 461/786/212 468/787/212 466/788/212 +f 459/789/386 469/790/386 460/791/386 +f 465/792/387 470/793/387 456/794/387 +f 457/795/388 470/796/388 471/797/388 +f 462/798/389 473/799/389 463/800/389 +f 463/801/390 469/802/390 464/803/390 +f 462/804/391 471/805/391 472/806/391 +f 458/807/392 466/788/392 465/808/392 +f 474/809/393 476/810/393 477/811/393 +f 460/770/339 467/812/339 461/771/339 +f 469/790/344 478/813/344 460/791/344 +f 466/814/341 480/815/341 470/793/341 +f 470/796/340 481/816/340 471/797/340 +f 472/817/338 474/809/338 473/799/338 +f 473/818/343 479/819/343 469/802/343 +f 471/805/342 475/820/342 472/806/342 +f 483/821/64 485/822/64 476/810/64 +f 479/819/394 477/811/394 485/822/394 +f 481/823/395 476/810/395 475/820/395 +f 468/787/396 483/821/396 482/824/396 +f 478/825/397 483/821/397 467/812/397 +f 479/826/398 484/827/398 478/813/398 +f 480/815/399 482/824/399 487/828/399 +f 480/829/400 486/830/400 481/816/400 +f 431/831/401 383/832/401 446/833/401 +f 428/834/402 382/835/402 373/836/402 +f 373/836/403 375/837/403 428/834/403 +f 382/835/404 443/838/404 381/839/404 +f 381/840/405 446/833/405 383/832/405 +f 375/841/406 374/842/406 431/831/406 +f 393/843/407 395/658/407 394/656/407 +f 393/843/408 490/844/408 488/845/408 +f 384/645/409 489/846/409 393/843/409 +f 386/847/410 489/846/410 372/622/410 +f 385/848/411 395/658/411 488/845/411 +f 385/848/412 490/844/412 386/849/412 +f 494/850/413 360/851/413 493/852/413 +f 497/853/414 363/854/414 351/855/414 +f 501/856/415 368/857/415 364/858/415 +f 504/859/416 368/860/416 502/861/416 +f 506/862/417 366/863/417 494/850/417 +f 498/864/418 364/858/418 363/865/418 +f 493/852/419 359/866/419 504/859/419 +f 506/862/420 351/867/420 350/868/420 +f 496/869/421 508/870/421 505/871/421 +f 507/872/343 506/862/343 508/870/343 +f 503/873/422 509/874/422 510/875/422 +f 510/875/423 493/852/423 504/859/423 +f 500/876/424 512/877/424 495/878/424 +f 511/879/425 498/864/425 512/877/425 +f 491/880/426 508/870/426 513/881/426 +f 508/870/344 494/850/344 513/881/344 +f 499/882/427 510/875/427 514/883/427 +f 499/884/428 511/879/428 500/876/428 +f 495/885/429 507/872/429 496/886/429 +f 512/877/338 497/853/338 507/872/338 +f 491/887/430 509/874/430 492/888/430 +f 513/881/339 493/852/339 509/874/339 +f 504/889/431 516/890/431 510/891/431 +f 516/890/432 514/892/432 510/891/432 +f 518/893/433 501/894/433 511/895/433 +f 519/896/434 502/897/434 501/898/434 +f 522/899/435 524/900/435 521/901/435 +f 502/897/436 515/902/436 504/889/436 +f 514/892/437 518/893/437 511/895/437 +f 526/903/438 528/904/438 525/905/438 +f 516/890/127 525/906/127 528/904/127 +f 527/907/438 529/908/438 530/909/438 +f 517/910/198 530/909/198 518/893/198 +f 516/890/198 527/907/198 517/910/198 +f 526/911/439 532/912/439 531/913/439 +f 518/893/113 529/914/113 519/915/113 +f 522/899/440 534/916/440 523/917/440 +f 535/918/440 533/919/440 522/920/440 +f 515/921/127 534/916/127 525/922/127 +f 520/923/435 538/924/435 537/925/435 +f 533/919/439 539/926/439 540/927/439 +f 519/928/113 536/929/113 535/918/113 +f 524/900/113 532/930/113 542/931/113 +f 521/932/441 539/926/441 543/933/441 +f 543/934/127 544/935/127 538/924/127 +f 541/936/442 531/913/442 532/912/442 +f 523/917/435 541/937/435 524/900/435 +f 543/934/435 522/920/435 521/938/435 +f 538/924/435 535/918/435 543/934/435 +f 541/937/435 520/939/435 537/940/435 +f 542/941/439 533/942/439 540/943/439 +f 536/929/439 544/944/439 539/926/439 +f 532/912/439 534/916/439 542/941/439 +f 544/944/439 526/945/439 531/946/439 +f 546/947/127 548/948/127 545/949/127 +f 549/950/198 550/951/198 551/952/198 +f 553/953/113 555/954/113 552/955/113 +f 556/956/64 557/957/64 558/958/64 +f 553/959/198 560/960/198 561/961/198 +f 546/962/64 563/963/64 564/964/64 +f 546/947/127 565/965/127 547/966/127 +f 553/953/113 566/967/113 554/968/113 +f 568/969/443 570/970/443 567/971/443 +f 572/972/444 574/973/444 571/974/444 +f 575/975/445 565/965/445 564/976/445 +f 578/977/446 561/978/446 577/979/446 +f 576/980/447 568/981/447 565/965/447 +f 572/972/438 567/971/438 573/982/438 +f 569/983/448 575/975/448 570/970/448 +f 571/974/449 578/977/449 577/979/449 +f 578/977/450 573/984/450 566/967/450 +f 568/969/451 560/960/451 579/985/451 +f 560/960/452 572/972/452 561/961/452 +f 573/982/453 563/963/453 580/986/453 +f 563/963/454 567/971/454 564/964/454 +f 580/986/64 554/987/64 566/988/64 +f 557/957/64 556/956/64 580/986/64 +f 579/985/198 547/989/198 565/990/198 +f 550/951/198 549/950/198 579/985/198 +f 572/991/455 577/979/455 561/978/455 +f 565/990/456 568/969/456 579/985/456 +f 567/992/457 575/975/457 564/976/457 +f 566/988/458 573/982/458 580/986/458 +f 562/993/64 546/962/64 545/994/64 +f 559/995/198 553/959/198 552/996/198 +f 537/997/442 544/944/442 531/946/442 +f 521/998/441 542/941/441 540/943/441 +f 90/169/459 106/191/459 104/170/459 +f 119/180/460 124/182/460 197/333/460 +f 122/359/461 118/291/461 189/290/461 +f 113/292/462 118/291/462 114/999/462 +f 198/311/463 108/310/463 197/333/463 +f 124/182/464 121/185/464 123/358/464 +f 123/358/465 121/185/465 122/359/465 +f 89/155/69 97/161/69 96/287/69 +f 65/131/99 66/1000/99 67/132/99 +f 68/133/466 67/132/466 69/134/466 +f 70/135/467 69/134/467 71/136/468 +f 74/138/469 75/1001/469 76/139/469 +f 69/142/64 67/1002/64 78/143/64 +f 67/1002/64 66/1003/64 77/1004/64 +f 78/143/64 67/1002/64 77/1004/64 +f 78/143/64 79/1005/64 71/141/64 +f 76/144/470 75/1006/471 80/145/471 +f 78/147/472 77/150/472 83/148/472 +f 77/150/69 66/1007/69 65/151/69 +f 84/152/473 85/1008/473 86/153/473 +f 89/155/71 88/163/71 82/149/474 +f 91/156/475 92/1009/475 93/157/475 +f 95/159/476 92/1009/476 91/156/476 +f 97/161/69 89/155/69 83/148/69 +f 98/162/477 82/149/478 88/163/477 +f 100/165/76 101/1010/76 102/166/76 +f 105/168/479 91/202/479 90/169/479 +f 104/170/480 106/191/480 107/171/480 +f 112/173/481 111/223/481 110/174/481 +f 117/178/482 113/1011/482 114/1012/482 +f 114/1012/483 115/176/483 117/178/483 +f 98/162/484 99/164/484 118/179/484 +f 119/1013/113 108/172/113 120/181/113 +f 108/172/485 107/171/485 120/181/485 +f 107/171/486 84/183/487 120/181/486 +f 76/144/488 81/146/489 121/185/489 +f 81/146/490 118/179/490 121/185/490 +f 118/179/127 122/1014/127 121/185/127 +f 73/140/88 87/154/88 86/153/88 +f 127/189/491 85/1015/491 84/183/492 +f 128/190/493 127/189/494 107/171/494 +f 81/146/495 80/145/495 129/192/496 +f 98/162/497 129/192/498 79/193/499 +f 94/196/99 130/203/99 96/197/99 +f 68/199/500 132/213/500 131/200/500 +f 91/202/101 105/168/101 130/203/101 +f 133/204/102 92/210/102 95/205/102 +f 132/206/501 95/205/501 134/207/501 +f 135/209/502 93/1016/502 92/210/502 +f 131/200/105 134/216/105 97/211/105 +f 70/212/503 133/217/503 132/213/503 +f 90/158/504 93/157/504 135/214/504 +f 134/216/505 95/159/505 94/160/505 +f 70/212/506 72/215/506 135/214/506 +f 136/218/507 111/223/508 137/219/508 +f 102/166/113 139/251/113 140/221/509 +f 141/222/510 137/219/510 111/223/510 +f 142/224/511 110/174/511 111/223/511 +f 144/225/512 112/173/512 109/175/512 +f 145/227/513 146/231/513 144/228/513 +f 147/230/514 148/234/514 146/231/514 +f 142/224/121 136/218/121 115/232/121 +f 100/165/515 103/167/515 148/234/515 +f 150/235/516 149/253/516 137/219/516 +f 151/236/124 152/245/124 153/237/124 +f 155/239/517 158/247/517 157/240/517 +f 159/242/518 141/222/518 112/173/518 +f 115/232/127 136/218/519 138/220/520 +f 146/231/521 156/241/521 159/244/521 +f 103/167/522 140/221/523 155/239/524 +f 148/234/525 155/239/525 156/241/525 +f 151/236/526 205/328/526 204/322/526 +f 116/177/527 115/176/527 152/245/527 +f 151/236/526 204/322/526 116/177/526 +f 161/246/528 160/249/135 157/240/135 +f 158/247/136 162/252/529 163/248/530 +f 160/249/139 165/278/139 164/250/139 +f 139/251/113 166/1017/113 162/252/531 +f 138/220/532 137/219/533 149/253/533 +f 164/255/534 150/235/534 141/222/534 +f 152/243/127 138/220/535 167/254/536 +f 156/241/537 157/240/537 164/250/537 +f 140/221/538 162/252/539 158/247/540 +f 168/257/127 169/263/541 170/258/127 +f 165/260/542 174/1018/542 173/261/542 +f 169/263/162 175/266/543 176/264/544 +f 153/237/153 168/1019/153 177/265/153 +f 150/235/154 172/262/154 175/266/545 +f 162/252/546 166/1017/113 178/267/113 +f 149/253/158 175/266/547 169/263/548 +f 164/255/161 165/260/161 172/262/161 +f 167/254/549 169/263/550 168/257/127 +f 170/268/163 176/275/163 179/269/163 +f 182/271/113 183/308/113 184/272/113 +f 185/274/164 179/269/164 176/275/164 +f 186/277/551 174/1020/551 165/278/551 +f 163/248/552 181/282/553 187/279/553 +f 161/246/554 187/279/555 186/277/555 +f 177/265/171 168/1019/171 171/280/171 +f 173/261/556 176/264/556 175/266/557 +f 178/267/113 182/1021/113 181/282/113 +f 105/168/558 104/170/559 100/283/560 +f 99/164/561 142/289/562 114/285/178 +f 147/284/563 145/286/563 130/203/563 +f 145/286/564 143/1022/564 96/197/564 +f 96/287/565 143/1023/565 109/288/565 +f 88/163/566 110/293/566 142/289/567 +f 89/155/568 109/288/568 110/293/568 +f 104/170/569 108/172/188 101/294/188 +f 193/295/190 185/274/190 173/276/190 +f 171/297/127 170/268/127 180/270/127 +f 186/299/191 191/304/191 193/300/191 +f 181/273/192 184/272/192 190/302/192 +f 187/303/193 190/302/193 191/304/193 +f 188/305/570 171/297/570 194/298/570 +f 196/307/195 192/309/195 183/308/195 +f 188/305/196 195/306/196 192/309/196 +f 199/313/198 200/339/198 201/314/198 +f 202/316/199 196/319/199 182/317/199 +f 177/265/200 188/281/200 196/319/200 +f 166/320/201 203/321/201 202/316/201 +f 154/238/202 177/265/202 202/316/202 +f 204/322/571 205/328/571 139/323/571 +f 234/325/572 235/388/573 584/326/574 +f 205/328/206 203/321/206 166/320/206 +f 151/236/207 154/238/207 203/321/207 +f 102/324/575 101/1024/575 199/329/575 +f 101/1024/576 198/1025/576 199/329/576 +f 197/330/577 124/1026/577 206/331/577 +f 126/186/578 121/185/578 73/194/578 +f 121/185/211 120/181/211 73/194/211 +f 120/181/579 125/184/579 87/187/579 +f 492/334/212 503/595/212 354/335/212 +f 206/331/213 207/350/213 208/337/213 +f 200/339/214 208/364/214 209/340/214 +f 198/332/213 206/331/213 200/338/213 +f 189/342/580 113/345/580 210/343/580 +f 113/345/216 117/1027/216 201/346/216 +f 212/347/217 213/360/217 214/348/217 +f 207/350/218 211/352/218 214/348/218 +f 206/331/581 124/1026/581 211/352/581 +f 123/353/219 212/347/219 211/349/219 +f 210/343/216 201/346/216 209/355/216 +f 210/343/224 216/356/224 212/357/224 +f 213/360/222 217/361/222 215/351/222 +f 217/361/223 218/363/223 219/362/223 +f 216/356/216 209/355/216 218/363/216 +f 216/356/224 217/361/224 213/360/224 +f 208/364/225 220/374/225 221/365/225 +f 207/350/213 215/351/213 219/362/213 +f 221/366/127 223/383/127 224/367/127 +f 218/363/226 222/368/226 225/369/226 +f 208/337/113 219/362/113 225/369/113 +f 209/355/127 221/366/127 222/368/127 +f 226/371/113 227/376/113 228/372/113 +f 220/374/227 226/384/227 223/375/227 +f 220/370/113 225/369/113 227/376/113 +f 222/368/228 224/381/228 227/377/228 +f 231/378/127 232/398/582 233/379/583 +f 224/381/230 230/389/230 228/382/230 +f 223/383/127 231/378/127 230/380/127 +f 226/384/231 229/386/231 231/385/231 +f 229/386/232 234/395/232 232/387/232 +f 229/373/113 228/372/113 235/388/584 +f 230/389/235 233/392/235 235/390/235 +f 584/391/236 235/390/585 233/392/236 +f 582/394/237 232/387/237 234/395/237 +f 581/397/586 233/379/587 232/398/588 +f 236/400/127 237/1028/127 238/401/127 +f 238/403/589 240/1029/589 241/404/589 +f 240/406/113 242/1030/113 243/407/113 +f 242/409/590 237/1031/590 236/410/590 +f 241/404/242 244/422/242 245/412/242 +f 247/413/243 248/430/243 249/414/243 +f 239/402/127 245/424/127 247/416/127 +f 241/408/113 243/407/113 246/417/113 +f 236/410/244 247/413/244 246/415/244 +f 249/419/113 251/426/113 252/420/113 +f 244/422/245 250/432/245 253/423/245 +f 244/418/113 246/417/113 249/419/113 +f 245/424/127 253/1032/127 248/425/127 +f 251/426/591 254/446/591 255/427/591 +f 248/425/127 253/1032/127 256/428/127 +f 248/430/247 257/1033/247 251/431/247 +f 250/432/248 252/439/248 256/433/248 +f 258/434/592 259/442/250 260/435/250 +f 257/429/593 256/428/593 261/437/593 +f 251/431/253 257/1033/253 258/434/594 +f 252/439/256 255/1034/256 261/440/256 +f 263/441/257 260/435/257 259/442/257 +f 261/440/595 255/1034/595 263/444/595 +f 254/446/259 260/1035/259 263/447/259 +f 258/438/260 261/437/260 262/448/260 +f 117/178/261 116/177/261 204/322/261 +f 79/450/262 264/459/262 265/451/262 +f 129/453/64 80/456/64 127/454/64 +f 80/456/64 75/458/64 85/457/64 +f 75/458/263 74/138/263 86/153/263 +f 72/137/596 71/136/597 128/190/598 +f 264/459/262 266/472/262 267/460/262 +f 71/452/599 265/451/270 268/461/270 +f 79/450/600 129/485/601 270/463/602 +f 128/465/273 272/473/273 273/466/273 +f 266/468/64 274/474/64 275/469/64 +f 273/471/603 274/1036/275 266/472/275 +f 272/473/273 275/469/273 274/474/273 +f 265/451/277 267/460/277 275/469/277 +f 277/475/278 278/495/278 279/476/278 +f 71/452/604 269/462/605 277/478/605 +f 265/451/606 272/473/606 276/479/606 +f 128/465/607 277/478/270 276/479/270 +f 271/480/284 281/487/284 282/481/284 +f 79/450/608 271/464/286 280/483/286 +f 264/459/609 280/483/610 283/484/610 +f 129/485/611 273/471/490 283/484/292 +f 284/486/163 285/492/163 282/481/163 +f 271/488/64 270/1037/64 284/486/64 +f 283/489/293 285/492/293 284/486/293 +f 280/491/198 282/481/198 285/492/198 +f 286/494/192 287/497/192 279/476/192 +f 268/496/198 276/1038/198 279/476/198 +f 268/498/294 287/497/294 286/494/294 +f 269/500/64 286/494/64 278/495/64 +f 180/503/612 179/1039/613 184/504/612 +f 179/1039/614 185/1040/615 190/1041/616 +f 184/504/612 179/1039/617 190/1041/612 +f 185/1040/618 193/1042/198 191/1043/619 +f 191/1043/620 190/1041/616 185/1040/621 +f 184/504/198 183/1044/198 194/502/198 +f 183/1044/198 192/1045/198 195/1046/198 +f 194/502/198 183/1044/198 195/1046/198 +f 289/505/113 290/1047/113 291/506/113 +f 293/508/295 294/511/295 295/509/295 +f 294/511/296 296/1048/296 297/512/296 +f 296/513/297 298/516/297 299/514/297 +f 298/516/298 300/518/298 301/517/298 +f 300/518/299 302/520/299 303/519/299 +f 302/520/300 304/525/300 305/521/300 +f 296/523/113 294/1049/113 304/524/113 +f 294/1049/113 293/1050/113 304/524/113 +f 293/1050/113 306/1051/113 304/524/113 +f 304/524/113 302/1052/113 300/1053/113 +f 300/1053/113 298/522/113 304/524/113 +f 304/525/301 306/527/301 307/526/301 +f 306/527/302 293/508/302 292/510/302 +f 309/528/303 310/1054/303 311/529/303 +f 311/529/304 310/1054/304 312/531/304 +f 313/532/305 312/531/305 314/533/305 +f 314/533/306 316/1055/306 317/535/306 +f 317/535/307 316/1055/307 309/536/307 +f 318/538/308 319/1056/308 310/539/308 +f 310/539/309 319/1056/309 320/541/309 +f 312/531/310 320/541/310 321/542/310 +f 321/542/311 322/1057/311 316/543/311 +f 316/543/622 322/1057/622 318/544/622 +f 323/546/313 324/549/313 319/547/313 +f 324/549/314 325/558/314 320/541/314 +f 320/541/315 325/558/315 326/550/315 +f 326/550/316 327/1058/316 322/551/316 +f 322/551/623 327/1058/623 323/552/623 +f 328/554/624 329/557/624 324/555/624 +f 329/557/319 330/559/319 325/558/319 +f 330/559/320 331/560/320 326/550/320 +f 331/560/321 332/1059/321 327/561/321 +f 327/561/322 332/1059/322 328/562/322 +f 328/564/323 333/1060/323 334/565/323 +f 329/566/324 334/565/324 335/567/324 +f 335/567/325 336/575/325 331/560/325 +f 331/560/326 336/575/326 337/568/326 +f 337/568/625 333/1061/625 328/570/625 +f 333/571/328 338/1062/328 339/572/328 +f 339/572/626 340/574/626 335/567/626 +f 340/574/330 341/583/330 336/575/330 +f 336/575/331 341/583/331 342/576/331 +f 342/576/627 338/1063/627 333/578/627 +f 338/579/333 308/1064/333 311/580/333 +f 311/580/334 313/582/334 340/574/334 +f 313/582/335 315/1065/335 341/583/335 +f 341/583/336 315/1065/336 317/584/336 +f 317/584/337 308/1066/337 338/586/337 +f 496/587/338 346/603/338 345/588/338 +f 492/334/339 349/336/339 348/590/339 +f 499/592/340 500/596/340 344/593/340 +f 499/592/341 343/594/341 354/335/341 +f 495/589/342 345/588/342 344/593/342 +f 351/597/343 352/619/343 353/598/343 +f 505/600/344 491/591/344 348/590/344 +f 496/587/343 505/1067/343 347/602/343 +f 356/604/345 357/625/345 358/605/345 +f 360/607/212 361/620/212 362/608/212 +f 364/610/342 355/618/342 365/611/342 +f 350/613/344 353/1068/344 367/614/344 +f 359/609/341 362/608/341 356/616/341 +f 368/617/340 356/616/340 355/618/340 +f 363/612/338 365/611/338 352/619/338 +f 366/615/339 367/614/339 361/620/339 +f 370/621/212 371/646/212 372/622/212 +f 356/624/346 362/1069/346 369/623/346 +f 367/626/347 373/637/347 370/621/347 +f 353/628/628 352/639/628 374/629/628 +f 355/631/349 358/605/349 376/632/349 +f 361/634/629 370/621/629 369/623/629 +f 353/636/630 375/1070/630 373/637/630 +f 365/638/352 376/632/352 374/629/352 +f 377/640/353 378/644/353 379/641/353 +f 376/632/338 377/640/338 383/643/338 +f 357/625/340 384/645/340 378/644/340 +f 369/623/341 372/622/341 384/645/341 +f 373/637/339 382/651/339 371/646/339 +f 358/605/342 378/644/342 377/640/342 +f 386/647/341 387/674/341 388/648/341 +f 371/646/354 389/1071/354 386/650/354 +f 382/651/631 381/1072/631 390/652/631 +f 383/643/356 377/640/356 380/654/356 +f 384/645/632 393/843/632 394/656/632 +f 379/657/633 378/644/633 394/656/633 +f 382/651/634 391/653/634 389/659/634 +f 383/643/635 392/655/635 390/660/635 +f 397/662/64 398/1073/64 399/663/64 +f 391/665/339 396/664/339 400/666/339 +f 392/668/343 401/676/343 397/669/343 +f 379/671/342 402/677/342 403/672/342 +f 389/667/212 400/666/212 387/674/212 +f 390/675/344 397/662/344 396/664/344 +f 380/673/338 403/672/338 401/676/338 +f 385/649/340 388/648/340 402/677/340 +f 405/678/338 406/705/338 407/679/338 +f 403/672/64 408/1074/64 409/681/64 +f 388/648/64 410/1075/64 411/682/64 +f 388/648/64 387/674/64 404/683/64 +f 400/666/64 396/664/64 399/685/64 +f 397/669/64 401/676/64 409/687/64 +f 403/672/64 402/677/64 411/689/64 +f 400/666/64 405/1076/64 404/691/64 +f 407/693/64 406/1077/64 412/1078/64 +f 412/1078/64 413/1079/64 407/693/64 +f 413/1079/64 414/694/64 407/693/64 +f 414/694/64 415/1080/64 416/1081/64 +f 416/1081/64 417/692/64 414/694/64 +f 398/695/340 413/1082/340 412/696/340 +f 408/698/212 415/708/212 414/699/212 +f 410/701/344 417/704/344 416/702/344 +f 404/680/343 407/679/343 417/704/343 +f 399/697/342 412/696/342 406/705/342 +f 409/700/341 414/699/341 413/706/341 +f 411/703/339 416/702/339 415/708/339 +f 426/709/636 427/743/636 428/710/636 +f 425/712/362 429/741/362 427/713/362 +f 426/715/637 375/1083/637 431/716/637 +f 432/718/364 433/1084/364 434/719/364 +f 436/721/365 432/1085/365 435/720/365 +f 430/717/366 431/716/366 434/719/366 +f 438/724/367 439/728/367 440/725/367 +f 436/727/368 437/722/368 439/728/368 +f 419/730/369 418/714/369 427/713/369 +f 420/732/370 430/738/370 433/733/370 +f 423/735/371 436/1086/371 438/736/371 +f 419/730/372 426/731/372 430/738/372 +f 421/734/373 433/733/373 432/739/373 +f 424/737/374 438/736/374 429/741/374 +f 429/742/375 440/725/375 428/710/375 +f 422/740/376 432/739/376 436/744/376 +f 439/728/339 441/750/339 442/746/339 +f 440/725/212 442/746/212 443/747/212 +f 435/720/343 444/751/343 445/748/343 +f 431/716/342 446/754/342 447/749/342 +f 437/722/344 445/748/344 441/750/344 +f 434/719/338 447/749/338 444/751/338 +f 445/748/377 444/751/377 448/752/377 +f 446/754/378 450/763/378 451/755/378 +f 443/747/379 442/746/379 452/756/379 +f 441/750/638 454/1087/638 452/758/638 +f 445/748/381 449/1088/381 454/759/381 +f 443/747/639 453/757/639 455/760/639 +f 446/754/640 381/1089/640 455/762/640 +f 444/751/641 447/749/641 451/764/641 +f 455/766/340 456/785/340 457/767/340 +f 458/769/642 459/1090/642 460/770/642 +f 451/772/338 462/777/338 463/773/338 +f 448/774/343 463/773/343 464/775/343 +f 450/768/342 457/767/342 462/777/342 +f 452/778/212 458/782/212 465/779/212 +f 454/781/339 459/784/339 458/782/339 +f 449/783/344 464/1091/344 459/784/344 +f 453/780/341 465/779/341 456/785/341 +f 461/786/212 467/1092/212 468/787/212 +f 459/789/386 464/1093/386 469/790/386 +f 465/792/387 466/814/387 470/793/387 +f 457/795/388 456/1094/388 470/796/388 +f 462/798/643 472/817/643 473/799/643 +f 463/801/390 473/818/390 469/802/390 +f 462/804/644 457/1095/644 471/805/644 +f 458/807/645 461/786/645 466/788/645 +f 474/809/393 475/1096/393 476/810/393 +f 460/770/339 478/825/339 467/812/339 +f 469/790/344 479/826/344 478/813/344 +f 466/814/341 468/1097/341 480/815/341 +f 470/796/340 480/829/340 481/816/340 +f 472/817/338 475/1096/338 474/809/338 +f 473/818/343 474/1098/343 479/819/343 +f 471/805/342 481/823/342 475/820/342 +f 487/828/64 482/824/64 483/821/64 +f 483/821/64 484/827/64 485/822/64 +f 485/822/64 477/811/64 476/810/64 +f 476/810/64 486/830/64 487/828/64 +f 487/828/64 483/821/64 476/810/64 +f 479/819/394 474/1098/394 477/811/394 +f 481/823/395 486/830/395 476/810/395 +f 468/787/396 467/1092/396 483/821/396 +f 478/825/397 484/827/397 483/821/397 +f 479/826/398 485/822/398 484/827/398 +f 480/815/399 468/1097/399 482/824/399 +f 480/829/400 487/828/400 486/830/400 +f 431/831/401 374/842/401 383/832/401 +f 428/834/402 443/838/402 382/835/402 +f 393/843/646 488/845/646 395/658/646 +f 393/843/647 489/846/647 490/844/647 +f 384/645/648 372/622/648 489/846/648 +f 386/847/649 490/844/649 489/846/649 +f 385/848/650 379/1099/650 395/658/650 +f 385/848/651 488/845/651 490/844/651 +f 494/850/413 366/1100/413 360/851/413 +f 497/853/414 498/864/414 363/854/414 +f 501/856/652 502/1101/652 368/857/652 +f 504/859/653 359/866/653 368/860/653 +f 506/862/417 350/1102/417 366/863/417 +f 498/864/654 501/856/654 364/858/654 +f 493/852/655 360/1103/655 359/866/655 +f 506/862/420 497/853/420 351/867/420 +f 496/869/656 507/872/656 508/870/656 +f 507/872/343 497/853/343 506/862/343 +f 503/873/657 492/1104/657 509/874/657 +f 510/875/423 509/874/423 493/852/423 +f 500/876/658 511/879/658 512/877/658 +f 511/879/425 501/856/425 498/864/425 +f 491/880/659 505/1105/659 508/870/659 +f 508/870/344 506/862/344 494/850/344 +f 499/882/660 503/873/660 510/875/660 +f 499/884/661 514/1106/661 511/879/661 +f 495/885/662 512/877/662 507/872/662 +f 512/877/338 498/864/338 497/853/338 +f 491/887/663 513/881/663 509/874/663 +f 513/881/339 494/850/339 493/852/339 +f 504/889/431 515/902/431 516/890/431 +f 516/890/664 517/910/664 514/892/664 +f 518/893/433 519/915/433 501/894/433 +f 519/896/665 520/1107/665 502/897/665 +f 522/899/435 523/917/435 524/900/435 +f 502/897/665 520/1107/665 515/902/665 +f 514/892/664 517/910/664 518/893/664 +f 526/903/438 527/907/438 528/904/438 +f 516/890/127 515/902/127 525/906/127 +f 527/907/438 526/903/438 529/908/438 +f 517/910/198 527/907/198 530/909/198 +f 516/890/198 528/904/198 527/907/198 +f 526/911/439 525/922/439 532/912/439 +f 518/893/113 530/909/113 529/914/113 +f 522/899/440 533/942/440 534/916/440 +f 535/918/440 536/929/440 533/919/440 +f 515/921/127 523/917/127 534/916/127 +f 520/923/435 519/928/435 538/924/435 +f 533/919/439 536/929/439 539/926/439 +f 519/928/113 529/1108/113 536/929/113 +f 524/900/113 541/937/113 532/930/113 +f 521/932/441 540/927/441 539/926/441 +f 543/934/127 539/1109/127 544/935/127 +f 541/936/442 537/1110/442 531/913/442 +f 523/917/435 515/921/435 541/937/435 +f 543/934/435 535/918/435 522/920/435 +f 538/924/435 519/928/435 535/918/435 +f 541/937/435 515/921/435 520/939/435 +f 542/941/439 534/916/439 533/942/439 +f 536/929/439 529/1108/439 544/944/439 +f 532/912/439 525/922/439 534/916/439 +f 544/944/439 529/1108/439 526/945/439 +f 546/947/127 547/966/127 548/948/127 +f 551/952/198 548/1111/198 549/950/198 +f 548/1111/198 547/989/198 549/950/198 +f 553/953/113 554/968/113 555/954/113 +f 558/958/64 555/1112/64 556/956/64 +f 555/1112/64 554/987/64 556/956/64 +f 553/959/198 559/995/198 560/960/198 +f 546/962/64 562/993/64 563/963/64 +f 546/947/127 564/976/127 565/965/127 +f 553/953/113 561/978/113 566/967/113 +f 568/969/443 569/983/443 570/970/443 +f 572/972/444 573/982/444 574/973/444 +f 575/975/445 576/980/445 565/965/445 +f 578/977/446 566/967/446 561/978/446 +f 576/980/666 569/1113/666 568/981/666 +f 572/972/438 568/969/438 567/971/438 +f 569/983/448 576/980/448 575/975/448 +f 571/974/449 574/973/449 578/977/449 +f 578/977/667 574/1114/667 573/984/667 +f 568/969/451 572/972/451 560/960/451 +f 573/982/453 567/971/453 563/963/453 +f 580/986/64 556/956/64 554/987/64 +f 580/986/64 563/963/64 557/957/64 +f 563/963/64 562/993/64 557/957/64 +f 579/985/198 549/950/198 547/989/198 +f 579/985/198 560/960/198 550/951/198 +f 560/960/198 559/995/198 550/951/198 +f 572/991/668 571/1115/668 577/979/668 +f 567/992/669 570/1116/669 575/975/669 +f 545/994/64 558/958/64 562/993/64 +f 558/958/64 557/957/64 562/993/64 +f 552/996/198 551/952/198 559/995/198 +f 551/952/198 550/951/198 559/995/198 +f 537/997/442 538/1117/442 544/944/442 +f 521/998/441 524/1118/441 542/941/441 +f 90/169/670 72/137/670 106/191/670 +f 124/182/464 120/181/464 121/185/464 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 647cf0296..297205dcb 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -180,6 +180,8 @@ "weapon.hicalShot": {"category": "player", "sounds": [{"name": "weapon/hicalShot", "stream": false}]}, "weapon.coilgunReload": {"category": "player", "sounds": [{"name": "weapon/coilgunReload", "stream": false}]}, "weapon.coilgunShoot": {"category": "player", "sounds": [{"name": "weapon/coilgunShoot", "stream": false}]}, + "weapon.glReload": {"category": "player", "sounds": [{"name": "weapon/glReload", "stream": false}]}, + "weapon.glShoot": {"category": "player", "sounds": [{"name": "weapon/glShoot", "stream": false}]}, "weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/glReload.ogg b/src/main/resources/assets/hbm/sounds/weapon/glReload.ogg new file mode 100644 index 0000000000000000000000000000000000000000..36de2dae710a5f913b2879bb737f90bfdcbd9b0a GIT binary patch literal 10791 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 F^j~g61Csy% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/weapon/glShoot.ogg b/src/main/resources/assets/hbm/sounds/weapon/glShoot.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f75be2fe68ee72ee2bf32b82c08993bcb73c57cb GIT binary patch literal 18670 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 N0K*Qr%^M8(_yC~i%S-?O literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/congolake.png b/src/main/resources/assets/hbm/textures/models/weapons/congolake.png index dd3c9cd71c018fbcbae3a1710f1cb525d93e3166..04b2d2e8b8c62d1c827d84d33313cd00071f90ea 100644 GIT binary patch delta 3497 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 X5UFE|b|*r100000NkvXXu0mjfNi450 delta 3287 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 VuXSmAPHX@G002ovPDHLkV1g!dUv2;Z From 27648ca7a6c282b237397c15e3e1deed718df90e Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 12 Aug 2023 22:46:59 +0200 Subject: [PATCH 14/15] lanterns, heating oven connection fix --- src/main/java/com/hbm/blocks/ModBlocks.java | 7 + .../com/hbm/blocks/generic/BlockLantern.java | 31 ++++ .../blocks/generic/BlockLanternBehemoth.java | 59 ++++++++ .../com/hbm/blocks/machine/HeaterOven.java | 2 +- .../hbm/handler/guncfg/GunGrenadeFactory.java | 2 +- .../com/hbm/items/special/ItemKitNBT.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 2 + .../java/com/hbm/main/ResourceManager.java | 7 + .../hbm/render/tileentity/RenderLantern.java | 40 +++++ .../tileentity/RenderLanternBehemoth.java | 53 +++++++ .../java/com/hbm/tileentity/TileMappings.java | 2 + .../tileentity/deco/TileEntityLantern.java | 34 +++++ .../deco/TileEntityLanternBehemoth.java | 138 ++++++++++++++++++ src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 6 +- src/main/resources/assets/hbm/sounds.json | 4 + .../hbm/textures/models/trinkets/lantern.png | Bin 288 -> 959 bytes .../models/trinkets/lantern_rusty.png | Bin 0 -> 1838 bytes 18 files changed, 385 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/generic/BlockLantern.java create mode 100644 src/main/java/com/hbm/blocks/generic/BlockLanternBehemoth.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderLantern.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderLanternBehemoth.java create mode 100644 src/main/java/com/hbm/tileentity/deco/TileEntityLantern.java create mode 100644 src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java create mode 100644 src/main/resources/assets/hbm/textures/models/trinkets/lantern_rusty.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 5ccbb3267..7896435cf 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -336,6 +336,9 @@ public class ModBlocks { public static Block lamp_uv_on; public static Block lamp_demon; + public static Block lantern; + public static Block lantern_behemoth; + public static Block reinforced_stone; public static Block concrete_smooth; public static Block concrete_colored; @@ -1546,6 +1549,8 @@ public class ModBlocks { lamp_uv_off = new UVLamp(false).setBlockName("lamp_uv_off").setCreativeTab(MainRegistry.blockTab); lamp_uv_on = new UVLamp(true).setBlockName("lamp_uv_on").setCreativeTab(null); lamp_demon = new DemonLamp().setBlockName("lamp_demon").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_demon"); + lantern = new BlockLantern().setBlockName("lantern").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lantern"); + lantern_behemoth = new BlockLanternBehemoth().setBlockName("lantern_behemoth").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lantern"); reinforced_stone = new BlockGeneric(Material.rock).setBlockName("reinforced_stone").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(3000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_stone"); concrete_smooth = new BlockRadResistant(Material.rock).setBlockName("concrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); @@ -2697,6 +2702,8 @@ public class ModBlocks { GameRegistry.registerBlock(lamp_uv_off, lamp_uv_off.getUnlocalizedName()); GameRegistry.registerBlock(lamp_uv_on, lamp_uv_on.getUnlocalizedName()); GameRegistry.registerBlock(lamp_demon, lamp_demon.getUnlocalizedName()); + GameRegistry.registerBlock(lantern, lantern.getUnlocalizedName()); + GameRegistry.registerBlock(lantern_behemoth, lantern_behemoth.getUnlocalizedName()); //Reinforced Blocks GameRegistry.registerBlock(asphalt, ItemBlockBlastInfo.class, asphalt.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockLantern.java b/src/main/java/com/hbm/blocks/generic/BlockLantern.java new file mode 100644 index 000000000..7b725afc9 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockLantern.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.deco.TileEntityLantern; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BlockLantern extends BlockDummyable { + + public BlockLantern() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityLantern(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {4, 0, 0, 0, 0, 0}; + } + + @Override + public int getOffset() { + return 0; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockLanternBehemoth.java b/src/main/java/com/hbm/blocks/generic/BlockLanternBehemoth.java new file mode 100644 index 000000000..b90c1ad44 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockLanternBehemoth.java @@ -0,0 +1,59 @@ +package com.hbm.blocks.generic; + +import java.util.Random; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; +import com.hbm.tileentity.IRepairable; +import com.hbm.tileentity.deco.TileEntityLanternBehemoth; + +import api.hbm.block.IToolable; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class BlockLanternBehemoth extends BlockDummyable implements IToolable, ILookOverlay { + + public BlockLanternBehemoth() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityLanternBehemoth(); + return null; + } + + @Override + public Item getItemDropped(int i, Random rand, int j) { + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {4, 0, 0, 0, 0, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + + if(tool != ToolType.TORCH) return false; + return IRepairable.tryRepairMultiblock(world, x, y, z, this, player); + } + + @Override + @SideOnly(Side.CLIENT) + public void printHook(Pre event, World world, int x, int y, int z) { + IRepairable.addGenericOverlay(event, world, x, y, z, this); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/HeaterOven.java b/src/main/java/com/hbm/blocks/machine/HeaterOven.java index 1aa60151b..a7373310a 100644 --- a/src/main/java/com/hbm/blocks/machine/HeaterOven.java +++ b/src/main/java/com/hbm/blocks/machine/HeaterOven.java @@ -23,7 +23,7 @@ public class HeaterOven extends BlockDummyable implements ITooltipProvider { public TileEntity createNewTileEntity(World world, int meta) { if(meta >= 12) return new TileEntityHeaterOven(); - return new TileEntityProxyCombo(true, false, false); + return new TileEntityProxyCombo().inventory().fluid(); } @Override diff --git a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java index 76a4bfe8c..092b7fd5a 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java @@ -282,7 +282,7 @@ public class GunGrenadeFactory { public static BulletConfiguration getGrenadeLeadbursterConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); + BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.LEADBURSTER)); bullet.spread = 0.0F; diff --git a/src/main/java/com/hbm/items/special/ItemKitNBT.java b/src/main/java/com/hbm/items/special/ItemKitNBT.java index e310c04de..f7248759c 100644 --- a/src/main/java/com/hbm/items/special/ItemKitNBT.java +++ b/src/main/java/com/hbm/items/special/ItemKitNBT.java @@ -62,7 +62,7 @@ public class ItemKitNBT extends Item { list.add("Contains:"); for(ItemStack item : stacks) { - list.add("-" + item.getDisplayName()); + list.add("-" + item.getDisplayName() + (item.stackSize > 1 ? (" x" + item.stackSize) : "")); } } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 906b81b3c..6ae85aebc 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -169,6 +169,8 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBobble.class, new RenderBobble()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySnowglobe.class, new RenderSnowglobe()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEmitter.class, new RenderEmitter()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLantern.class, new RenderLantern()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLanternBehemoth.class, new RenderLanternBehemoth()); //bombs ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeGadget.class, new RenderNukeGadget()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeBoy.class, new RenderNukeBoy()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 7429142fa..a6d11780e 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -306,6 +306,9 @@ public class ResourceManager { public static Animation transition_seal_anim; public static final WavefrontObjDisplayList fire_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/fire_door.obj")).asDisplayList(); + //Lantern + public static final IModelCustom lantern = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/trinkets/lantern.obj")); + //Tesla Coil public static final IModelCustom tesla = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/tesla.obj")); public static final IModelCustom teslacrab = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mobs/teslacrab.obj")); @@ -664,6 +667,10 @@ public class ResourceManager { public static final ResourceLocation transition_seal_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/transition_seal.png"); public static final ResourceLocation fire_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/fire_door.png"); + //Lantern + public static final ResourceLocation lantern_tex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/lantern.png"); + public static final ResourceLocation lantern_rusty_tex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/lantern_rusty.png"); + //Tesla Coil public static final ResourceLocation tesla_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tesla.png"); public static final ResourceLocation teslacrab_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/teslacrab.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderLantern.java b/src/main/java/com/hbm/render/tileentity/RenderLantern.java new file mode 100644 index 000000000..15ddc8637 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderLantern.java @@ -0,0 +1,40 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +public class RenderLantern extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + bindTexture(ResourceManager.lantern_tex); + ResourceManager.lantern.renderPart("Lantern"); + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + float mult = (float) (Math.sin(System.currentTimeMillis() / 200D) / 2 + 0.5) * 0.1F + 0.9F; + GL11.glColor3f(1F * mult, 1F * mult, 0.7F * mult); + ResourceManager.lantern.renderPart("Light"); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLanternBehemoth.java b/src/main/java/com/hbm/render/tileentity/RenderLanternBehemoth.java new file mode 100644 index 000000000..b7d18c4f5 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderLanternBehemoth.java @@ -0,0 +1,53 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.tileentity.deco.TileEntityLanternBehemoth; + +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +public class RenderLanternBehemoth extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + TileEntityLanternBehemoth lantern = (TileEntityLanternBehemoth) tile; + if(lantern.isBroken) { + GL11.glRotated(5, 1, 0, 0); + GL11.glRotated(10, 0, 0, 1); + } + + bindTexture(ResourceManager.lantern_rusty_tex); + ResourceManager.lantern.renderPart("Lantern"); + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + + if(lantern.isBroken) { + float mult = (float) (Math.sin(System.currentTimeMillis() / 200D) / 2 + 0.5); + GL11.glColor3f(1F * mult, 0, 0); + } else { + float mult = (float) (Math.sin(System.currentTimeMillis() / 200D) / 2 + 0.5) * 0.5F + 0.5F; + GL11.glColor3f(0, 1F * mult, 0); + } + ResourceManager.lantern.renderPart("Light"); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 8498efeaa..0b0d84621 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -182,6 +182,8 @@ public class TileMappings { put(TileEntitySILEX.class, "tileentity_silex"); put(TileEntityFEL.class, "tileentity_fel"); put(TileEntityDemonLamp.class, "tileentity_demonlamp"); + put(TileEntityLantern.class, "tileentity_lantern_ordinary"); + put(TileEntityLanternBehemoth.class, "tileentity_lantern_behemoth"); put(TileEntityStorageDrum.class, "tileentity_waste_storage_drum"); put(TileEntityDeaerator.class, "tileentity_deaerator"); put(TileEntityCableBaseNT.class, "tileentity_ohgod"); // what? diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityLantern.java b/src/main/java/com/hbm/tileentity/deco/TileEntityLantern.java new file mode 100644 index 000000000..a93e4a303 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityLantern.java @@ -0,0 +1,34 @@ +package com.hbm.tileentity.deco; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityLantern extends TileEntity { + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord, + yCoord, + zCoord, + xCoord + 1, + yCoord + 6, + zCoord + 1 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java b/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java new file mode 100644 index 000000000..5a732670c --- /dev/null +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java @@ -0,0 +1,138 @@ +package com.hbm.tileentity.deco; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.entity.missile.EntityBobmazon; +import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemKitCustom; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IRepairable; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +public class TileEntityLanternBehemoth extends TileEntity implements INBTPacketReceiver, IRepairable { + + public boolean isBroken = false; + public int comTimer = -1; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(comTimer == 360) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.hornNearSingle", 10F, 1F); + if(comTimer == 280) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.hornFarSingle", 10000F, 1F); + if(comTimer == 220) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.hornNearDual", 10F, 1F); + if(comTimer == 100) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.hornFarDual", 10000F, 1F); + + if(comTimer == 0) { + EntityBobmazon shuttle = new EntityBobmazon(worldObj); + shuttle.posX = xCoord + 0.5 + worldObj.rand.nextGaussian() * 10; + shuttle.posY = 300; + shuttle.posZ = zCoord + 0.5 + worldObj.rand.nextGaussian() * 10; + ItemStack payload = ItemKitCustom.create("Supplies", null, 0xffffff, 0x008000, + new ItemStack(ModItems.circuit_aluminium, 4 + worldObj.rand.nextInt(4)), + new ItemStack(ModItems.circuit_copper, 4 + worldObj.rand.nextInt(2)), + new ItemStack(ModItems.circuit_red_copper, 2 + worldObj.rand.nextInt(3)), + new ItemStack(ModItems.circuit_gold, 1 + worldObj.rand.nextInt(2)), + new ItemStack(Items.diamond, 6 + worldObj.rand.nextInt(6)), + new ItemStack(Blocks.red_flower)/*, + ItemBookLore.createBook("beacon", 12, 0x808080, 0xDFBE26)*/); + shuttle.payload = payload; + + worldObj.spawnEntityInWorld(shuttle); + } + + if(comTimer >= 0) { + comTimer--; + } + + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("isBroken", isBroken); + INBTPacketReceiver.networkPack(this, data, 150); + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.isBroken = nbt.getBoolean("isBroken"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + isBroken = nbt.getBoolean("isBroken"); + comTimer = nbt.getInteger("comTimer"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("isBroken", isBroken); + nbt.setInteger("comTimer", comTimer); + } + + @Override + public boolean isDamaged() { + return isBroken; + } + + List repair = new ArrayList(); + @Override + public List getRepairMaterials() { + + if(!repair.isEmpty()) + return repair; + + repair.add(new OreDictStack(OreDictManager.STEEL.plate(), 2)); + repair.add(new ComparableStack(ModItems.circuit_copper, 1)); + return repair; + } + + @Override + public void repair() { + this.isBroken = false; + this.comTimer = 400; + this.markDirty(); + } + + @Override public void tryExtinguish(World world, int x, int y, int z, EnumExtinguishType type) { } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord, + yCoord, + zCoord, + xCoord + 1, + yCoord + 6, + zCoord + 1 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 81d7d7848..d52e13b21 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1010,6 +1010,7 @@ item.ammo_grenade_finned.name=40mm Granate (Geflügelt) item.ammo_grenade_he.name=40mm Granate (HE) item.ammo_grenade_incendiary.name=40mm Granate (Brand) item.ammo_grenade_kampf.name=40mm Rakete +item.ammo_grenade_leadburster.name=40mm Leadburster item.ammo_grenade_nuclear.name=40mm Granate (Привет) item.ammo_grenade_phosphorus.name=40mm Granate (WP) item.ammo_grenade_sleek.name=40mm Granate (IF-F&E) diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 247d26a66..a7db733db 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -442,8 +442,8 @@ book_lore.beacon.page.5=light up red, otherwise it will light up green. Note tha book_lore.beacon.page.6=Chapter 3: Fog Horn $ The fog horn is the primary communication device of the beacon. The beacon is designed for peer-to-peer (P2P) communication as well as for message broadcasting. book_lore.beacon.page.7=Chapter 4: Peer-to-Peer $ For details on communication, refer to the communications handbook. A short rundown of establishing a P2P connection follows: First, the beacon has to give the "START CONNECTION" signal, book_lore.beacon.page.8=being a single long tone. All available peers should respond with a single long tone as well (order specified by proximity, as well as the communication guidelines outlined in the handbook, section "Responding to a Connection") -book_lore.beacon.page.9=Once the desired peer has responded, give the "ACCEPT CONNECTION" signal, being two long tones, the peer will then also respond with two long tones. All communication afterwards has to happen using pre-negotiated signals, -book_lore.beacon.page.10=most commonly using the FAR-5M standard. Communication will end immediately if no standard has been negotiated, serving as a "ping". Should communication continue, the connection can be ended using another long single tone "END CONNECTION". +book_lore.beacon.page.9=Once the desired peer has responded, give the "ACCEPT CONNECTION" signal, being two long tones, the peer will then also respond with two long tones. All communication afterwards has to happen using pre-negotiated signals, most commonly +book_lore.beacon.page.10=using the FAR-5M standard. Communication will end immediately if no standard has been negotiated, serving as a "ping". Should communication continue, the connection can be ended using another long single tone "END CONNECTION". book_lore.beacon.page.11=Chapter 5: Warranty $ [ page intentionally left blank ] cannery.f1=[ Press F1 for help ] @@ -914,6 +914,7 @@ desc.item.ammo.neu_fun=* Fun for the whole family! desc.item.ammo.neu_heavy_metal=* Heavy Metal desc.item.ammo.neu_homing=* Homing desc.item.ammo.neu_jolt=* Jolt +desc.item.ammo.neu_leadburster=* Attaches to surfaces and sprays bullets desc.item.ammo.neu_less_bouncy=* Less bouncy desc.item.ammo.neu_maskman_flechette=* Fires a tracer which summons a storm of DU-flechettes desc.item.ammo.neu_maskman_meteorite=* Fires a high-damage round that summons a small meteorite @@ -1659,6 +1660,7 @@ item.ammo_grenade_finned.name=40mm Grenade (Finned) item.ammo_grenade_he.name=40mm Grenade (HE) item.ammo_grenade_incendiary.name=40mm Grenade (Incendiary) item.ammo_grenade_kampf.name=40mm Rocket +item.ammo_grenade_leadburster.name=40mm Leadburster item.ammo_grenade_nuclear.name=40mm Grenade (Привет) item.ammo_grenade_phosphorus.name=40mm Grenade (WP) item.ammo_grenade_sleek.name=40mm Grenade (IF-R&D) diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 297205dcb..90efc5334 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -54,6 +54,10 @@ "block.damage": {"category": "block", "sounds": ["block/dam1", "block/dam2", "block/dam3", "block/dam4"]}, "block.electricHum": {"category": "block", "sounds": [{"name": "block/electricHum", "stream": false}]}, "block.boiler": {"category": "block", "sounds": [{"name": "block/boiler", "stream": false}]}, + "block.hornNearSingle": {"category": "block", "sounds": [{"name": "block/hornNearSingle", "stream": false}]}, + "block.hornNearDual": {"category": "block", "sounds": [{"name": "block/hornNearDual", "stream": false}]}, + "block.hornFarSingle": {"category": "block", "sounds": [{"name": "block/hornFarSingle", "stream": false}]}, + "block.hornFarDual": {"category": "block", "sounds": [{"name": "block/hornFarDual", "stream": false}]}, "door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]}, "door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]}, diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/lantern.png b/src/main/resources/assets/hbm/textures/models/trinkets/lantern.png index 78496dc2a426eb078beb6b678f327fdf71cf5d1d..554a434e21ee23f48d10436c43fcca98474f6892 100644 GIT binary patch delta 922 zcmV;L17-Z60>1~4Gk*hiNkl+)&2AVu>2M^Zp*c5i$gB_aMX-)%ang-6f z(?Fbar-O(HMC7}<{|9n%OaLIp_;--aW|IIQrG(qt+h1!%0Ds`@>W=M>98{u0y$$Voa;fD+{T`a0d; z-~UL@KvGHzch>7QhGF=TiFF}nve|6XG)-vR79xVDr>8Vc6S}U$IF5LJes)z5w*7vO zX__D+I2;ae&VOMT2Beg#%(8x>tw8&Vx~O8Txx4_eK@t0}ZiWyLLiiq}G-jYcF-FYu zd>n*#U{*X{lfh9Y+;92$zhY9GTmvi3Qp`IH!vN4wsjg$vJ0h41@3@B6R7u2w7apJmVTSH_$r5y^GJJw05T@E z4yM5TA>o{>-wMiVX4CTE&gOYhd1!HFbg{NgUVrC-Pr-cpszKA98bYvV&Kd)IWzcmU z4u^w*Y`5F2p31;3+))q?a_J5OzP!9FFF9oe#~9IdowY{R$uv!N|JMKu2UNQl$DquZ zTHCg!FVP9Qn6p#+U?` zmVZ>s&aPv9-)GhBSv0K5-EOxiJk|_vCd{O~=y6bM0ktE9by8j(nBB4Z%EYEMp+Ifh zX7SKD<2YJ?b*;(1JcoIlg;$=Gi+)lXXP~x`1)Two1@G7f`fDjxbu#tZy|v6*)=%^k wgiF6Xe`|~YI(PUxMoXT3=hKnXol?R-`xBsA$LgjzZvX%Q07*qoM6N<$g8aS1hX4Qo delta 245 zcmV_0TgIIdwE0)z00000NkvXXu0mjfwN7$) diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/lantern_rusty.png b/src/main/resources/assets/hbm/textures/models/trinkets/lantern_rusty.png new file mode 100644 index 0000000000000000000000000000000000000000..7f734a12bcabfabd14c9ff77b7d4ed0fb4a0bff9 GIT binary patch literal 1838 zcmV+}2hsS6P)MFqHe5UmZ0`U$VQh@JnZ`s$KIc4^T?cGEyjaq#3%`Kwu<`n?G{PN_Y{X}Z11oECDJ?Q=Ww*TzI58@BM|M;zSdK77;vTytM z{><~jwq4&E$zvrg8)=>Z`12Q^#I{|zoKI{U{N<}JV%;m#X{PQwfBpMEMF~M5}oLbu(B9AR@ zd&S$x_v^2};c_{#v7rK`tmI_eeRq$T@!3Zo#QLzZZj~38`AI}n*~@s!<(&E1Pk%xW z2yftlPr^l^$MDpYjLXHjUawCg$&@*b!dgo7?(8KH0#$H8H9_x)8t#SSkaBtw!4#YG zhzdJy+_04CqL?^2D_sQlPN@z)O!-*Y(>#A~psOk`ZWiV&oF~BqaKT$=Ukeh!axxr! zilnzb!ewA#niB3EF`<`6shtQXoATgrbDro9N&QKr^q?O`nhdTFS8|$g6wMPic^YO@ z2>_ggtX?v_{!S=&c9;{?8pJ3q+NLGoaKm=E3@~lBR@N;(U50 zqA77Y&%?b6=h+6yQl>T#uT1ky;N1d7fF81@9HL#JpEhN~CP0WOxtKG|`&VOMTuQB^})n86DD;2?R?< zD+R)7trG~X6vQ1wpAWA_KR|tVx8gl8vk`ta<~b7`1SRK0Esgt!4JDqXBSJZ-bzTzl zlyS!96ds_7loT`p!Lm%`?A+aLV}k$b^N+&_)^#P%nbw@k;fMK*)07W0D!ml0 zd!v!}mLDJ%Q7p=t!faLZyuI4;WNoT%ODA?)o)=l1q)NCYgG6PgB3x`V3IN*RIy(CD?{ zYM3cyKO#9ViTQNq;kw}-^jf*wH$oC3U@C+dJ)C5Ug%bj;jrd1REb-#S4VDt?!z++6 zUwSP=AQ_g7WJ>SB-~RcpH}^Rf)|i45=f=-RffeEGW%BQV;2rIUwG zmf6OBvR7(v)aKl;4ZPEO0~J!Tai&z*?pNldEawZ89Vn<-Bnkm4;b;Uz)6j7l?pq4;nyc@b8A~bJAbm)z{yYJYxjcq%4l9SPTC%h3p zjAmKJY?DBGg=E79BAhQ5#0+=H_UKq8+!2Mq$GDKOJ+!3uW* zC8-c1cyHvasAfD4+jj&LVai6x;7KW!Qo$t1NeNXfy~d{zQ7Il=PSZiQ?uaRxGf@iR z!sX_ItUH!6nle*@Wtn)m-w5yQr9%L(Bgu1SnrH4`J#bwsDJdeti_1bBWb^KL4O%Je z$D~~5M96^D6Hi3RNoYOD*${&?rN<}lWyf^vFUy<=grrAzN_AQY-5uPSv$3rkW*It| zCeCL8g65r@o0-}JMA>T}k(AnKrP4}6Qo?e^ROt?;5MIZAB4gcZ>qc)4#VO?wIiC`> z6{clI)JCBhGdbKbGZ3SCjF*LM=AOecO&v%9ydW(DsI^VA-%d12N86DD!0W cy^%HeFa6E#kiO{TF8}}l07*qoM6N<$f*_-W`v3p{ literal 0 HcmV?d00001 From 157456a0c87450225794bcddbceba3f4793a26b0 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 13 Aug 2023 21:04:12 +0200 Subject: [PATCH 15/15] ashpit --- changelog | 53 +++--- gradle.properties | 2 +- src/main/java/com/hbm/blocks/ModBlocks.java | 7 +- .../com/hbm/blocks/machine/MachineAshpit.java | 47 +++++ .../java/com/hbm/crafting/PowderRecipes.java | 3 +- .../java/com/hbm/crafting/ToolRecipes.java | 1 + .../java/com/hbm/crafting/WeaponRecipes.java | 2 + .../com/hbm/entity/mob/EntityGlyphid.java | 17 +- .../java/com/hbm/handler/FuelHandler.java | 9 + .../com/hbm/inventory/OreDictManager.java | 7 + .../inventory/container/ContainerAshpit.java | 73 ++++++++ .../java/com/hbm/inventory/gui/GUIAshpit.java | 41 ++++ .../inventory/material/MatDistribution.java | 5 + .../inventory/recipes/CentrifugeRecipes.java | 8 +- .../inventory/recipes/CombinationRecipes.java | 7 +- .../inventory/recipes/anvil/AnvilRecipes.java | 7 + src/main/java/com/hbm/items/ItemEnums.java | 6 + src/main/java/com/hbm/items/ModItems.java | 3 + src/main/java/com/hbm/lib/HbmWorldGen.java | 29 ++- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/CraftingManager.java | 1 + .../java/com/hbm/main/ResourceManager.java | 1 + .../hbm/render/tileentity/RenderAshpit.java | 71 +++++++ .../hbm/render/tileentity/RenderLantern.java | 31 +++- .../com/hbm/render/tileentity/RenderLoot.java | 23 ++- .../java/com/hbm/tileentity/TileMappings.java | 1 + .../tileentity/deco/TileEntityLantern.java | 19 ++ .../deco/TileEntityLanternBehemoth.java | 7 +- .../tileentity/machine/TileEntityAshpit.java | 175 ++++++++++++++++++ .../machine/TileEntityFireboxBase.java | 37 +++- src/main/java/com/hbm/util/LootGenerator.java | 10 + .../java/com/hbm/world/feature/Meteorite.java | 6 - src/main/resources/assets/hbm/lang/de_DE.lang | 4 + src/main/resources/assets/hbm/lang/en_US.lang | 8 + .../hbm/textures/gui/machine/gui_ashpit.png | Bin 0 -> 1145 bytes .../hbm/textures/items/powder_ash.coal.png | Bin 0 -> 260 bytes .../hbm/textures/items/powder_ash.misc.png | Bin 0 -> 236 bytes .../hbm/textures/items/powder_ash.wood.png | Bin 0 -> 277 bytes .../hbm/textures/models/machines/ashpit.png | Bin 0 -> 3976 bytes 40 files changed, 666 insertions(+), 58 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineAshpit.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerAshpit.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIAshpit.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderAshpit.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java create mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_ashpit.png create mode 100644 src/main/resources/assets/hbm/textures/items/powder_ash.coal.png create mode 100644 src/main/resources/assets/hbm/textures/items/powder_ash.misc.png create mode 100644 src/main/resources/assets/hbm/textures/items/powder_ash.wood.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/ashpit.png diff --git a/changelog b/changelog index a97d31b1d..29e0ddd73 100644 --- a/changelog +++ b/changelog @@ -1,30 +1,33 @@ ## Added -* Electrolysis machine - * A large machine that can do the chemical plant's electrolysis recipes, as well as crystal processing - * Crystals are turned into molten metals as well as byproducts, the metal can be cast using foundry blocks - * Processing crystals requires nitric acid and yields more than what the centrifuge would give -* Environment suit - * An airtight suit for diving with high radiation resistance - * Relatively cheap, but protection is comparatively low - * Has sprint assist and accelerated diving +* Analysis tool + * A more universal version of the power net analyzer + * Currently only works on fluid networks though + * In addition to seeing links and subscribers, the analysis tool also displays subscriber positions as well as a log (up to 50 entries) of what block received how much fluid + * This should finally give more insight in the bug that rarely causes fluids to disappear +* Leadburster + * A 40mm launcher grenade that doesn't explode, instead it attaches itself to a block and starts firing bullets + * Fires in circles for 2 seconds before it self-destructs +* Congo lake + * A 40mm pump-action grenade launcher with a capacity of 4 rounds +* Lantern + * Cheap and fancy illumination + * Will blind glyphids in a small radius + * Glyphids don't actually have eyes, just don't think about it too much +* Ashpit + * An optional part that can be placed under fireboxes and heating ovens + * Collects ashes, producing one ash pile for every 10 furnace operations worth of fuel + * Ash comes in different types like wood (from planks, logs and saplings), coal (coal, lignite and coke) and generic (everything else) + * Ashes can be used as dyes, for making industrial fertilizer, as low-efficiency furnace fuel or for carbon in the crucible + * Coal ashes can also be centrifuged, returning the flammable content as unburned coal dust as well as a small amount of boron ## Changed -* Bedrock ores now spawn in the nether - * Nether bedrock ores include red phosphorus, quartz and glowstone, all yielding the items directly instead of ores - * All current nether bedrock ores are tier 1 and do not require any bore fluid -* Custom machines now show their recipes in NEI - * All it took was battling NEI's source code for 3 hours and my sanity -* Changed energy OC compatibility - * Make sure to update your programs, as the getEnergyStored and getMaxEnergy have been deprecated. -* The chlorocalcite centrifugation process now requires 8,000mB of sulfuric acid instead of 100mB of water -* Mixed chlorocalcite solution now requires flux as a reducing agent -* All chlorine producing electrolysis recipes have been moved to the electrolysis machine and can no longer be done in the chemical plant - * If only there was a much simpler recipe that may have existed at some point, life could be a dream -* Zirconium and lithium are now recognized crucible materials -* Glowstone now yields 100mB of chlorine in the combination oven instead of the initial 50mB +* Updated polish and chinese localization +* Flechettes now get stuck in blocks for a few seconds +* NBT kits now display the amount of items in a stack +* Removed the special nuclear meteorite ## Fixed -* Fixed custom machines not sending fluid -* Fixed custom machine item IO not working beyond the first slot -* Fixed target designators not accepting coordinates when not designated first (OC compatibility) -* Fixed the player's arms clipping through the armor model when punching +* Fixed thermos craching config hitting before the config is saved, resulting in an empty config the first time the server is launched +* Fixed heating oven not visually connecting to exhaust pipes +* Fixed loot blocks not correctly rendering items that require multiple render passes +* Fixed special meteorites spawning in worldgen diff --git a/gradle.properties b/gradle.properties index f40234eee..e8d659222 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=4683 +mod_build_number=4690 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 7896435cf..fe480dde1 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -668,6 +668,7 @@ public class ModBlocks { public static Block heater_oilburner; public static Block heater_electric; public static Block heater_heatex; + public static Block machine_ashpit; public static Block furnace_iron; public static Block furnace_steel; @@ -1549,8 +1550,8 @@ public class ModBlocks { lamp_uv_off = new UVLamp(false).setBlockName("lamp_uv_off").setCreativeTab(MainRegistry.blockTab); lamp_uv_on = new UVLamp(true).setBlockName("lamp_uv_on").setCreativeTab(null); lamp_demon = new DemonLamp().setBlockName("lamp_demon").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_demon"); - lantern = new BlockLantern().setBlockName("lantern").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lantern"); - lantern_behemoth = new BlockLanternBehemoth().setBlockName("lantern_behemoth").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lantern"); + lantern = new BlockLantern().setBlockName("lantern").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); + lantern_behemoth = new BlockLanternBehemoth().setBlockName("lantern_behemoth").setStepSound(Block.soundTypeMetal).setCreativeTab(null).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":block_rust"); reinforced_stone = new BlockGeneric(Material.rock).setBlockName("reinforced_stone").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(3000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_stone"); concrete_smooth = new BlockRadResistant(Material.rock).setBlockName("concrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); @@ -1816,6 +1817,7 @@ public class ModBlocks { heater_oilburner = new HeaterOilburner().setBlockName("heater_oilburner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); heater_electric = new HeaterElectric().setBlockName("heater_electric").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); heater_heatex = new HeaterHeatex().setBlockName("heater_heatex").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_ashpit = new MachineAshpit().setBlockName("machine_ashpit").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName("stonebrick"); furnace_iron = new FurnaceIron().setBlockName("furnace_iron").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); furnace_steel = new FurnaceSteel().setBlockName("furnace_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3066,6 +3068,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_epress, machine_epress.getUnlocalizedName()); register(heater_firebox); register(heater_oven); + register(machine_ashpit); register(heater_oilburner); register(heater_electric); register(heater_heatex); diff --git a/src/main/java/com/hbm/blocks/machine/MachineAshpit.java b/src/main/java/com/hbm/blocks/machine/MachineAshpit.java new file mode 100644 index 000000000..578c7c2ce --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineAshpit.java @@ -0,0 +1,47 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityAshpit; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineAshpit extends BlockDummyable implements ITooltipProvider { + + public MachineAshpit() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityAshpit(); + return new TileEntityProxyCombo().inventory(); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/crafting/PowderRecipes.java b/src/main/java/com/hbm/crafting/PowderRecipes.java index 22200d0ef..20eb1a2f1 100644 --- a/src/main/java/com/hbm/crafting/PowderRecipes.java +++ b/src/main/java/com/hbm/crafting/PowderRecipes.java @@ -63,8 +63,9 @@ public class PowderRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 8), new Object[] { PB.dust(), S.dust(), KEY_SAND }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 12), new Object[] { CA.dust(), KEY_SAND }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 16), new Object[] { BORAX.dust(), KEY_SAND }); - + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_fertilizer, 4), new Object[] { CA.dust(), P_RED.dust(), KNO.dust(), S.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_fertilizer, 4), new Object[] { ANY_ASH.any(), P_RED.dust(), KNO.dust(), S.dust() }); if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting) { CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { REDSTONE.dust(), IRON.dust(), COAL.dust(), CU.dust() }); diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 7577f03d9..f418904f6 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -129,6 +129,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.mirror_tool), new Object[] { " A ", " IA", "I ", 'A', AL.ingot(), 'I', IRON.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.rbmk_tool), new Object[] { " A ", " IA", "I ", 'A', PB.ingot(), 'I', IRON.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.power_net_tool), new Object[] { "WRW", " I ", " B ", 'W', ModItems.wire_red_copper, 'R', REDSTONE.dust(), 'I', IRON.ingot(), 'B', ModItems.battery_su }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.analysis_tool), new Object[] { " G", " S ", "S ", 'G', KEY_ANYPANE, 'S', STEEL.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.kit_toolbox_empty), new Object[] { "CCC", "CIC", 'C', CU.plate(), 'I', IRON.ingot() }); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 9218f6ee6..f8f149b7f 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -75,6 +75,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_karl, 1), new Object[] { "SSW", " MW", 'S', ModItems.hull_small_steel, 'W', ALLOY.plate(), 'M', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_quadro, 1), new Object[] { "SSS", "SSS", "CM ", 'S', ModItems.hull_small_steel, 'C', ModItems.circuit_targeting_tier3, 'M', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hk69, 1), new Object[] { "SSI", " MB", 'S', ModItems.hull_small_steel, 'I', IRON.ingot(), 'M', ModItems.mechanism_launcher_1, 'B', ModItems.bolt_tungsten }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "HHR", "WLW", 'H', ModItems.hull_small_aluminium, 'R', ModItems.mechanism_rifle_1, 'W', KEY_LOG, 'L', ModItems.mechanism_launcher_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stinger, 1), new Object[] { "SSW", "CMW", 'S', STEEL.plate(), 'W', TI.plate(), 'C', ModItems.circuit_red_copper, 'M', ModItems.mechanism_launcher_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket, 4), new Object[] { "SS ", "STI", " IR", 'S', STEEL.plate(), 'T', Item.getItemFromBlock(Blocks.tnt), 'I', AL.plate(), 'R', REDSTONE.dust() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver, 1), new Object[] { "SSM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', ModItems.wire_aluminium, 'M', ModItems.mechanism_revolver_1 }); @@ -261,6 +262,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.NUCLEAR), new Object[] { " P ", "GIG", " P ", 'G', ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.HE), 'I', ModItems.neutron_reflector, 'P', PU239.nugget() }); CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.FINNED), new Object[] { "G", "R", 'G', Items.feather, 'R', ModItems.ammo_grenade }); CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.KAMPF), new Object[] { "G", "R", 'G', ModItems.ammo_rocket, 'R', ModItems.ammo_grenade }); + CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.LEADBURSTER), new Object[] { "LCL", "CHC", "LML", 'L', ModItems.pellet_buckshot, 'C', ANY_SMOKELESS.dust(), 'H', ModItems.hull_small_aluminium, 'M', ModItems.motor }); //240mm Shells CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell, 4), new Object[] { " T ", "GHG", "CCC", 'T', ModBlocks.tnt, 'G', Items.gunpowder, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java index 10337b458..599b66f6a 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -19,6 +19,7 @@ import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; import net.minecraft.util.DamageSource; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -68,6 +69,7 @@ public class EntityGlyphid extends EntityMob { @Override protected Entity findPlayerToAttack() { + if(this.isPotionActive(Potion.blindness)) return null; EntityPlayer entityplayer = this.worldObj.getClosestVulnerablePlayerToEntity(this, useExtendedTargeting() ? 128D : 16D); return entityplayer != null && this.canEntityBeSeen(entityplayer) ? entityplayer : null; } @@ -75,11 +77,18 @@ public class EntityGlyphid extends EntityMob { @Override protected void updateEntityActionState() { super.updateEntityActionState(); - - // hell yeah!! - if(useExtendedTargeting() && this.entityToAttack != null && !this.hasPath()) { - this.setPathToEntity(PathFinderUtils.getPathEntityToEntityPartial(worldObj, this, this.entityToAttack, 16F, true, false, false, true)); + + if(this.isPotionActive(Potion.blindness)) { + this.entityToAttack = null; + this.setPathToEntity(null); + } else { + + // hell yeah!! + if(useExtendedTargeting() && this.entityToAttack != null && !this.hasPath()) { + this.setPathToEntity(PathFinderUtils.getPathEntityToEntityPartial(worldObj, this, this.entityToAttack, 16F, true, false, false, true)); + } } + } public boolean useExtendedTargeting() { diff --git a/src/main/java/com/hbm/handler/FuelHandler.java b/src/main/java/com/hbm/handler/FuelHandler.java index af8f911e7..951a5d6c2 100644 --- a/src/main/java/com/hbm/handler/FuelHandler.java +++ b/src/main/java/com/hbm/handler/FuelHandler.java @@ -51,6 +51,15 @@ public class FuelHandler implements IFuelHandler { } } + if(fuel.getItem() == ModItems.powder_ash) { + int meta = fuel.getItemDamage(); + switch(meta) { + case 0: return single / 2; + case 1: return single; + case 2: return single / 2; + } + } + return 0; } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 1f96d0d4b..36a75a648 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -23,6 +23,7 @@ import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior; import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ItemEnums.EnumBriquetteType; import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ItemEnums.EnumTarType; @@ -291,6 +292,7 @@ public class OreDictManager { public static final DictGroup ANY_TAR = new DictGroup("Tar", KEY_OIL_TAR, KEY_COAL_TAR, KEY_CRACK_TAR, KEY_WOOD_TAR); /** Any special post-RBMK gating material, namely bismuth and arsenic */ public static final DictFrame ANY_BISMOID = new DictFrame("AnyBismoid"); + public static final DictFrame ANY_ASH = new DictFrame("Ash"); public static void registerOres() { @@ -458,6 +460,7 @@ public class OreDictManager { for(int i = 0; i < 16; i++) { ANY_CONCRETE.any(new ItemStack(ModBlocks.concrete_colored_ext, 1, i)); } ANY_COKE .gem(fromAll(coke, EnumCokeType.class)).block(fromAll(block_coke, EnumCokeType.class)); ANY_BISMOID .ingot(ingot_bismuth, ingot_arsenic).nugget(nugget_bismuth, nugget_arsenic).block(block_bismuth); + ANY_ASH .any(fromOne(ModItems.powder_ash, EnumAshType.WOOD), fromOne(ModItems.powder_ash, EnumAshType.COAL), fromOne(ModItems.powder_ash, EnumAshType.MISC)); /* * TAR @@ -563,6 +566,10 @@ public class OreDictManager { OreDictionary.registerOre("dye", new ItemStack(oil_tar, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre("dyeOrange", powder_cadmium); OreDictionary.registerOre("dye", powder_cadmium); + OreDictionary.registerOre("dyeLightGray", fromOne(powder_ash, EnumAshType.WOOD)); + OreDictionary.registerOre("dyeBlack", fromOne(powder_ash, EnumAshType.COAL)); + OreDictionary.registerOre("dyeGray", fromOne(powder_ash, EnumAshType.MISC)); + OreDictionary.registerOre("dye", new ItemStack(powder_ash, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre("blockGlass", glass_boron); OreDictionary.registerOre("blockGlass", glass_lead); diff --git a/src/main/java/com/hbm/inventory/container/ContainerAshpit.java b/src/main/java/com/hbm/inventory/container/ContainerAshpit.java new file mode 100644 index 000000000..5d3505d63 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerAshpit.java @@ -0,0 +1,73 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotTakeOnly; +import com.hbm.tileentity.machine.TileEntityAshpit; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerAshpit extends Container { + + protected TileEntityAshpit ashpit; + + public ContainerAshpit(InventoryPlayer invPlayer, TileEntityAshpit ashpit) { + this.ashpit = ashpit; + this.ashpit.openInventory(); + + for(int i = 0; i < 5; i++) this.addSlotToContainer(new SlotTakeOnly(ashpit, i, 44 + i * 18, 27)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 86 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 144)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack stack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack originalStack = slot.getStack(); + stack = originalStack.copy(); + + if(index <= 4) { + if(!this.mergeItemStack(originalStack, 5, this.inventorySlots.size(), true)) { + return null; + } + + slot.onSlotChange(originalStack, stack); + + } else { + return null; + } + + if(originalStack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return stack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return ashpit.isUseableByPlayer(player); + } + + @Override + public void onContainerClosed(EntityPlayer player) { + super.onContainerClosed(player); + this.ashpit.closeInventory(); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIAshpit.java b/src/main/java/com/hbm/inventory/gui/GUIAshpit.java new file mode 100644 index 000000000..af5a768e1 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIAshpit.java @@ -0,0 +1,41 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerAshpit; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityAshpit; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIAshpit extends GuiInfoContainer { + + private TileEntityAshpit firebox; + private final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_ashpit.png"); + + public GUIAshpit(InventoryPlayer invPlayer, TileEntityAshpit tedf) { + super(new ContainerAshpit(invPlayer, tedf)); + firebox = tedf; + + this.xSize = 176; + this.ySize = 168; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.firebox.hasCustomInventoryName() ? this.firebox.getInventoryName() : I18n.format(this.firebox.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/inventory/material/MatDistribution.java b/src/main/java/com/hbm/inventory/material/MatDistribution.java index 11a636399..5c04519b5 100644 --- a/src/main/java/com/hbm/inventory/material/MatDistribution.java +++ b/src/main/java/com/hbm/inventory/material/MatDistribution.java @@ -22,6 +22,7 @@ import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.util.Compat; import net.minecraft.block.Block; @@ -85,6 +86,10 @@ public class MatDistribution extends SerializableRecipe { registerEntry(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.LIMESTONE), MAT_FLUX, DUST.q(10)); registerEntry(ModItems.powder_flux, MAT_FLUX, DUST.q(1)); registerEntry(new ItemStack(Items.coal, 1, 1), MAT_CARBON, NUGGET.q(3)); + + registerEntry(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.WOOD), MAT_CARBON, NUGGET.q(1)); + registerEntry(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.COAL), MAT_CARBON, NUGGET.q(2)); + registerEntry(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.MISC), MAT_CARBON, NUGGET.q(1)); } public static void registerEntry(Object key, Object... matDef) { diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index 992ed2e3e..a3735f8bb 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -19,6 +19,7 @@ import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; @@ -368,9 +369,14 @@ public class CentrifugeRecipes extends SerializableRecipe { recipes.put(new ComparableStack(ModBlocks.block_slag), new ItemStack[] { new ItemStack(Blocks.gravel, 1), new ItemStack(ModItems.powder_fire, 1), - new ItemStack(ModItems.powder_calcium), //temp + new ItemStack(ModItems.powder_calcium), new ItemStack(ModItems.dust) }); + recipes.put(new ComparableStack(ModItems.powder_ash, 1, EnumAshType.COAL.ordinal()), new ItemStack[] { + new ItemStack(ModItems.powder_coal_tiny, 2), + new ItemStack(ModItems.powder_boron_tiny, 1), + new ItemStack(ModItems.dust_tiny, 6)}); + for(EnumBedrockOre ore : EnumBedrockOre.values()) { int i = ore.ordinal(); diff --git a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java index a84cae509..d1c218639 100644 --- a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java @@ -18,6 +18,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ItemEnums.EnumBriquetteType; import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ItemEnums.EnumTarType; @@ -47,9 +48,9 @@ public class CombinationRecipes extends SerializableRecipe { recipes.put(new ComparableStack(Items.glowstone_dust), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.CHLORINE, 100))); recipes.put(new ComparableStack(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.BAUXITE)), new Pair(new ItemStack(ModItems.ingot_aluminium, 2), new FluidStack(Fluids.REDMUD, 250))); - recipes.put(KEY_LOG, new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 250))); - recipes.put(KEY_SAPLING, new Pair(null, new FluidStack(Fluids.WOODOIL, 50))); - recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.WOOD)), new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 500))); + recipes.put(KEY_LOG, new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 250))); + recipes.put(KEY_SAPLING, new Pair(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.WOOD), new FluidStack(Fluids.WOODOIL, 50))); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.WOOD)), new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 500))); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), null)); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), null)); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index bc29c1fc2..1a488b9cb 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -237,6 +237,13 @@ public class AnvilRecipes { new OreDictStack(CU.ingot(), 8) }, new AnvilOutput(new ItemStack(ModBlocks.heater_oven))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new ComparableStack(Blocks.stone, 8), + new OreDictStack(STEEL.plate(), 2), + new OreDictStack(IRON.ingot(), 4) + }, new AnvilOutput(new ItemStack(ModBlocks.machine_ashpit))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(ModItems.tank_steel, 4), diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index c1424f43f..a83f5171c 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -23,6 +23,12 @@ public class ItemEnums { PARAFFIN } + public static enum EnumAshType { + WOOD, + COAL, + MISC + } + public static enum EnumBriquetteType { COAL, LIGNITE, diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 0b8389465..0ea177e3b 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -109,6 +109,7 @@ public class ModItems { public static Item briquette; public static Item coal_infernal; public static Item cinnebar; + public static Item powder_ash; public static Item niter; public static Item ingot_copper; @@ -2724,6 +2725,7 @@ public class ModItems { powder_lignite = new Item().setUnlocalizedName("powder_lignite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lignite"); coal_infernal = new Item().setUnlocalizedName("coal_infernal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coal_infernal"); cinnebar = new Item().setUnlocalizedName("cinnebar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cinnebar"); + powder_ash = new ItemEnumMulti(EnumAshType.class, true, true).setUnlocalizedName("powder_ash").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_ash"); ingot_gh336 = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("ingot_gh336").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_gh336"); nugget_gh336 = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("nugget_gh336").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_gh336"); @@ -5812,6 +5814,7 @@ public class ModItems { GameRegistry.registerItem(dust, dust.getUnlocalizedName()); GameRegistry.registerItem(dust_tiny, dust_tiny.getUnlocalizedName()); GameRegistry.registerItem(fallout, fallout.getUnlocalizedName()); + GameRegistry.registerItem(powder_ash, powder_ash.getUnlocalizedName()); //Powders GameRegistry.registerItem(powder_fire, powder_fire.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 323e01b0c..6182148ab 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -9,11 +9,14 @@ import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType; import com.hbm.config.GeneralConfig; import com.hbm.config.MobConfig; import com.hbm.config.WorldConfig; +import com.hbm.handler.MultiblockHandlerXR; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import com.hbm.saveddata.TomSaveData; +import com.hbm.tileentity.deco.TileEntityLanternBehemoth; import com.hbm.tileentity.machine.storage.TileEntitySafe; import com.hbm.tileentity.machine.storage.TileEntitySoyuzCapsule; +import com.hbm.util.LootGenerator; import com.hbm.util.WeightedRandomGeneric; import com.hbm.world.dungeon.AncientTomb; import com.hbm.world.dungeon.Antenna; @@ -59,6 +62,7 @@ import net.minecraft.world.biome.BiomeGenJungle; import net.minecraft.world.biome.BiomeGenRiver; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.feature.WorldGenMinable; +import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.common.IWorldGenerator; public class HbmWorldGen implements IWorldGenerator { @@ -389,6 +393,29 @@ public class HbmWorldGen implements IWorldGenerator { } } + if(rand.nextInt(1000) == 0) { + int x = i + rand.nextInt(16); + int z = j + rand.nextInt(16); + int y = world.getHeightValue(x, z); + + if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z) && world.getBlock(x, y, z).isReplaceable(world, x, y, z)) { + + world.setBlock(x, y, z, ModBlocks.lantern_behemoth, 12, 3); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {4, 0, 0, 0, 0, 0}, ModBlocks.lantern_behemoth, ForgeDirection.NORTH); + + TileEntityLanternBehemoth lantern = (TileEntityLanternBehemoth) world.getTileEntity(x, y, z); + lantern.isBroken = true; + + if(rand.nextInt(2) == 0) { + LootGenerator.setBlock(world, x, y, z - 2); + LootGenerator.lootBooklet(world, x, y, z - 2); + } + + if(GeneralConfig.enableDebugMode) + MainRegistry.logger.info("[Debug] Successfully spawned lantern at " + x + " " + (y) + " " + z); + } + } + if(GeneralConfig.enable528 && GeneralConfig.enable528BosniaSimulator && rand.nextInt(16) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); @@ -629,7 +656,7 @@ public class HbmWorldGen implements IWorldGenerator { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); int y = world.getHeightValue(x, z) - rand.nextInt(10); - (new Meteorite()).generate(world, rand, x, y, z, false, true, false); + (new Meteorite()).generate(world, rand, x, y, z, false, false, false); } if (GeneralConfig.enableNITAN) { diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 3d7045278..a941f6568 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 (4683)"; + public static final String VERSION = "1.0.27 BETA (4690)"; //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 6ae85aebc..4c469d776 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -266,6 +266,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceCombination.class, new RenderFurnaceCombination()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterFirebox.class, new RenderFirebox()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterOven.class, new RenderHeatingOven()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAshpit.class, new RenderAshpit()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterOilburner.class, new RenderOilburner()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterElectric.class, new RenderElectricHeater()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterHeatex.class, new RenderHeaterHeatex()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 1a4b56848..90dc90185 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -450,6 +450,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.lamp_tritium_green_off, 1), new Object[] { "GPG", "1T2", "GPG", 'G', KEY_ANYGLASS, 'P', P_RED.dust(), 'T', ModItems.cell_tritium, '1', "dustSulfur", '2', CU.dust() }); addRecipeAuto(new ItemStack(ModBlocks.lamp_tritium_blue_off, 1), new Object[] { "GPG", "1T2", "GPG", 'G', KEY_ANYGLASS, 'P',P_RED.dust(), 'T', ModItems.cell_tritium, '1', AL.dust(), '2', ST.dust() }); + addRecipeAuto(new ItemStack(ModBlocks.lantern, 1), new Object[] { "PGP", " S ", " S ", 'P', KEY_ANYPANE, 'G', Items.glowstone_dust, 'S', ModBlocks.steel_beam }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire, 16), new Object[] { "AIA", "I I", "AIA", 'A', ModItems.wire_aluminium, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_fire, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', P_RED.dust() }); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index a6d11780e..5959f4f48 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -390,6 +390,7 @@ public class ResourceManager { //Heaters public static final ResourceLocation heater_firebox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/firebox.png"); public static final ResourceLocation heater_oven_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/heating_oven.png"); + public static final ResourceLocation ashpit_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/ashpit.png"); public static final ResourceLocation heater_oilburner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/oilburner.png"); public static final ResourceLocation heater_electric_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/electric_heater.png"); public static final ResourceLocation heater_heatex_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/heater_heatex.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderAshpit.java b/src/main/java/com/hbm/render/tileentity/RenderAshpit.java new file mode 100644 index 000000000..cfee40260 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderAshpit.java @@ -0,0 +1,71 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityAshpit; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderAshpit extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(270, 0F, 1F, 0F); break; + } + GL11.glRotatef(-90, 0F, 1F, 0F); + + TileEntityAshpit oven = (TileEntityAshpit) tile; + + bindTexture(ResourceManager.ashpit_tex); + ResourceManager.heater_oven.renderPart("Main"); + + GL11.glPushMatrix(); + float door = oven.prevDoorAngle + (oven.doorAngle - oven.prevDoorAngle) * interp; + GL11.glTranslated(0, 0, door * 0.75D / 135D); + ResourceManager.heater_oven.renderPart("Door"); + GL11.glPopMatrix(); + + if(oven.isFull) { + ResourceManager.heater_oven.renderPart("InnerBurning"); + } else { + ResourceManager.heater_oven.renderPart("Inner"); + } + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_ashpit); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -1, 0); + GL11.glScaled(3.25, 3.25, 3.25); + } + public void renderCommon() { + bindTexture(ResourceManager.ashpit_tex); + ResourceManager.heater_oven.renderPart("Main"); + ResourceManager.heater_oven.renderPart("Door"); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLantern.java b/src/main/java/com/hbm/render/tileentity/RenderLantern.java index 15ddc8637..d61594f60 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLantern.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLantern.java @@ -2,13 +2,17 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; +import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; -public class RenderLantern extends TileEntitySpecialRenderer { +public class RenderLantern extends TileEntitySpecialRenderer implements IItemRendererProvider { @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { @@ -37,4 +41,29 @@ public class RenderLantern extends TileEntitySpecialRenderer { GL11.glPopMatrix(); } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.lantern); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + double scale = 2.75; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + bindTexture(ResourceManager.lantern_tex); + ResourceManager.lantern.renderPart("Lantern"); + GL11.glDisable(GL11.GL_TEXTURE_2D); + float mult = (float) (Math.sin(System.currentTimeMillis() / 200D) / 2 + 0.5) * 0.1F + 0.9F; + GL11.glColor3f(1F * mult, 1F * mult, 0.7F * mult); + ResourceManager.lantern.renderPart("Light"); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + }}; + } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderLoot.java b/src/main/java/com/hbm/render/tileentity/RenderLoot.java index d25492de0..1813bb7d7 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLoot.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLoot.java @@ -100,11 +100,22 @@ public class RenderLoot extends TileEntitySpecialRenderer { GL11.glRotated(90, 1, 0, 0); bindTexture(TextureMap.locationItemsTexture); - IIcon icon = stack.getIconIndex(); - float f14 = icon.getMinU(); - float f15 = icon.getMaxU(); - float f4 = icon.getMinV(); - float f5 = icon.getMaxV(); - ItemRenderer.renderItemIn2D(Tessellator.instance, f15, f4, f14, f5, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); + + for(int i = 0; i < stack.getItem().getRenderPasses(stack.getItemDamage()); i++) { + + IIcon icon = stack.getItem().getIcon(stack, i); + float f14 = icon.getMinU(); + float f15 = icon.getMaxU(); + float f4 = icon.getMinV(); + float f5 = icon.getMaxV(); + + int k1 = stack.getItem().getColorFromItemStack(stack, i); + float f10 = (float) (k1 >> 16 & 255) / 255.0F; + float f11 = (float) (k1 >> 8 & 255) / 255.0F; + float f12 = (float) (k1 & 255) / 255.0F; + GL11.glColor4f(1.0F * f10, 1.0F * f11, 1.0F * f12, 1.0F); + + ItemRenderer.renderItemIn2D(Tessellator.instance, f15, f4, f14, f5, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); + } } } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 0b0d84621..74b76c50b 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -259,6 +259,7 @@ public class TileMappings { private static void putMachines() { put(TileEntityHeaterFirebox.class, "tileentity_firebox"); put(TileEntityHeaterOven.class, "tileentity_heating_oven"); + put(TileEntityAshpit.class, "tileentity_ashpit"); put(TileEntityHeaterOilburner.class, "tileentity_oilburner"); put(TileEntityHeaterElectric.class, "tileentity_electric_heater"); put(TileEntityHeaterHeatex.class, "tileentity_heater_heatex"); diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityLantern.java b/src/main/java/com/hbm/tileentity/deco/TileEntityLantern.java index a93e4a303..65be4a600 100644 --- a/src/main/java/com/hbm/tileentity/deco/TileEntityLantern.java +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityLantern.java @@ -1,12 +1,31 @@ package com.hbm.tileentity.deco; +import java.util.List; + +import com.hbm.entity.mob.EntityGlyphid; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; public class TileEntityLantern extends TileEntity { + @Override + public void updateEntity() { + + if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 20 == 0) { + + List glyphids = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 5.5, zCoord + 0.5, xCoord + 0.5, yCoord + 5.5, zCoord + 0.5).expand(7.5, 7.5, 7.5)); + + for(EntityGlyphid glyphid : glyphids) { + glyphid.addPotionEffect(new PotionEffect(Potion.blindness.id, 100, 0)); + } + } + } + AxisAlignedBB bb = null; @Override diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java b/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java index 5a732670c..ca5731bb2 100644 --- a/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java @@ -48,9 +48,8 @@ public class TileEntityLanternBehemoth extends TileEntity implements INBTPacketR new ItemStack(ModItems.circuit_copper, 4 + worldObj.rand.nextInt(2)), new ItemStack(ModItems.circuit_red_copper, 2 + worldObj.rand.nextInt(3)), new ItemStack(ModItems.circuit_gold, 1 + worldObj.rand.nextInt(2)), - new ItemStack(Items.diamond, 6 + worldObj.rand.nextInt(6)), - new ItemStack(Blocks.red_flower)/*, - ItemBookLore.createBook("beacon", 12, 0x808080, 0xDFBE26)*/); + worldObj.rand.nextInt(3) == 0 ? new ItemStack(ModItems.gem_alexandrite) : new ItemStack(Items.diamond, 6 + worldObj.rand.nextInt(6)), + new ItemStack(Blocks.red_flower)); shuttle.payload = payload; worldObj.spawnEntityInWorld(shuttle); @@ -62,7 +61,7 @@ public class TileEntityLanternBehemoth extends TileEntity implements INBTPacketR NBTTagCompound data = new NBTTagCompound(); data.setBoolean("isBroken", isBroken); - INBTPacketReceiver.networkPack(this, data, 150); + INBTPacketReceiver.networkPack(this, data, 250); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java new file mode 100644 index 000000000..d5e27e4ac --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java @@ -0,0 +1,175 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.container.ContainerAshpit; +import com.hbm.inventory.gui.GUIAshpit; +import com.hbm.items.ItemEnums.EnumAshType; +import com.hbm.items.ModItems; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvider { + + private int playersUsing = 0; + public float doorAngle = 0; + public float prevDoorAngle = 0; + public boolean isFull; + + public int ashLevelWood; + public int ashLevelCoal; + public int ashLevelMisc; + + public TileEntityAshpit() { + super(5); + } + + @Override + public void openInventory() { + if(!worldObj.isRemote) this.playersUsing++; + } + + @Override + public void closeInventory() { + if(!worldObj.isRemote) this.playersUsing--; + } + + @Override + public String getName() { + return "container.ashpit"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + int threshold = 2000; + + if(processAsh(ashLevelWood, EnumAshType.WOOD, threshold)) ashLevelWood -= threshold; + if(processAsh(ashLevelCoal, EnumAshType.COAL, threshold)) ashLevelCoal -= threshold; + if(processAsh(ashLevelMisc, EnumAshType.MISC, threshold)) ashLevelMisc -= threshold; + + isFull = false; + + for(int i = 0; i < 5; i++) { + if(slots[i] != null) isFull = true; + } + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("playersUsing", this.playersUsing); + data.setBoolean("isFull", this.isFull); + this.networkPack(data, 50); + + } else { + this.prevDoorAngle = this.doorAngle; + float swingSpeed = (doorAngle / 10F) + 3; + + if(this.playersUsing > 0) { + this.doorAngle += swingSpeed; + } else { + this.doorAngle -= swingSpeed; + } + + this.doorAngle = MathHelper.clamp_float(this.doorAngle, 0F, 135F); + } + } + + protected boolean processAsh(int level, EnumAshType type, int threshold) { + + if(level >= threshold) { + for(int i = 0; i < 5; i++) { + if(slots[i] == null) { + slots[i] = DictFrame.fromOne(ModItems.powder_ash, type); + ashLevelWood -= threshold; + return true; + } else if(slots[i].stackSize < slots[i].getMaxStackSize() && slots[i].getItem() == ModItems.powder_ash && slots[i].getItemDamage() == type.ordinal()) { + slots[i].stackSize++; + return true; + } + } + } + + return false; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.playersUsing = nbt.getInteger("playersUsing"); + this.isFull = nbt.getBoolean("isFull"); + } + + @Override + public int[] getAccessibleSlotsFromSide(int meta) { + return new int[] { 0, 1, 2, 3, 4 }; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return true; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.ashLevelWood = nbt.getInteger("ashLevelWood"); + this.ashLevelCoal = nbt.getInteger("ashLevelCoal"); + this.ashLevelMisc = nbt.getInteger("ashLevelMisc"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setInteger("ashLevelWood", ashLevelWood); + nbt.setInteger("ashLevelCoal", ashLevelCoal); + nbt.setInteger("ashLevelMisc", ashLevelMisc); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 1, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerAshpit(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIAshpit(player.inventory, this); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java index e34d8eb8e..be4b8c82b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java @@ -1,13 +1,17 @@ package com.hbm.tileentity.machine; +import java.util.List; + import com.hbm.blocks.BlockDummyable; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.module.ModuleBurnTime; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachinePolluting; +import com.hbm.util.ItemStackUtil; import api.hbm.fluid.IFluidStandardSender; import api.hbm.tile.IHeatSource; @@ -15,6 +19,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraftforge.common.util.ForgeDirection; @@ -68,9 +73,21 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i for(int i = 0; i < 2; i++) { if(slots[i] != null) { - int fuel = (int) (getModule().getBurnTime(slots[i]) * getTimeMult()); + int baseTime = getModule().getBurnTime(slots[i]); - if(fuel > 0) { + if(baseTime > 0) { + int fuel = (int) (baseTime * getTimeMult()); + + TileEntity below = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); + + if(below instanceof TileEntityAshpit) { + TileEntityAshpit ashpit = (TileEntityAshpit) below; + EnumAshType type = this.getAshFromFuel(slots[i]); + if(type == EnumAshType.WOOD) ashpit.ashLevelWood += baseTime; + if(type == EnumAshType.COAL) ashpit.ashLevelCoal += baseTime; + if(type == EnumAshType.MISC) ashpit.ashLevelMisc += baseTime; + } + this.maxBurnTime = this.burnTime = fuel; this.burnHeat = getModule().getBurnHeat(getBaseHeat(), slots[i]); slots[i].stackSize--; @@ -133,6 +150,22 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i } } } + + public EnumAshType getAshFromFuel(ItemStack stack) { + + List names = ItemStackUtil.getOreDictNames(stack); + + for(String name : names) { + if(name.contains("Coke")) return EnumAshType.COAL; + if(name.contains("Coal")) return EnumAshType.COAL; + if(name.contains("Lignite")) return EnumAshType.COAL; + if(name.startsWith("log")) return EnumAshType.WOOD; + if(name.contains("Wood")) return EnumAshType.WOOD; + if(name.contains("Sapling")) return EnumAshType.WOOD; + } + + return EnumAshType.MISC; + } public abstract ModuleBurnTime getModule(); public abstract int getBaseHeat(); diff --git a/src/main/java/com/hbm/util/LootGenerator.java b/src/main/java/com/hbm/util/LootGenerator.java index fd95b1c4c..69b0af7f5 100644 --- a/src/main/java/com/hbm/util/LootGenerator.java +++ b/src/main/java/com/hbm/util/LootGenerator.java @@ -5,6 +5,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBookLore; import com.hbm.items.ItemAmmoEnums.AmmoFatman; import net.minecraft.item.Item; @@ -21,6 +22,15 @@ public class LootGenerator { loot.addItem(stack, x + rand.nextGaussian() * 0.02, y, z + rand.nextGaussian() * 0.02); } + public static void lootBooklet(World world, int x, int y, int z) { + + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); + + if(loot != null && loot.items.isEmpty()) { + loot.addItem(ItemBookLore.createBook("beacon", 12, 0x404040, 0xD637B3), 0, 0, 0);; + } + } + public static void lootCapNuke(World world, int x, int y, int z) { TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); diff --git a/src/main/java/com/hbm/world/feature/Meteorite.java b/src/main/java/com/hbm/world/feature/Meteorite.java index c383eefa0..b561d4451 100644 --- a/src/main/java/com/hbm/world/feature/Meteorite.java +++ b/src/main/java/com/hbm/world/feature/Meteorite.java @@ -8,7 +8,6 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.config.WorldConfig; import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.interfaces.Spaghetti; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; @@ -121,11 +120,6 @@ public class Meteorite { generateSphere5x5(world, rand, x, y, z, list10); setBlock(world, x, y, z, ModBlocks.taint, 9, 2); return; - case 11: - // Atomic meteorite - - ExplosionNukeSmall.explode(world, x + 0.5, y + 0.5, z + 0.5, safe ? ExplosionNukeSmall.PARAMS_SAFE : ExplosionNukeSmall.PARAMS_MEDIUM); - return; case 12: // Star Blaster world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 10F, !safe); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index d52e13b21..c764f300e 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3943,6 +3943,8 @@ tile.lamp_tritium_blue_off.name=Blaue Tritiumlampe tile.lamp_tritium_blue_on.name=Blaue Tritiumlampe tile.lamp_tritium_green_off.name=Grüne Tritiumlampe tile.lamp_tritium_green_on.name=Grüne Tritiumlampe +tile.lantern.name=Laterne +tile.lantern_behemoth.name=Alte Laterne tile.launch_pad.name=Raketenabschussrampe tile.launch_table.name=Große Startrampe tile.leaves_layer.name=Totes Laub @@ -3951,6 +3953,8 @@ tile.machine_amgen.name=Umgebungsstrahlungs-Generator tile.machine_arc_furnace_off.name=Lichtbogenofen tile.machine_arc_furnace_on.name=Lichtbogenofen tile.machine_armor_table.name=Rüstungsmodifikationstisch +tile.machine_ashpit.name=Ashekasten +tile.machine_ashpit.desc=Sammelt Asche von Feuerbüchsen und Heizöfen tile.machine_assembler.name=Fertigungsmaschine tile.machine_assemfac.name=Fertigungsfabrik tile.machine_autocrafter.name=Automatische Werkbank diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index a7db733db..6e2e10e35 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1740,6 +1740,7 @@ item.ams_focus_limiter.desc=Maximum performance for restriction field:$Standard item.ams_lens.name=Stabilizer Lens item.ams_muzzle.name=Ray-Emission Muzzle item.ams_muzzle.desc=...it emits an energy-beam thingy. +item.analysis_tool.name=Analysis Tool item.analyzer.name=Analyzer item.anchor_remote.name=Recall Device item.antiknock.name=Tetraethyllead Antiknock Agent @@ -3481,6 +3482,9 @@ item.powder_advanced_alloy.name=Advanced Alloy Powder item.powder_aluminium.name=Aluminium Powder item.powder_asbestos.name=Asbestos Powder item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r +item.powder_ash.coal.name=Coal Ash +item.powder_ash.misc.name=Ash +item.powder_ash.wood.name=Wood Ash item.powder_astatine.name=Astatine Powder item.powder_at209.name=Astatine-209 Powder item.powder_au198.name=Gold-198 Powder @@ -4871,6 +4875,8 @@ tile.lamp_tritium_blue_off.name=Blue Tritium Lamp tile.lamp_tritium_blue_on.name=Blue Tritium Lamp tile.lamp_tritium_green_off.name=Green Tritium Lamp tile.lamp_tritium_green_on.name=Green Tritium Lamp +tile.lantern.name=Lantern +tile.lantern_behemoth.name=Old Lantern tile.launch_pad.name=Missile Launch Pad tile.launch_table.name=Large Launch Pad tile.leaves_layer.name=Fallen Leaves @@ -4879,6 +4885,8 @@ tile.machine_amgen.name=Ambience Radiation Generator tile.machine_arc_furnace_off.name=Arc Furnace tile.machine_arc_furnace_on.name=Arc Furnace tile.machine_armor_table.name=Armor Modification Table +tile.machine_ashpit.name=Ashpit +tile.machine_ashpit.desc=Collects ashes from fireboxes and heating ovens tile.machine_assembler.name=Assembly Machine tile.machine_assemfac.name=Assembly Factory tile.machine_autocrafter.name=Automatic Crafting Table diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_ashpit.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_ashpit.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a29d6bcc1cdcef53f0e4b8fee550df51265ada GIT binary patch literal 1145 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIGwrfv1aO zNX4ADcMs;?Dv&t#@O4*&P}vPWmw0Pv@Wud=KxD&gXkUSDXV<7udw}> zwtoLPM!VKg;(to?hpnqW^75vAGA)_^m+8mV8|*1J-j*r%KUrN-Q?o{>(etO-BOP^n z@m#anTHzg&i!Nt>g3z%&Og|2uR z1BV)efDePh3kB)hagx!9i{^K`mhGnU5D5LFsk5p7=KKLh9vJZc`LmQK{$8S9&CCpy{QM^dJm>14EquL8OHktI z_M%V5#>XFTJSF;CV^@`U!}I6Q&sUp%5dZeOHuPuWMTxqb><^x_>xeZG6R3A%ejRUb zZ(sfYK-Sh(haV>NS<25VuCK5ED)aA662q!E{sX4lZs*GKu@|5D`9WrXQ0{ROgHrDu zbHv)Pt#|X*|5JW8`QDuA?f2iSR=xVY@6}i1Gwe4x zQqDbjeuLvmUpi@tW3%9iIVaCAl$CBgGxLv(bmOg!V1bQ-D`d};md4VQCs<0`^78WeznmV#S1?%geb0aJL32IR kzqym;VTpyhbc6nT>q+w&r!yA3S_(4R)78&qol`;+00xVKNdN!< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/powder_ash.coal.png b/src/main/resources/assets/hbm/textures/items/powder_ash.coal.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1f593347043883bd98d06c31fb23a61ebd86c5 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfjZfD#+{j zo3q($vn99X9zK)ulWqO$E(ztR?0`@Pi>$Q|FFxRz>~ikrY4OQV`P4WWIt-Z@zSXvO z+);~kyK% zh3`Ad;?DbL*DU{77W0^=iu?J?dFA!n56w6EyU_oB`4#D>Mhz1}*930{dV|5!)z4*} HQ$iB}kDz9! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/powder_ash.misc.png b/src/main/resources/assets/hbm/textures/items/powder_ash.misc.png new file mode 100644 index 0000000000000000000000000000000000000000..1d74394b871e592477a75a6ad1d654495e769b65 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfeARcJar(ah_L`s1#=Q($BvZaL^m&w%lYq5f%7cE@J9~Fm$6w8nKVe|Z z@Ivt7KCy!D``%l7I9&>QqGT{x_2Av(-(6F7D|<6BOkiPfVezU0425;e(CUrne_%cmtiw;OXk;vd$@?2>@KuSwR2* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/powder_ash.wood.png b/src/main/resources/assets/hbm/textures/items/powder_ash.wood.png new file mode 100644 index 0000000000000000000000000000000000000000..33440e5eafd3b3ae34af85d5e76548933df93c84 GIT binary patch literal 277 zcmV+w0qXvVP)Wub)OFU?r<00000NkvXXu0mjfyo+{% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/ashpit.png b/src/main/resources/assets/hbm/textures/models/machines/ashpit.png new file mode 100644 index 0000000000000000000000000000000000000000..96dcf87b24b3afbc61dab8cebaf3a751ea2152fe GIT binary patch literal 3976 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 literal 0 HcmV?d00001